keycloak-memoizeit

Details

diff --git a/core/src/main/java/org/keycloak/representations/idm/authorization/Permission.java b/core/src/main/java/org/keycloak/representations/idm/authorization/Permission.java
index 47c26cf..7e865cd 100644
--- a/core/src/main/java/org/keycloak/representations/idm/authorization/Permission.java
+++ b/core/src/main/java/org/keycloak/representations/idm/authorization/Permission.java
@@ -16,8 +16,10 @@
  */
 package org.keycloak.representations.idm.authorization;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
+import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -31,6 +33,7 @@ public class Permission {
     @JsonProperty("resource_set_name")
     private final String resourceSetName;
 
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private Set<String> scopes;
 
     public Permission() {
@@ -52,6 +55,10 @@ public class Permission {
     }
 
     public Set<String> getScopes() {
+        if (this.scopes == null) {
+            this.scopes = new HashSet<>();
+        }
+
         return this.scopes;
     }
 
diff --git a/services/src/main/java/org/keycloak/authorization/util/Permissions.java b/services/src/main/java/org/keycloak/authorization/util/Permissions.java
index 4d84b03..f2cce51 100644
--- a/services/src/main/java/org/keycloak/authorization/util/Permissions.java
+++ b/services/src/main/java/org/keycloak/authorization/util/Permissions.java
@@ -95,11 +95,7 @@ public final class Permissions {
                         resourceName = resource.getName();
                     }
 
-                    Set<String> scopes = null;
-
-                    if (!permission.getScopes().isEmpty()) {
-                        scopes = permission.getScopes().stream().map(Scope::getName).collect(Collectors.toSet());
-                    }
+                    Set<String> scopes = permission.getScopes().stream().map(Scope::getName).collect(Collectors.toSet());
 
                     return new Permission(resourceId, resourceName, scopes);
                 }).collect(Collectors.toList());
@@ -111,9 +107,6 @@ public final class Permissions {
 
             if (evalPermission == null) {
                 evalPermission = permission;
-                if (evalPermission.getScopes() != null && evalPermission.getScopes().isEmpty()) {
-                    evalPermission.setScopes(null);
-                }
                 perms.put(permission.getResourceSetId(), evalPermission);
             }