57         PolicyEvaluationResponse response = 
new PolicyEvaluationResponse();
    58         List<PolicyEvaluationResponse.EvaluationResultRepresentation> resultsRep = 
new ArrayList<>();
    59         AccessToken accessToken = identity.getAccessToken();
    60         AccessToken.Authorization authorizationData = 
new AccessToken.Authorization();
    62         authorizationData.setPermissions(decision.results());
    63         accessToken.setAuthorization(authorizationData);
    65         ClientModel clientModel = authorization.getRealm().getClientById(resourceServer.getId());
    67         if (!accessToken.hasAudience(clientModel.getClientId())) {
    68             accessToken.audience(clientModel.getClientId());
    71         response.setRpt(accessToken);
    73         Collection<Result> results = decision.getResults();
    75         if (results.stream().anyMatch(evaluationResult -> evaluationResult.getEffect().equals(Decision.Effect.DENY))) {
    76             response.setStatus(DecisionEffect.DENY);
    78             response.setStatus(DecisionEffect.PERMIT);
    81         for (Result result : results) {
    82             PolicyEvaluationResponse.EvaluationResultRepresentation rep = 
new PolicyEvaluationResponse.EvaluationResultRepresentation();
    84             if (result.getEffect() == Decision.Effect.DENY) {
    85                 rep.setStatus(DecisionEffect.DENY);
    87                 rep.setStatus(DecisionEffect.PERMIT);
    92             if (result.getPermission().getResource() != null) {
    93                 ResourceRepresentation resource = 
new ResourceRepresentation();
    95                 resource.setId(result.getPermission().getResource().getId());
    96                 resource.setName(result.getPermission().getResource().getName());
    98                 rep.setResource(resource);
   100                 ResourceRepresentation resource = 
new ResourceRepresentation();
   102                 resource.setName(
"Any Resource with Scopes " + result.getPermission().getScopes().stream().map(
Scope::getName).collect(Collectors.toList()));
   104                 rep.setResource(resource);
   107             rep.setScopes(result.getPermission().getScopes().stream().map(scope -> {
   108                 ScopeRepresentation representation = 
new ScopeRepresentation();
   110                 representation.setId(scope.getId());
   111                 representation.setName(scope.getName());
   113                 return representation;
   114             }).collect(Collectors.toList()));
   116             List<PolicyEvaluationResponse.PolicyResultRepresentation> policies = 
new ArrayList<>();
   118             for (Result.PolicyResult policy : result.getResults()) {
   119                 PolicyResultRepresentation policyRep = 
toRepresentation(policy, authorization);
   121                 if (
"resource".equals(policy.getPolicy().getType())) {
   122                     policyRep.getPolicy().setScopes(result.getPermission().getResource().getScopes().stream().map(
Scope::getName).collect(Collectors.toSet()));
   125                 policies.add(policyRep);
   128             rep.setPolicies(policies);
   131         resultsRep.sort(Comparator.comparing(o -> o.getResource().getName()));
   133         Map<String, PolicyEvaluationResponse.EvaluationResultRepresentation> groupedResults = 
new HashMap<>();
   135         resultsRep.forEach(evaluationResultRepresentation -> {
   136             PolicyEvaluationResponse.EvaluationResultRepresentation result = groupedResults.get(evaluationResultRepresentation.getResource().getId());
   137             ResourceRepresentation resource = evaluationResultRepresentation.getResource();
   139             if (result == null) {
   140                 groupedResults.put(resource.getId(), evaluationResultRepresentation);
   141                 result = evaluationResultRepresentation;
   144             if (result.getStatus().equals(DecisionEffect.PERMIT) || (evaluationResultRepresentation.getStatus().equals(DecisionEffect.PERMIT) && result.getStatus().equals(DecisionEffect.DENY))) {
   145                 result.setStatus(DecisionEffect.PERMIT);
   148             List<ScopeRepresentation> scopes = result.getScopes();
   150             if (DecisionEffect.PERMIT.equals(result.getStatus())) {
   151                 result.setAllowedScopes(scopes);
   154             if (resource.getId() != null) {
   155                 if (!scopes.isEmpty()) {
   156                     result.getResource().setName(evaluationResultRepresentation.getResource().getName() + 
" with scopes " + scopes.stream().flatMap((Function<ScopeRepresentation, Stream<?>>) scopeRepresentation -> Arrays.asList(scopeRepresentation.getName()).stream()).collect(Collectors.toList()));
   158                     result.getResource().setName(evaluationResultRepresentation.getResource().getName());
   161                 result.getResource().setName(
"Any Resource with Scopes " + scopes.stream().flatMap((Function<ScopeRepresentation, Stream<?>>) scopeRepresentation -> Arrays.asList(scopeRepresentation.getName()).stream()).collect(Collectors.toList()));
   164             List<PolicyEvaluationResponse.PolicyResultRepresentation> policies = result.getPolicies();
   166             for (PolicyEvaluationResponse.PolicyResultRepresentation policy : 
new ArrayList<>(evaluationResultRepresentation.getPolicies())) {
   167                 if (!policies.contains(policy)) {
   168                     policies.add(policy);
   173         response.setResults(groupedResults.values().stream().collect(Collectors.toList()));
 
static PolicyEvaluationResponse.PolicyResultRepresentation toRepresentation(Result.PolicyResult result, AuthorizationProvider authorization)
Definition: PolicyEvaluationResponseBuilder.java:178