private boolean matches(RequirementExpression expression, Resource resource) { if (expression instanceof IdentityExpression) { Requirement r = ((IdentityExpression) expression).getRequirement(); return ResourceUtils.matches(r, resource); } else if (expression instanceof OrExpression) { List<RequirementExpression> res = ((OrExpression) expression).getRequirementExpressions(); for (RequirementExpression re : res) { if (matches(re, resource)) return true; } return false; } else if (expression instanceof AndExpression) { List<RequirementExpression> res = ((AndExpression) expression).getRequirementExpressions(); for (RequirementExpression re : res) { if (!matches(re, resource)) return false; } return true; } else if (expression instanceof NotExpression) { RequirementExpression re = ((NotExpression) expression).getRequirementExpression(); return !matches(re, resource); } else throw new UnsupportedOperationException("Unknown expression type " + expression.getClass()); }
private boolean matches(RequirementExpression expression, Resource resource) { if (expression instanceof IdentityExpression) { Requirement r = ((IdentityExpression) expression).getRequirement(); return ResourceUtils.matches(r, resource); } else if (expression instanceof OrExpression) { List<RequirementExpression> res = ((OrExpression) expression).getRequirementExpressions(); for (RequirementExpression re : res) { if (matches(re, resource)) return true; } return false; } else if (expression instanceof AndExpression) { List<RequirementExpression> res = ((AndExpression) expression).getRequirementExpressions(); for (RequirementExpression re : res) { if (!matches(re, resource)) return false; } return true; } else if (expression instanceof NotExpression) { RequirementExpression re = ((NotExpression) expression).getRequirementExpression(); return !matches(re, resource); } else throw new UnsupportedOperationException("Unknown expression type " + expression.getClass()); }