public boolean canRead(VisibilityEvaluator visibilityEvaluator) { try { return visibilityEvaluator.evaluate(columnVisibility); } catch (VisibilityParseException e) { throw new VertexiumException("could not evaluate visibility " + visibility.getVisibilityString(), e); } }
/** * Evaluates the given column visibility against the authorizations provided to this evaluator. * A visibility passes evaluation if all authorizations in it are contained in those known to the evaluator, and * all AND and OR subexpressions have at least two children. * * @param visibility column visibility to evaluate * @return true if visibility passes evaluation * @throws VisibilityParseException if an AND or OR subexpression has less than two children, or a subexpression is of an unknown type */ public boolean evaluate(ColumnVisibility visibility) throws VisibilityParseException { // The VisibilityEvaluator computes a trie from the given Authorizations, that ColumnVisibility expressions can be evaluated against. return evaluate(visibility.getExpression(), visibility.getParseTree()); }
/** * Evaluates the given column visibility against the authorizations provided to this evaluator. * A visibility passes evaluation if all authorizations in it are contained in those known to the evaluator, and * all AND and OR subexpressions have at least two children. * * @param visibility column visibility to evaluate * @return true if visibility passes evaluation * @throws VisibilityParseException if an AND or OR subexpression has less than two children, or a subexpression is of an unknown type */ public boolean evaluate(ColumnVisibility visibility) throws VisibilityParseException { // The VisibilityEvaluator computes a trie from the given Authorizations, that ColumnVisibility expressions can be evaluated against. return evaluate(visibility.getExpression(), visibility.getParseTree()); }
public static boolean canRead(String visibility, String[] authorizations) { if (visibility == null) { throw new RuntimeException("visibility cannot be null"); } VisibilityEvaluator visibilityEvaluator = new VisibilityEvaluator(new Authorizations(authorizations)); ColumnVisibility columnVisibility = new ColumnVisibility(visibility); try { return visibilityEvaluator.evaluate(columnVisibility); } catch (VisibilityParseException ex) { throw new RuntimeException("could not evaluate visibility " + visibility, ex); } } }
public static boolean canRead(String visibility, String[] authorizations) { if (visibility == null) { throw new RuntimeException("visibility cannot be null"); } VisibilityEvaluator visibilityEvaluator = new VisibilityEvaluator(new Authorizations(authorizations)); ColumnVisibility columnVisibility = new ColumnVisibility(visibility); try { return visibilityEvaluator.evaluate(columnVisibility); } catch (VisibilityParseException ex) { throw new RuntimeException("could not evaluate visibility " + visibility, ex); } } }
@Override protected boolean isIncluded(Row item) { try { return visibilityEvaluator.evaluate(new ColumnVisibility(item.visibility.getVisibilityString())); } catch (VisibilityParseException e) { throw new VertexiumException("Could not parse visibility: " + item.visibility); } }
public static boolean canRead(String visibility, String[] authorizations) { VisibilityEvaluator visibilityEvaluator = new VisibilityEvaluator(new Authorizations(authorizations)); ColumnVisibility columnVisibility = new ColumnVisibility(visibility); try { return visibilityEvaluator.evaluate(columnVisibility); } catch (VisibilityParseException ex) { throw new RuntimeException("could not evaluate visibility " + visibility, ex); } } }
private final boolean evaluate(final byte[] expression, final ColumnVisibility.Node root) throws VisibilityParseException { if (expression.length == 0) return true; switch (root.type) { case TERM: return auths.contains(root.getTerm(expression)); case AND: if (root.children == null || root.children.size() < 2) throw new VisibilityParseException("AND has less than 2 children", expression, root.start); for (ColumnVisibility.Node child : root.children) { if (!evaluate(expression, child)) return false; } return true; case OR: if (root.children == null || root.children.size() < 2) throw new VisibilityParseException("OR has less than 2 children", expression, root.start); for (ColumnVisibility.Node child : root.children) { if (evaluate(expression, child)) return true; } return false; default: throw new VisibilityParseException("No such node type", expression, root.start); } } }
private final boolean evaluate(final byte[] expression, final ColumnVisibility.Node root) throws VisibilityParseException { if (expression.length == 0) return true; switch (root.type) { case TERM: return auths.contains(root.getTerm(expression)); case AND: if (root.children == null || root.children.size() < 2) throw new VisibilityParseException("AND has less than 2 children", expression, root.start); for (ColumnVisibility.Node child : root.children) { if (!evaluate(expression, child)) return false; } return true; case OR: if (root.children == null || root.children.size() < 2) throw new VisibilityParseException("OR has less than 2 children", expression, root.start); for (ColumnVisibility.Node child : root.children) { if (evaluate(expression, child)) return true; } return false; default: throw new VisibilityParseException("No such node type", expression, root.start); } } }
@Override public boolean canRead(Visibility visibility) { Preconditions.checkNotNull(visibility, "visibility is required"); // this is just a shortcut so that we don't need to construct evaluators and visibility objects to check for an empty string. if (visibility.getVisibilityString().length() == 0) { return true; } VisibilityEvaluator visibilityEvaluator = new VisibilityEvaluator(new Authorizations(this.getAuthorizations())); ColumnVisibility columnVisibility = new ColumnVisibility(visibility.getVisibilityString()); try { return visibilityEvaluator.evaluate(columnVisibility); } catch (VisibilityParseException e) { throw new VertexiumException("could not evaluate visibility " + visibility.getVisibilityString(), e); } }