42 DecisionResultCollector decision =
new DecisionResultCollector() {
44 protected void onComplete(Result result) {
45 if (isGranted(result.getResults().iterator().next())) {
52 AuthorizationProvider authorization = evaluation.getAuthorizationProvider();
53 Policy policy = evaluation.getPolicy();
54 DefaultEvaluation defaultEvaluation = DefaultEvaluation.class.cast(evaluation);
55 Map<Policy, Map<Object, Decision.Effect>> decisionCache = defaultEvaluation.getDecisionCache();
56 ResourcePermission permission = evaluation.getPermission();
58 for (Policy associatedPolicy : policy.getAssociatedPolicies()) {
59 Map<Object, Decision.Effect> decisions = decisionCache.computeIfAbsent(associatedPolicy, p ->
new HashMap<>());
60 Decision.Effect effect = decisions.get(permission);
61 DefaultEvaluation eval =
new DefaultEvaluation(evaluation.getPermission(), evaluation.getContext(), policy, associatedPolicy, decision, authorization, decisionCache);
64 PolicyProvider policyProvider = authorization.getProvider(associatedPolicy.getType());
66 policyProvider.evaluate(eval);
68 eval.denyIfNoEffect();
69 decisions.put(permission, eval.getEffect());
71 eval.setEffect(effect);
75 decision.onComplete(permission);