diff --git a/src/main/java/com/clevercloud/biscuit/datalog/AuthorizedWorld.java b/src/main/java/com/clevercloud/biscuit/datalog/AuthorizedWorld.java deleted file mode 100644 index 0058fb0a..00000000 --- a/src/main/java/com/clevercloud/biscuit/datalog/AuthorizedWorld.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.clevercloud.biscuit.datalog; - -import java.util.Set; - -public class AuthorizedWorld extends World { - - public AuthorizedWorld(FactSet facts) { - super(facts); - } - - /*public final Set queryAll(final Rule rule, SymbolTable symbols) { - return this.query_rule(rule, symbols); - }*/ -} diff --git a/src/main/java/com/clevercloud/biscuit/datalog/Combinator.java b/src/main/java/com/clevercloud/biscuit/datalog/Combinator.java index 3f11261a..309d6241 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/Combinator.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/Combinator.java @@ -22,7 +22,7 @@ public final class Combinator implements Serializable, Iterator> next() { - if(this.nextElement == null || !this.nextElement.isDefined()) { + if (this.nextElement == null || !this.nextElement.isDefined()) { this.nextElement = getNext(); } - if(this.nextElement == null || !this.nextElement.isDefined()) { + if (this.nextElement == null || !this.nextElement.isDefined()) { throw new NoSuchElementException(); } else { Tuple2> t = this.nextElement.get(); @@ -46,7 +46,7 @@ public Tuple2> next() { public Option>> getNext() { if (this.predicates.isEmpty()) { final Option> v_opt = this.variables.complete(); - if(v_opt.isEmpty()) { + if (v_opt.isEmpty()) { return Option.none(); } else { Map variables = v_opt.get(); @@ -55,14 +55,14 @@ public Option>> getNext() { // successful calls, we create a set of variables that cannot // possibly be completed, so the next call will fail Set set = new HashSet(); - set.add((long)0); + set.add((long) 0); this.variables = new MatchedVariables(set); return Option.some(new Tuple2(new Origin(), variables)); } } - while(true) { + while (true) { if (this.currentIt == null) { Predicate predicate = this.predicates.get(0); diff --git a/src/main/java/com/clevercloud/biscuit/datalog/FactSet.java b/src/main/java/com/clevercloud/biscuit/datalog/FactSet.java index 07e41e40..730bf828 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/FactSet.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/FactSet.java @@ -3,7 +3,6 @@ import io.vavr.Tuple2; import java.util.*; -import java.util.stream.Collectors; import java.util.stream.Stream; public class FactSet { @@ -55,7 +54,7 @@ public void merge(FactSet other) { } } } - public Stream iterator(TrustedOrigins blockIds) { + public Stream stream(TrustedOrigins blockIds) { return facts.entrySet() .stream() .filter(entry -> { @@ -67,7 +66,7 @@ public Stream iterator(TrustedOrigins blockIds) { .map(fact -> new Tuple2(entry.getKey(), fact))); } - public Stream iterator() { + public Stream stream() { return facts.entrySet() .stream() .flatMap(entry -> entry.getValue() diff --git a/src/main/java/com/clevercloud/biscuit/datalog/Rule.java b/src/main/java/com/clevercloud/biscuit/datalog/Rule.java index ba367c66..8c4834be 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/Rule.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/Rule.java @@ -50,56 +50,50 @@ public Stream>> apply( .spliteratorUnknownSize(combinator, Spliterator.ORDERED); Stream>> stream = StreamSupport.stream(splitItr, false); - //somehow we have inference errors when writing this as a lambda - return stream.map(t -> { - Origin origin = t._1; - Map generatedVariables = t._2; - TemporarySymbolTable temporarySymbols = new TemporarySymbolTable(symbols); - for (Expression e : this.expressions) { - Option res = e.evaluate(generatedVariables, temporarySymbols); - if (res.isDefined()) { - Term term = res.get(); - if (term instanceof Term.Bool) { - Term.Bool b = (Term.Bool) term; - if (!b.value()) { - return Either.right(new Tuple3(origin, generatedVariables, false)); - } - // continue evaluating if true - } else { - return Either.left(new InvalidType()); - } - } - } - return Either.right(new Tuple3(origin, generatedVariables, true)); - /* - .filter((java.util.function.Predicate>) new java.util.function.Predicate, Boolean>>>() { - //somehow we have inference errors when writing this as a lambda - @Override - public boolean test(Either, Boolean>> res) { - return res.isRight() & res.get()._3.booleanValue(); - } - })*/ - }).filter((java.util.function.Predicate>) - res -> res.isRight() & ((Tuple3, Boolean>)res.get())._3.booleanValue()).map(res -> { - Tuple3, Boolean> t = (Tuple3, Boolean>) res.get(); - Origin origin = t._1; - Map generatedVariables = t._2; - - Predicate p = this.head.clone(); - for (int index = 0; index < p.terms().size(); index++) { - if (p.terms().get(index) instanceof Term.Variable) { - Term.Variable var = (Term.Variable) p.terms().get(index); - if(!generatedVariables.containsKey(var.value())) { - //throw new Error("variables that appear in the head should appear in the body as well"); - return Either.left(new Error.InternalError()); - } - p.terms().set(index, generatedVariables.get(var.value())); - } - } + //somehow we have inference errors when writing this as a lambda + return stream.map(t -> { + Origin origin = t._1; + Map generatedVariables = t._2; + TemporarySymbolTable temporarySymbols = new TemporarySymbolTable(symbols); + for (Expression e : this.expressions) { + Option res = e.evaluate(generatedVariables, temporarySymbols); + if (res.isDefined()) { + Term term = res.get(); + if (term instanceof Term.Bool) { + Term.Bool b = (Term.Bool) term; + if (!b.value()) { + return Either.right(new Tuple3(origin, generatedVariables, false)); + } + // continue evaluating if true + } else { + return Either.left(new InvalidType()); + } + } + } + return Either.right(new Tuple3(origin, generatedVariables, true)); + }) + // sometimes we need to make the compiler happy + .filter((java.util.function.Predicate>) + res -> res.isRight() & ((Tuple3, Boolean>) res.get())._3.booleanValue()).map(res -> { + Tuple3, Boolean> t = (Tuple3, Boolean>) res.get(); + Origin origin = t._1; + Map generatedVariables = t._2; + + Predicate p = this.head.clone(); + for (int index = 0; index < p.terms().size(); index++) { + if (p.terms().get(index) instanceof Term.Variable) { + Term.Variable var = (Term.Variable) p.terms().get(index); + if (!generatedVariables.containsKey(var.value())) { + //throw new Error("variables that appear in the head should appear in the body as well"); + return Either.left(new Error.InternalError()); + } + p.terms().set(index, generatedVariables.get(var.value())); + } + } - origin.add(ruleOrigin); - return Either.right(new Tuple2(origin, new Fact(p))); - }); + origin.add(ruleOrigin); + return Either.right(new Tuple2(origin, new Fact(p))); + }); } private MatchedVariables variablesSet() { @@ -119,7 +113,7 @@ public boolean find_match(final FactSet facts, Long origin, TrustedOrigins scope return variables.check_expressions(this.expressions, symbols).isDefined(); } - Supplier>> factsSupplier = () -> facts.iterator(scope); + Supplier>> factsSupplier = () -> facts.stream(scope); Stream>> stream = this.apply(factsSupplier, origin, symbols); Iterator>> it = stream.iterator(); @@ -144,7 +138,7 @@ public boolean check_match_all(final FactSet facts, TrustedOrigins scope, Symbol return variables.check_expressions(this.expressions, symbols).isDefined(); } - Supplier>> factsSupplier = () -> facts.iterator(scope); + Supplier>> factsSupplier = () -> facts.stream(scope); Combinator combinator = new Combinator(variables, this.body, factsSupplier, symbols); boolean found = false; diff --git a/src/main/java/com/clevercloud/biscuit/datalog/RuleSet.java b/src/main/java/com/clevercloud/biscuit/datalog/RuleSet.java index e4bd56f1..5c850bee 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/RuleSet.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/RuleSet.java @@ -13,7 +13,7 @@ public RuleSet() { } public void add(Long origin, TrustedOrigins scope, Rule rule) { - if(!rules.containsKey(scope)) { + if (!rules.containsKey(scope)) { rules.put(scope, Arrays.asList(new Tuple2(origin, rule))); } else { rules.get(scope).add(new Tuple2(origin, rule)); @@ -23,7 +23,7 @@ public void add(Long origin, TrustedOrigins scope, Rule rule) { public RuleSet clone() { RuleSet newRules = new RuleSet(); - for(Map.Entry>> entry: this.rules.entrySet()) { + for (Map.Entry>> entry : this.rules.entrySet()) { List> l = new ArrayList<>(); l.addAll(entry.getValue()); newRules.rules.put(entry.getKey(), l); @@ -32,13 +32,14 @@ public RuleSet clone() { return newRules; } - public Stream iterator() { + public Stream stream() { return rules.entrySet() .stream() .flatMap(entry -> entry.getValue() .stream() .map(t -> t._2)); } + public void clear() { rules.clear(); } diff --git a/src/main/java/com/clevercloud/biscuit/datalog/SchemaVersion.java b/src/main/java/com/clevercloud/biscuit/datalog/SchemaVersion.java index 6c185231..ed7fed73 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/SchemaVersion.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/SchemaVersion.java @@ -18,21 +18,20 @@ public class SchemaVersion { private boolean containsV4; public SchemaVersion(List facts, List rules, List checks, List scopes) { - // TODO containsScopes = !scopes.isEmpty(); - if(!containsScopes) { - for(Rule r: rules) { + if (!containsScopes) { + for (Rule r : rules) { if (!r.scopes().isEmpty()) { containsScopes = true; break; } } } - if(!containsScopes) { - for(Check check: checks) { - for(Rule query: check.queries()) { - if(!query.scopes().isEmpty()) { + if (!containsScopes) { + for (Check check : checks) { + for (Rule query : check.queries()) { + if (!query.scopes().isEmpty()) { containsScopes = true; break; } @@ -41,7 +40,7 @@ public SchemaVersion(List facts, List rules, List checks, Lis } containsCheckAll = false; - for(Check check: checks) { + for (Check check : checks) { if (check.kind() == All) { containsCheckAll = true; break; @@ -49,8 +48,8 @@ public SchemaVersion(List facts, List rules, List checks, Lis } containsV4 = false; - for(Check check: checks) { - for(Rule query: check.queries()) { + for (Check check : checks) { + for (Rule query : check.queries()) { if (containsV4Ops(query.expressions())) { containsV4 = true; break; @@ -61,7 +60,7 @@ public SchemaVersion(List facts, List rules, List checks, Lis public int version() { if (containsScopes || containsV4 || containsCheckAll) { - return 4; + return 4; } else { return MIN_SCHEMA_VERSION; } @@ -72,10 +71,10 @@ public Either checkCompatibility(int version) { if (containsScopes) { return Left(new Error.FormatError.DeserializationError("v3 blocks must not have scopes")); } - if(containsV4) { + if (containsV4) { return Left(new Error.FormatError.DeserializationError("v3 blocks must not have v4 operators (bitwise operators or !=")); } - if(containsCheckAll) { + if (containsCheckAll) { return Left(new Error.FormatError.DeserializationError("v3 blocks must not use check all")); } } @@ -84,8 +83,8 @@ public Either checkCompatibility(int version) { } public static boolean containsV4Ops(List expressions) { - for(Expression e: expressions) { - for (Op op: e.getOps()) { + for (Expression e : expressions) { + for (Op op : e.getOps()) { if (op instanceof Op.Binary) { Op.Binary b = (Op.Binary) op; switch (b.getOp()) { diff --git a/src/main/java/com/clevercloud/biscuit/datalog/Scope.java b/src/main/java/com/clevercloud/biscuit/datalog/Scope.java index 9ca131cc..6a9e045c 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/Scope.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/Scope.java @@ -1,11 +1,9 @@ package com.clevercloud.biscuit.datalog; import biscuit.format.schema.Schema; -import com.clevercloud.biscuit.datalog.expressions.Expression; import com.clevercloud.biscuit.error.Error; import io.vavr.control.Either; -import java.util.ArrayList; import static io.vavr.API.Left; import static io.vavr.API.Right; @@ -24,6 +22,7 @@ private Scope(Kind kind, long publicKey) { this.kind = kind; this.publicKey = publicKey; } + public static Scope authority() { return new Scope(Kind.Authority, 0); } @@ -47,7 +46,7 @@ public long publicKey() { public Schema.Scope serialize() { Schema.Scope.Builder b = Schema.Scope.newBuilder(); - switch(this.kind) { + switch (this.kind) { case Authority: b.setScopeType(Schema.Scope.ScopeType.Authority); break; @@ -66,8 +65,8 @@ static public Either deserialize(Schema.Scope scope) { long publicKey = scope.getPublicKey(); return Right(Scope.publicKey(publicKey)); } - if(scope.hasScopeType()) { - switch(scope.getScopeType()) { + if (scope.hasScopeType()) { + switch (scope.getScopeType()) { case Authority: return Right(Scope.authority()); case Previous: diff --git a/src/main/java/com/clevercloud/biscuit/datalog/SymbolTable.java b/src/main/java/com/clevercloud/biscuit/datalog/SymbolTable.java index 480c8d5d..69b38976 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/SymbolTable.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/SymbolTable.java @@ -229,8 +229,8 @@ public String print_check(final Check c) { } public String print_world(final World w) { - final List facts = w.facts().iterator().map((f) -> this.print_fact(f)).collect(Collectors.toList()); - final List rules = w.rules().iterator().map((r) -> this.print_rule(r)).collect(Collectors.toList()); + final List facts = w.facts().stream().map((f) -> this.print_fact(f)).collect(Collectors.toList()); + final List rules = w.rules().stream().map((r) -> this.print_rule(r)).collect(Collectors.toList()); StringBuilder b = new StringBuilder(); b.append("World {\n\tfacts: [\n\t\t"); diff --git a/src/main/java/com/clevercloud/biscuit/datalog/TemporarySymbolTable.java b/src/main/java/com/clevercloud/biscuit/datalog/TemporarySymbolTable.java index d9055085..deaff85c 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/TemporarySymbolTable.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/TemporarySymbolTable.java @@ -19,8 +19,8 @@ public TemporarySymbolTable(SymbolTable base) { } public Option get_s(int i) { - if(i >= this.offset) { - if(i - this.offset < this.symbols.size()) { + if (i >= this.offset) { + if (i - this.offset < this.symbols.size()) { return Option.some(this.symbols.get(i - this.offset)); } else { return Option.none(); @@ -32,12 +32,12 @@ public Option get_s(int i) { public long insert(final String symbol) { Option opt = this.base.get(symbol); - if(opt.isDefined()) { + if (opt.isDefined()) { return opt.get().longValue(); } int index = this.symbols.indexOf(symbol); - if(index != -1) { + if (index != -1) { return (long) (this.offset + index); } this.symbols.add(symbol); diff --git a/src/main/java/com/clevercloud/biscuit/datalog/TrustedOrigins.java b/src/main/java/com/clevercloud/biscuit/datalog/TrustedOrigins.java index 6597a24e..2af85f58 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/TrustedOrigins.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/TrustedOrigins.java @@ -7,9 +7,9 @@ public class TrustedOrigins { private Origin inner; - public TrustedOrigins(int ... origins) { + public TrustedOrigins(int... origins) { Origin origin = new Origin(); - for(int i: origins) { + for (int i : origins) { origin.add(i); } inner = origin; @@ -20,7 +20,7 @@ private TrustedOrigins() { } private TrustedOrigins(Origin inner) { - if(inner == null) { + if (inner == null) { throw new RuntimeException(); } this.inner = inner; @@ -29,6 +29,7 @@ private TrustedOrigins(Origin inner) { public TrustedOrigins clone() { return new TrustedOrigins(this.inner.clone()); } + public static TrustedOrigins defaultOrigins() { TrustedOrigins origins = new TrustedOrigins(); origins.inner.add(0); @@ -51,21 +52,21 @@ public static TrustedOrigins fromScopes(List ruleScopes, origins.inner.add(currentBlock); origins.inner.add(Long.MAX_VALUE); - for(Scope scope: ruleScopes) { + for (Scope scope : ruleScopes) { switch (scope.kind()) { case Authority: origins.inner.add(0); break; case Previous: - if(currentBlock != Long.MAX_VALUE) { - for(long i = 0; i < currentBlock+1; i++) { + if (currentBlock != Long.MAX_VALUE) { + for (long i = 0; i < currentBlock + 1; i++) { origins.inner.add(i); } } break; case PublicKey: List blockIds = publicKeyToBlockId.get(scope.publicKey()); - if(blockIds != null) { + if (blockIds != null) { origins.inner.inner.addAll(blockIds); } } diff --git a/src/main/java/com/clevercloud/biscuit/datalog/World.java b/src/main/java/com/clevercloud/biscuit/datalog/World.java index 357b6d85..a8be5a80 100644 --- a/src/main/java/com/clevercloud/biscuit/datalog/World.java +++ b/src/main/java/com/clevercloud/biscuit/datalog/World.java @@ -1,6 +1,5 @@ package com.clevercloud.biscuit.datalog; -import com.clevercloud.biscuit.datalog.expressions.Expression; import com.clevercloud.biscuit.error.Error; import io.vavr.Tuple2; import io.vavr.control.Either; @@ -9,7 +8,6 @@ import java.time.Instant; import java.util.*; import java.util.function.Supplier; -import java.util.stream.Collectors; import java.util.stream.Stream; public class World implements Serializable { @@ -45,7 +43,7 @@ public void run(RunLimits limits, final SymbolTable symbols) throws Error { for(Map.Entry>> entry: this.rules.rules.entrySet()) { for(Tuple2 t: entry.getValue()) { - Supplier>> factsSupplier = () -> this.facts.iterator(entry.getKey()); + Supplier>> factsSupplier = () -> this.facts.stream(entry.getKey()); Stream>> stream = t._2.apply(factsSupplier, t._1, symbols); for (Iterator>> it = stream.iterator(); it.hasNext(); ) { @@ -89,33 +87,10 @@ public final FactSet facts() { public RuleSet rules() { return this.rules; } - /*public final Set query(final Predicate pred) { - return this.facts.stream().filter((f) -> { - if (f.predicate().name() != pred.name()) { - return false; - } - final int min_size = Math.min(f.predicate().terms().size(), pred.terms().size()); - for (int i = 0; i < min_size; ++i) { - final Term fid = f.predicate().terms().get(i); - final Term pid = pred.terms().get(i); - if ((fid instanceof Term.Integer || fid instanceof Term.Str || fid instanceof Term.Date) - && fid.getClass() == pid.getClass()) { - if (!fid.equals(pid)) { - return false; - } - // FIXME: is it still necessary? - //} else if (!(fid instanceof Term.Symbol && pid instanceof Term.Variable)) { - // return false; - } - } - return true; - }).collect(Collectors.toSet()); - }*/ - public final FactSet query_rule(final Rule rule, Long origin, TrustedOrigins scope, SymbolTable symbols) throws Error { final FactSet newFacts = new FactSet(); - Supplier>> factsSupplier = () -> this.facts.iterator(scope); + Supplier>> factsSupplier = () -> this.facts.stream(scope); Stream>> stream = rule.apply(factsSupplier, origin, symbols); for (Iterator>> it = stream.iterator(); it.hasNext(); ) { @@ -171,14 +146,14 @@ public String print(SymbolTable symbol_table) { StringBuilder s = new StringBuilder(); s.append("World {\n\t\tfacts: ["); - for (Iterator it = this.facts.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = this.facts.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); s.append("\n\t\t\t"); s.append(symbol_table.print_fact(f)); } s.append("\n\t\t]\n\t\trules: ["); - for (Iterator it = this.rules.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = this.rules.stream().iterator(); it.hasNext(); ) { Rule r = it.next(); s.append("\n\t\t\t"); s.append(symbol_table.print_rule(r)); diff --git a/src/main/java/com/clevercloud/biscuit/token/Authorizer.java b/src/main/java/com/clevercloud/biscuit/token/Authorizer.java index 8f0744fb..5c79d1ab 100644 --- a/src/main/java/com/clevercloud/biscuit/token/Authorizer.java +++ b/src/main/java/com/clevercloud/biscuit/token/Authorizer.java @@ -305,7 +305,7 @@ public Set query(Rule query, RunLimits limits) throws Error { ruleTrustedorigins, symbols); Set s = new HashSet<>(); - for (Iterator it = facts.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = facts.stream().iterator(); it.hasNext(); ) { com.clevercloud.biscuit.datalog.Fact f = (com.clevercloud.biscuit.datalog.Fact) it.next(); s.add(Fact.convert_from(f, symbols)); } @@ -565,8 +565,8 @@ public Long authorize(RunLimits limits) throws Error { public String print_world() { //FIXME - final List facts = this.world.facts().iterator().map((f) -> this.symbols.print_fact(f)).collect(Collectors.toList()); - final List rules = this.world.rules().iterator().map((r) -> this.symbols.print_rule(r)).collect(Collectors.toList()); + final List facts = this.world.facts().stream().map((f) -> this.symbols.print_fact(f)).collect(Collectors.toList()); + final List rules = this.world.rules().stream().map((r) -> this.symbols.print_rule(r)).collect(Collectors.toList()); List checks = new ArrayList<>(); diff --git a/src/main/java/com/clevercloud/biscuit/token/builder/Scope.java b/src/main/java/com/clevercloud/biscuit/token/builder/Scope.java index bec24afc..d8167eae 100644 --- a/src/main/java/com/clevercloud/biscuit/token/builder/Scope.java +++ b/src/main/java/com/clevercloud/biscuit/token/builder/Scope.java @@ -36,11 +36,13 @@ private Scope(Kind kind, PublicKey publicKey) { this.publicKey = publicKey; this.parameter = new String(); } + private Scope(Kind kind, String parameter) { this.kind = kind; this.publicKey = null; this.parameter = parameter; } + public static Scope authority() { return new Scope(Kind.Authority); } @@ -66,7 +68,7 @@ public com.clevercloud.biscuit.datalog.Scope convert(SymbolTable symbols) { case Parameter: //FIXME return null; - //throw new Exception("Remaining parameter: "+this.parameter); + //throw new Exception("Remaining parameter: "+this.parameter); case PublicKey: return com.clevercloud.biscuit.datalog.Scope.publicKey(symbols.insert(this.publicKey)); } @@ -75,7 +77,7 @@ public com.clevercloud.biscuit.datalog.Scope convert(SymbolTable symbols) { } public static Scope convert_from(com.clevercloud.biscuit.datalog.Scope scope, SymbolTable symbols) { - switch(scope.kind()) { + switch (scope.kind()) { case Authority: return new Scope(Kind.Authority); case Previous: @@ -119,7 +121,7 @@ public String toString() { case Previous: return "previous"; case Parameter: - return "{"+this.parameter+"}"; + return "{" + this.parameter + "}"; case PublicKey: return this.publicKey.toString(); } diff --git a/src/test/java/com/clevercloud/biscuit/datalog/WorldTest.java b/src/test/java/com/clevercloud/biscuit/datalog/WorldTest.java index ce566b2d..6c25f4a7 100644 --- a/src/test/java/com/clevercloud/biscuit/datalog/WorldTest.java +++ b/src/test/java/com/clevercloud/biscuit/datalog/WorldTest.java @@ -38,8 +38,8 @@ public void testFamily() throws Error { System.out.println("testing r1: " + syms.print_rule(r1)); FactSet query_rule_result = w.query_rule(r1, (long)0, new TrustedOrigins(0), syms); - System.out.println("grandparents query_rules: [" + String.join(", ", query_rule_result.iterator().map((f) -> syms.print_fact(f)).collect(Collectors.toList())) + "]"); - System.out.println("current facts: [" + String.join(", ", w.facts().iterator().map((f) -> syms.print_fact(f)).collect(Collectors.toList())) + "]"); + System.out.println("grandparents query_rules: [" + String.join(", ", query_rule_result.stream().map((f) -> syms.print_fact(f)).collect(Collectors.toList())) + "]"); + System.out.println("current facts: [" + String.join(", ", w.facts().stream().map((f) -> syms.print_fact(f)).collect(Collectors.toList())) + "]"); final Rule r2 = new Rule(new Predicate(grandparent, Arrays.asList(new Term.Variable(syms.insert("grandparent")), new Term.Variable(syms.insert("grandchild")))), Arrays.asList( @@ -58,7 +58,7 @@ public void testFamily() throws Error { Arrays.asList(new Term.Variable(syms.insert("parent")), new Term.Variable(syms.insert("child"))))), new ArrayList<>()); - for (Iterator it = w.query_rule(query1, (long) 0, new TrustedOrigins(0), syms).iterator().iterator(); it.hasNext(); ) { + for (Iterator it = w.query_rule(query1, (long) 0, new TrustedOrigins(0), syms).stream().iterator(); it.hasNext(); ) { Fact fact = it.next(); System.out.println("\t" + syms.print_fact(fact)); } @@ -67,7 +67,7 @@ public void testFamily() throws Error { new ArrayList<>()); System.out.println("parents of B: [" + String.join(", ", w.query_rule(query2, (long) 0, new TrustedOrigins(0), syms) - .iterator().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); + .stream().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); final Rule query3 = new Rule(new Predicate(grandparent, Arrays.asList(new Term.Variable(syms.insert("grandparent")), new Term.Variable(syms.insert("grandchild")))), Arrays.asList(new Predicate(grandparent, Arrays.asList(new Term.Variable(syms.insert("grandparent")), @@ -75,7 +75,7 @@ public void testFamily() throws Error { new ArrayList<>()); System.out.println("grandparents: [" + String.join(", ", w.query_rule(query3, (long) 0, new TrustedOrigins(0), syms) - .iterator().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); + .stream().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); w.add_fact(new Origin(0), new Fact(new Predicate(parent, Arrays.asList(c, e)))); w.run(syms); @@ -87,7 +87,7 @@ public void testFamily() throws Error { new ArrayList<>()); final FactSet res = w.query_rule(query4, (long) 0, new TrustedOrigins(0), syms); System.out.println("grandparents after inserting parent(C, E): [" + String.join(", ", - res.iterator().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); + res.stream().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); final FactSet expected = new FactSet(new Origin(0), new HashSet<>(Arrays.asList( new Fact(new Predicate(grandparent, Arrays.asList(a, c))), @@ -111,7 +111,7 @@ public void testFamily() throws Error { new ArrayList<>()); System.out.println("siblings: [" + String.join(", ", w.query_rule(query5, (long) 0, new TrustedOrigins(0), syms) - .iterator().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); + .stream().map((f) -> syms.print_fact(f)).collect(Collectors.toSet())) + "]"); } @Test @@ -151,7 +151,7 @@ public void testNumbers() throws Error { new Term.Variable(syms.insert("right")), new Term.Variable(syms.insert("id"))))), new ArrayList<>()), (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -174,7 +174,7 @@ public void testNumbers() throws Error { new Op.Binary(Op.BinaryOp.LessThan) )))) ), (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -218,7 +218,7 @@ public void testStr() throws Error { w.add_fact(new Origin(0), new Fact(new Predicate(route, Arrays.asList(new Term.Integer(4), app_1, syms.add("mx.example.com"))))); FactSet res = testSuffix(w, syms, suff, route, ".fr"); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -227,7 +227,7 @@ public void testStr() throws Error { assertEquals(expected, res); res = testSuffix(w, syms, suff, route, "example.com"); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -286,7 +286,7 @@ public void testDate() throws Error { System.out.println("testing r1: " + syms.print_rule(r1)); FactSet res = w.query_rule(r1, (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -315,7 +315,7 @@ public void testDate() throws Error { System.out.println("testing r2: " + syms.print_rule(r2)); res = w.query_rule(r2, (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -355,7 +355,7 @@ public void testSet() throws Error { ); System.out.println("testing r1: " + syms.print_rule(r1)); FactSet res = w.query_rule(r1, (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -381,7 +381,7 @@ public void testSet() throws Error { System.out.println("testing r2: " + syms.print_rule(r2)); res = w.query_rule(r2, (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -401,7 +401,7 @@ public void testSet() throws Error { ); System.out.println("testing r3: " + syms.print_rule(r3)); res = w.query_rule(r3, (long) 0, new TrustedOrigins(0), syms); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -439,7 +439,7 @@ public void testResource() throws Error { System.out.println("testing caveat 1(should return nothing): " + syms.print_rule(r1)); FactSet res = w.query_rule(r1, (long) 0, new TrustedOrigins(0), syms); System.out.println(res); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } @@ -460,7 +460,7 @@ public void testResource() throws Error { System.out.println("testing caveat 2: " + syms.print_rule(r2)); res = w.query_rule(r2, (long) 0, new TrustedOrigins(0), syms); System.out.println(res); - for (Iterator it = res.iterator().iterator(); it.hasNext(); ) { + for (Iterator it = res.stream().iterator(); it.hasNext(); ) { Fact f = it.next(); System.out.println("\t" + syms.print_fact(f)); } diff --git a/src/test/java/com/clevercloud/biscuit/token/BiscuitTest.java b/src/test/java/com/clevercloud/biscuit/token/BiscuitTest.java index 6848428f..fca634b5 100644 --- a/src/test/java/com/clevercloud/biscuit/token/BiscuitTest.java +++ b/src/test/java/com/clevercloud/biscuit/token/BiscuitTest.java @@ -3,8 +3,6 @@ import com.clevercloud.biscuit.crypto.KeyDelegate; import com.clevercloud.biscuit.crypto.KeyPair; import com.clevercloud.biscuit.crypto.PublicKey; -import com.clevercloud.biscuit.datalog.AuthorizedWorld; -import com.clevercloud.biscuit.datalog.Fact; import com.clevercloud.biscuit.datalog.RunLimits; import com.clevercloud.biscuit.datalog.SymbolTable; import com.clevercloud.biscuit.error.Error; @@ -12,7 +10,6 @@ import com.clevercloud.biscuit.error.LogicError; import com.clevercloud.biscuit.token.builder.Block; -import io.vavr.Tuple2; import io.vavr.control.Option; import io.vavr.control.Try; diff --git a/src/test/java/com/clevercloud/biscuit/token/ExampleTest.java b/src/test/java/com/clevercloud/biscuit/token/ExampleTest.java index 790d55a9..aea687e3 100644 --- a/src/test/java/com/clevercloud/biscuit/token/ExampleTest.java +++ b/src/test/java/com/clevercloud/biscuit/token/ExampleTest.java @@ -1,22 +1,12 @@ package com.clevercloud.biscuit.token; import com.clevercloud.biscuit.crypto.KeyPair; -import com.clevercloud.biscuit.datalog.AuthorizedWorld; import com.clevercloud.biscuit.error.Error; -import com.clevercloud.biscuit.error.LogicError; import com.clevercloud.biscuit.token.builder.Block; -import com.clevercloud.biscuit.token.builder.Fact; -import com.clevercloud.biscuit.token.builder.parser.Parser; -import io.vavr.Tuple2; -import io.vavr.control.Either; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; import java.security.SignatureException; -import java.util.Set; - -import static io.vavr.API.Left; /* example code for the documentation at https://www.biscuitsec.org * if these functions change, please send a PR to update them at https://github.com/biscuit-auth/website diff --git a/src/test/java/com/clevercloud/biscuit/token/SamplesJsonV2Test.java b/src/test/java/com/clevercloud/biscuit/token/SamplesJsonV2Test.java index 7e42990e..8e172db5 100644 --- a/src/test/java/com/clevercloud/biscuit/token/SamplesJsonV2Test.java +++ b/src/test/java/com/clevercloud/biscuit/token/SamplesJsonV2Test.java @@ -3,13 +3,11 @@ import biscuit.format.schema.Schema; import com.clevercloud.biscuit.crypto.KeyPair; import com.clevercloud.biscuit.crypto.PublicKey; -import com.clevercloud.biscuit.datalog.AuthorizedWorld; import com.clevercloud.biscuit.datalog.RunLimits; import com.clevercloud.biscuit.error.Error; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import io.vavr.Tuple2; import io.vavr.control.Either; import io.vavr.control.Try; import org.junit.jupiter.api.DynamicTest; diff --git a/src/test/java/com/clevercloud/biscuit/token/SamplesV2Test.java b/src/test/java/com/clevercloud/biscuit/token/SamplesV2Test.java index de96809c..1a20ce65 100644 --- a/src/test/java/com/clevercloud/biscuit/token/SamplesV2Test.java +++ b/src/test/java/com/clevercloud/biscuit/token/SamplesV2Test.java @@ -2,14 +2,12 @@ import biscuit.format.schema.Schema; import com.clevercloud.biscuit.crypto.PublicKey; -import com.clevercloud.biscuit.datalog.AuthorizedWorld; import com.clevercloud.biscuit.datalog.RunLimits; import com.clevercloud.biscuit.error.Error; import com.clevercloud.biscuit.error.FailedCheck; import com.clevercloud.biscuit.error.LogicError; import com.clevercloud.biscuit.token.builder.Check; import com.clevercloud.biscuit.token.builder.Rule; -import io.vavr.Tuple2; import io.vavr.control.Try; import org.junit.jupiter.api.Test; @@ -28,7 +26,6 @@ import static com.clevercloud.biscuit.crypto.TokenSignature.fromHex; import static com.clevercloud.biscuit.token.builder.Utils.*; -import static io.vavr.API.Right; public class SamplesV2Test {