keycloak-developers

avoid lazyexception

12/30/2019 4:57:07 PM

Details

diff --git a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PermissionTicketAdapter.java b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PermissionTicketAdapter.java
index 04e9720..378a859 100644
--- a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PermissionTicketAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PermissionTicketAdapter.java
@@ -97,18 +97,18 @@ public static GetterCache<PermissionTicketEntity> getEntity = new GetterCache<>(
 
     @Override
     public ResourceServer getResourceServer() {
-        return storeFactory.getResourceServerStore().findById(getEntity().getResourceServer().getId());
+        return storeFactory.getResourceServerStore().findById(entity.getResourceServer().getId());
     }
 
     @Override
     public Policy getPolicy() {
-        PolicyEntity policy = getEntity().getPolicy();
+        PolicyEntity policy = entity.getPolicy();
 
         if (policy == null) {
             return null;
         }
 
-        return storeFactory.getPolicyStore().findById(policy.getId(), getEntity().getResourceServer().getId());
+        return storeFactory.getPolicyStore().findById(policy.getId(), entity.getResourceServer().getId());
     }
 
     @Override
@@ -121,12 +121,12 @@ public static GetterCache<PermissionTicketEntity> getEntity = new GetterCache<>(
 
     @Override
     public Resource getResource() {
-        return storeFactory.getResourceStore().findById(getEntity().getResource().getId(), getResourceServer().getId());
+        return storeFactory.getResourceStore().findById(entity.getResource().getId(), getResourceServer().getId());
     }
 
     @Override
     public Scope getScope() {
-        ScopeEntity scope = getEntity().getScope();
+        ScopeEntity scope = entity.getScope();
 
         if (scope == null) {
             return null;
diff --git a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PolicyAdapter.java b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PolicyAdapter.java
index 3ee06cc..6127e2a 100644
--- a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PolicyAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/PolicyAdapter.java
@@ -101,7 +101,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Map<String, String> getConfig() {
         Map<String, String> result = new HashMap<String, String>();
-        if (getEntity().getConfig() != null) result.putAll(getEntity().getConfig());
+        if (entity.getConfig() != null) result.putAll(entity.getConfig());
         return Collections.unmodifiableMap(result);
     }
 
@@ -166,7 +166,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public ResourceServer getResourceServer() {
-        return storeFactory.getResourceServerStore().findById(getEntity().getResourceServer().getId());
+        return storeFactory.getResourceServerStore().findById(entity.getResourceServer().getId());
     }
 
     @Override
@@ -182,7 +182,7 @@ return getEntity.computeIfAbsent(() -> {
     public Set<Resource> getResources() {
         Set<Resource> set = new HashSet<>();
         for (ResourceEntity res : getEntity().getResources()) {
-            set.add(storeFactory.getResourceStore().findById(res.getId(), getEntity().getResourceServer().getId()));
+            set.add(storeFactory.getResourceStore().findById(res.getId(), entity.getResourceServer().getId()));
         }
         return Collections.unmodifiableSet(set);
     }
@@ -191,7 +191,7 @@ return getEntity.computeIfAbsent(() -> {
     public Set<Scope> getScopes() {
         Set<Scope> set = new HashSet<>();
         for (ScopeEntity res : getEntity().getScopes()) {
-            set.add(storeFactory.getScopeStore().findById(res.getId(), getEntity().getResourceServer().getId()));
+            set.add(storeFactory.getScopeStore().findById(res.getId(), entity.getResourceServer().getId()));
         }
         return Collections.unmodifiableSet(set);
     }
diff --git a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ResourceAdapter.java b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ResourceAdapter.java
index 2da0ae1..510893a 100644
--- a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ResourceAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ResourceAdapter.java
@@ -125,8 +125,8 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public List<Scope> getScopes() {
         List<Scope> scopes = new LinkedList<>();
-        for (ScopeEntity scope : getEntity().getScopes()) {
-            scopes.add(storeFactory.getScopeStore().findById(scope.getId(), getEntity().getResourceServer().getId()));
+        for (ScopeEntity scope : entity.getScopes()) {
+            scopes.add(storeFactory.getScopeStore().findById(scope.getId(), entity.getResourceServer().getId()));
         }
 
         return Collections.unmodifiableList(scopes);
@@ -147,7 +147,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public ResourceServer getResourceServer() {
-        return storeFactory.getResourceServerStore().findById(getEntity().getResourceServer().getId());
+        return storeFactory.getResourceServerStore().findById(entity.getResourceServer().getId());
     }
 
     @Override
@@ -189,7 +189,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Map<String, List<String>> getAttributes() {
         MultivaluedHashMap<String, String> result = new MultivaluedHashMap<>();
-        for (ResourceAttributeEntity attr : getEntity().getAttributes()) {
+        for (ResourceAttributeEntity attr : entity.getAttributes()) {
             result.add(attr.getName(), attr.getValue());
         }
         return Collections.unmodifiableMap(result);
diff --git a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ScopeAdapter.java b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ScopeAdapter.java
index 3267a37..87c8b1b 100644
--- a/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ScopeAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/authorization/jpa/store/ScopeAdapter.java
@@ -97,7 +97,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public ResourceServer getResourceServer() {
-        return storeFactory.getResourceServerStore().findById(getEntity().getResourceServer().getId());
+        return storeFactory.getResourceServerStore().findById(entity.getResourceServer().getId());
     }
 
     public static ScopeEntity toEntity(EntityManager em, Scope scope) {
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/ClientAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/ClientAdapter.java
index b2a78e5..f67cd15 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/ClientAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/ClientAdapter.java
@@ -71,9 +71,9 @@ public class ClientAdapter implements ClientModel, JpaModel<ClientEntity> {
 public static GetterCache<ClientEntity> getEntity = new GetterCache<>("ClientAdapter.getEntity");
 
     public ClientEntity getEntity() {
-return getEntity.computeIfAbsent(() -> {
+// return getEntity.computeIfAbsent(() -> {
         return entity;
-}, 120000);
+// }, 120000);
     }
 
     @Override
@@ -152,7 +152,7 @@ getEntity.invalidate();
     @Override
     public Set<String> getWebOrigins() {
         Set<String> result = new HashSet<String>();
-        result.addAll(getEntity().getWebOrigins());
+        result.addAll(entity.getWebOrigins());
         return result;
     }
 
@@ -166,12 +166,12 @@ getEntity.invalidate();
 
     @Override
     public void addWebOrigin(String webOrigin) {
-        getEntity().getWebOrigins().add(webOrigin);
+        entity.getWebOrigins().add(webOrigin);
     }
 
     @Override
     public void removeWebOrigin(String webOrigin) {
-        getEntity().getWebOrigins().remove(webOrigin);
+        entity.getWebOrigins().remove(webOrigin);
     }
 
     @Override
@@ -265,7 +265,7 @@ getEntity.invalidate();
 
     @Override
     public Set<RoleModel> getScopeMappings() {
-        return getEntity().getScopeMapping().stream()
+        return entity.getScopeMapping().stream()
                 .map(RoleEntity::getId)
                 .map(realm::getRoleById)
                 .filter(Objects::nonNull)
@@ -275,12 +275,12 @@ getEntity.invalidate();
     @Override
     public void addScopeMapping(RoleModel role) {
         RoleEntity roleEntity = RoleAdapter.toRoleEntity(role, em);
-        getEntity().getScopeMapping().add(roleEntity);
+        entity.getScopeMapping().add(roleEntity);
     }
 
     @Override
     public void deleteScopeMapping(RoleModel role) {
-        getEntity().getScopeMapping().remove(RoleAdapter.toRoleEntity(role, em));
+        entity.getScopeMapping().remove(RoleAdapter.toRoleEntity(role, em));
     }
 
     @Override
@@ -297,24 +297,27 @@ getEntity.invalidate();
 
     @Override
     public void setAuthenticationFlowBindingOverride(String name, String value) {
-        getEntity().getAuthFlowBindings().put(name, value);
+        getEntity.invalidate();
+        entity.getAuthFlowBindings().put(name, value);
 
     }
 
     @Override
     public void removeAuthenticationFlowBindingOverride(String name) {
-        getEntity().getAuthFlowBindings().remove(name);
+        getEntity.invalidate();
+        entity.getAuthFlowBindings().remove(name);
     }
 
     @Override
     public String getAuthenticationFlowBindingOverride(String name) {
-        return getEntity().getAuthFlowBindings().get(name);
+        getEntity.invalidate();
+        return entity.getAuthFlowBindings().get(name);
     }
 
     @Override
     public Map<String, String> getAuthenticationFlowBindingOverrides() {
         Map<String, String> copy = new HashMap<>();
-        copy.putAll(getEntity().getAuthFlowBindings());
+        copy.putAll(entity.getAuthFlowBindings());
         return copy;
     }
 
@@ -357,7 +360,7 @@ getEntity.invalidate();
     @Override
     public Map<String, String> getAttributes() {
         Map<String, String> attrs = new HashMap<>();
-        for (ClientAttributeEntity attr : getEntity().getAttributes()) {
+        for (ClientAttributeEntity attr : entity.getAttributes()) {
             attrs.put(attr.getName(), attr.getValue());
         }
         return attrs;
@@ -457,7 +460,7 @@ getEntity.invalidate();
 
     protected ProtocolMapperEntity getProtocolMapperEntity(String id) {
         getEntity.invalidate();
-        for (ProtocolMapperEntity entity : getEntity().getProtocolMappers()) {
+        for (ProtocolMapperEntity entity : entity.getProtocolMappers()) {
             if (entity.getId().equals(id)) {
                 return entity;
             }
@@ -468,7 +471,7 @@ getEntity.invalidate();
 
     protected ProtocolMapperEntity getProtocolMapperEntityByName(String protocol, String name) {
         getEntity.invalidate();
-        for (ProtocolMapperEntity entity : getEntity().getProtocolMappers()) {
+        for (ProtocolMapperEntity entity : entity.getProtocolMappers()) {
             if (entity.getProtocol().equals(protocol) && entity.getName().equals(name)) {
                 return entity;
             }
@@ -714,7 +717,7 @@ getEntity.invalidate();
 
     @Override
     public List<String> getDefaultRoles() {
-        Collection<RoleEntity> entities = getEntity().getDefaultRoles();
+        Collection<RoleEntity> entities = entity.getDefaultRoles();
         List<String> roles = new ArrayList<String>();
         if (entities == null) return roles;
         for (RoleEntity entity : entities) {
@@ -729,7 +732,7 @@ getEntity.invalidate();
         if (role == null) {
             role = addRole(name);
         }
-        Collection<RoleEntity> entities = getEntity().getDefaultRoles();
+        Collection<RoleEntity> entities = entity.getDefaultRoles();
         for (RoleEntity entity : entities) {
             if (entity.getId().equals(role.getId())) {
                 return;
@@ -766,7 +769,7 @@ getEntity.invalidate();
 
     @Override
     public void removeDefaultRoles(String... defaultRoles) {
-        Collection<RoleEntity> entities = getEntity().getDefaultRoles();
+        Collection<RoleEntity> entities = entity.getDefaultRoles();
         List<RoleEntity> remove = new ArrayList<RoleEntity>();
         for (RoleEntity rel : entities) {
             if (contains(rel.getName(), defaultRoles)) {
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/ClientScopeAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/ClientScopeAdapter.java
index 03544a9..51e2e10 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/ClientScopeAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/ClientScopeAdapter.java
@@ -112,7 +112,7 @@ getEntity.invalidate();
     @Override
     public Set<ProtocolMapperModel> getProtocolMappers() {
         Set<ProtocolMapperModel> mappings = new HashSet<ProtocolMapperModel>();
-        for (ProtocolMapperEntity entity : getEntity().getProtocolMappers()) {
+        for (ProtocolMapperEntity entity : entity.getProtocolMappers()) {
             ProtocolMapperModel mapping = new ProtocolMapperModel();
             mapping.setId(entity.getId());
             mapping.setName(entity.getName());
@@ -148,7 +148,7 @@ getEntity.invalidate();
     }
 
     protected ProtocolMapperEntity getProtocolMapperEntity(String id) {
-        for (ProtocolMapperEntity entity : getEntity().getProtocolMappers()) {
+        for (ProtocolMapperEntity entity : entity.getProtocolMappers()) {
             if (entity.getId().equals(id)) {
                 return entity;
             }
@@ -158,7 +158,7 @@ getEntity.invalidate();
     }
 
     protected ProtocolMapperEntity getProtocolMapperEntityByName(String protocol, String name) {
-        for (ProtocolMapperEntity entity : getEntity().getProtocolMappers()) {
+        for (ProtocolMapperEntity entity : entity.getProtocolMappers()) {
             if (entity.getProtocol().equals(protocol) && entity.getName().equals(name)) {
                 return entity;
             }
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java
index 090b054..d4b9ec3 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/GroupAdapter.java
@@ -82,14 +82,14 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public GroupModel getParent() {
-        GroupEntity parent = getEntity().getParent();
+        GroupEntity parent = group.getParent();
         if (parent == null) return null;
         return realm.getGroupById(parent.getId());
     }
 
     @Override
     public String getParentId() {
-        GroupEntity parent = getEntity().getParent();
+        GroupEntity parent = group.getParent();
         if (parent == null) return null;
         return parent.getId();
     }
@@ -209,7 +209,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public String getFirstAttribute(String name) {
-        for (GroupAttributeEntity attr : getEntity().getAttributes()) {
+        for (GroupAttributeEntity attr : group.getAttributes()) {
             if (attr.getName().equals(name)) {
                 return attr.getValue();
             }
@@ -220,7 +220,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public List<String> getAttribute(String name) {
         List<String> result = new ArrayList<>();
-        for (GroupAttributeEntity attr : getEntity().getAttributes()) {
+        for (GroupAttributeEntity attr : group.getAttributes()) {
             if (attr.getName().equals(name)) {
                 result.add(attr.getValue());
             }
@@ -231,7 +231,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Map<String, List<String>> getAttributes() {
         MultivaluedHashMap<String, String> result = new MultivaluedHashMap<>();
-        for (GroupAttributeEntity attr : getEntity().getAttributes()) {
+        for (GroupAttributeEntity attr : group.getAttributes()) {
             result.add(attr.getName(), attr.getValue());
         }
         return result;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
index 3255270..6e92b4c 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
@@ -223,7 +223,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public String getAttribute(String name) {
-        for (RealmAttributeEntity attr : getEntity().getAttributes()) {
+        for (RealmAttributeEntity attr : realm.getAttributes()) {
             if (attr.getName().equals(name)) {
                 return attr.getValue();
             }
@@ -256,7 +256,7 @@ return getEntity.computeIfAbsent(() -> {
     public Map<String, String> getAttributes() {
         // should always return a copy
         Map<String, String> result = new HashMap<String, String>();
-        for (RealmAttributeEntity attr : getEntity().getAttributes()) {
+        for (RealmAttributeEntity attr : realm.getAttributes()) {
             result.put(attr.getName(), attr.getValue());
         }
         return result;
@@ -689,7 +689,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<RequiredCredentialModel> getRequiredCredentials() {
-        Collection<RequiredCredentialEntity> entities = getEntity().getRequiredCredentials();
+        Collection<RequiredCredentialEntity> entities = realm.getRequiredCredentials();
         if (entities == null) return Collections.EMPTY_LIST;
         List<RequiredCredentialModel> requiredCredentialModels = new LinkedList<>();
         for (RequiredCredentialEntity entity : entities) {
@@ -706,7 +706,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<String> getDefaultRoles() {
-        Collection<RoleEntity> entities = getEntity().getDefaultRoles();
+        Collection<RoleEntity> entities = realm.getDefaultRoles();
         if (entities == null || entities.isEmpty()) return Collections.emptyList();
         List<String> roles = new LinkedList<>();
         for (RoleEntity entity : entities) {
@@ -783,7 +783,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<GroupModel> getDefaultGroups() {
-        Collection<GroupEntity> entities = getEntity().getDefaultGroups();
+        Collection<GroupEntity> entities = realm.getDefaultGroups();
         if (entities == null || entities.isEmpty()) return Collections.EMPTY_LIST;
         List<GroupModel> defaultGroups = new LinkedList<>();
         for (GroupEntity entity : entities) {
@@ -880,7 +880,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Map<String, String> getSmtpConfig() {
         Map<String, String> config = new HashMap<String, String>();
-        config.putAll(getEntity().getSmtpConfig());
+        config.putAll(realm.getSmtpConfig());
         return Collections.unmodifiableMap(config);
     }
 
@@ -1054,7 +1054,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public Set<String> getEventsListeners() {
-        Set<String> eventsListeners = getEntity().getEventsListeners();
+        Set<String> eventsListeners = realm.getEventsListeners();
         if (eventsListeners.isEmpty()) return Collections.EMPTY_SET;
         Set<String> copy = new HashSet<>();
         copy.addAll(eventsListeners);
@@ -1070,7 +1070,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public Set<String> getEnabledEventTypes() {
-        Set<String> enabledEventTypes = getEntity().getEnabledEventTypes();
+        Set<String> enabledEventTypes = realm.getEnabledEventTypes();
         if (enabledEventTypes.isEmpty()) return Collections.EMPTY_SET;
         Set<String> copy = new HashSet<>();
         copy.addAll(enabledEventTypes);
@@ -1135,7 +1135,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<IdentityProviderModel> getIdentityProviders() {
-        List<IdentityProviderEntity> entities = getEntity().getIdentityProviders();
+        List<IdentityProviderEntity> entities = realm.getIdentityProviders();
         if (entities.isEmpty()) return Collections.EMPTY_LIST;
         List<IdentityProviderModel> identityProviders = new ArrayList<IdentityProviderModel>();
 
@@ -1303,7 +1303,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public Set<String> getSupportedLocales() {
-        Set<String> supportedLocales = getEntity().getSupportedLocales();
+        Set<String> supportedLocales = realm.getSupportedLocales();
         if (supportedLocales == null || supportedLocales.isEmpty()) return Collections.EMPTY_SET;
         Set<String> copy = new HashSet<>();
         copy.addAll(supportedLocales);
@@ -1331,7 +1331,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public Set<IdentityProviderMapperModel> getIdentityProviderMappers() {
-        Collection<IdentityProviderMapperEntity> entities = getEntity().getIdentityProviderMappers();
+        Collection<IdentityProviderMapperEntity> entities = realm.getIdentityProviderMappers();
         if (entities.isEmpty()) return Collections.EMPTY_SET;
         Set<IdentityProviderMapperModel> mappings = new HashSet<IdentityProviderMapperModel>();
         for (IdentityProviderMapperEntity entity : entities) {
@@ -1344,7 +1344,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Set<IdentityProviderMapperModel> getIdentityProviderMappersByAlias(String brokerAlias) {
         Set<IdentityProviderMapperModel> mappings = new HashSet<IdentityProviderMapperModel>();
-        for (IdentityProviderMapperEntity entity : getEntity().getIdentityProviderMappers()) {
+        for (IdentityProviderMapperEntity entity : realm.getIdentityProviderMappers()) {
             if (!entity.getIdentityProviderAlias().equals(brokerAlias)) {
                 continue;
             }
@@ -1375,7 +1375,7 @@ return getEntity.computeIfAbsent(() -> {
     }
 
     protected IdentityProviderMapperEntity getIdentityProviderMapperEntity(String id) {
-        for (IdentityProviderMapperEntity entity : getEntity().getIdentityProviderMappers()) {
+        for (IdentityProviderMapperEntity entity : realm.getIdentityProviderMappers()) {
             if (entity.getId().equals(id)) {
                 return entity;
             }
@@ -1385,7 +1385,7 @@ return getEntity.computeIfAbsent(() -> {
     }
 
     protected IdentityProviderMapperEntity getIdentityProviderMapperEntityByName(String alias, String name) {
-        for (IdentityProviderMapperEntity entity : getEntity().getIdentityProviderMappers()) {
+        for (IdentityProviderMapperEntity entity : realm.getIdentityProviderMappers()) {
             if (entity.getIdentityProviderAlias().equals(alias) && entity.getName().equals(name)) {
                 return entity;
             }
@@ -1527,7 +1527,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<AuthenticationFlowModel> getAuthenticationFlows() {
-        return getEntity().getAuthenticationFlows().stream()
+        return realm.getAuthenticationFlows().stream()
                 .map(this::entityToModel)
                 .collect(Collectors.collectingAndThen(
                         Collectors.toList(), Collections::unmodifiableList));
@@ -1746,7 +1746,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<AuthenticatorConfigModel> getAuthenticatorConfigs() {
-        Collection<AuthenticatorConfigEntity> entities = getEntity().getAuthenticatorConfigs();
+        Collection<AuthenticatorConfigEntity> entities = realm.getAuthenticatorConfigs();
         if (entities.isEmpty()) return Collections.EMPTY_LIST;
         List<AuthenticatorConfigModel> authenticators = new LinkedList<>();
         for (AuthenticatorConfigEntity entity : entities) {
@@ -1829,7 +1829,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<RequiredActionProviderModel> getRequiredActionProviders() {
-        Collection<RequiredActionProviderEntity> entities = getEntity().getRequiredActionProviders();
+        Collection<RequiredActionProviderEntity> entities = realm.getRequiredActionProviders();
         if (entities.isEmpty()) return Collections.EMPTY_LIST;
         List<RequiredActionProviderModel> actions = new LinkedList<>();
         for (RequiredActionProviderEntity entity : entities) {
@@ -1904,7 +1904,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<ClientScopeModel> getClientScopes() {
-        Collection<ClientScopeEntity> entities = getEntity().getClientScopes();
+        Collection<ClientScopeEntity> entities = realm.getClientScopes();
         if (entities == null || entities.isEmpty()) return Collections.EMPTY_LIST;
         List<ClientScopeModel> list = new LinkedList<>();
         for (ClientScopeEntity entity : entities) {
@@ -2108,14 +2108,14 @@ return getEntity.computeIfAbsent(() -> {
         session.users().preRemove(this, component);
         ComponentUtil.notifyPreRemove(session, this, component);
         removeComponents(component.getId());
-        getEntity().getComponents().remove(c);
+        realm.getComponents().remove(c);
     }
 
     @Override
     public void removeComponents(String parentId) {
         Predicate<ComponentEntity> sameParent = c -> Objects.equals(parentId, c.getParentId());
 
-        getEntity().getComponents().stream()
+        realm.getComponents().stream()
                 .filter(sameParent)
                 .map(this::entityToModel)
                 .forEach((ComponentModel c) -> {
@@ -2123,7 +2123,7 @@ return getEntity.computeIfAbsent(() -> {
                     ComponentUtil.notifyPreRemove(session, this, c);
                 });
 
-        getEntity().getComponents().removeIf(sameParent);
+        realm.getComponents().removeIf(sameParent);
     }
 
     @Override
@@ -2131,7 +2131,7 @@ return getEntity.computeIfAbsent(() -> {
         if (parentId == null) parentId = getId();
         final String parent = parentId;
 
-        return getEntity().getComponents().stream()
+        return realm.getComponents().stream()
                 .filter(c -> parent.equals(c.getParentId())
                         && providerType.equals(c.getProviderType()))
                 .map(this::entityToModel)
@@ -2140,7 +2140,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<ComponentModel> getComponents(final String parentId) {
-        return getEntity().getComponents().stream()
+        return realm.getComponents().stream()
                 .filter(c -> parentId.equals(c.getParentId()))
                 .map(this::entityToModel)
                 .collect(Collectors.toList());
@@ -2164,7 +2164,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public List<ComponentModel> getComponents() {
-        return getEntity().getComponents().stream().map(this::entityToModel).collect(Collectors.toList());
+        return realm.getComponents().stream().map(this::entityToModel).collect(Collectors.toList());
     }
 
     @Override
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java
index f06101d..4c48ae5 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java
@@ -104,24 +104,24 @@ return getEntity.computeIfAbsent(() -> {
     public void addCompositeRole(RoleModel role) {
         getEntity.invalidate();
         RoleEntity entity = RoleAdapter.toRoleEntity(role, em);
-        for (RoleEntity composite : getEntity().getCompositeRoles()) {
+        for (RoleEntity composite : this.role.getCompositeRoles()) {
             if (composite.equals(entity)) return;
         }
-        getEntity().getCompositeRoles().add(entity);
+        this.role.getCompositeRoles().add(entity);
     }
 
     @Override
     public void removeCompositeRole(RoleModel role) {
         getEntity.invalidate();
         RoleEntity entity = RoleAdapter.toRoleEntity(role, em);
-        getEntity().getCompositeRoles().remove(entity);
+        this.role.getCompositeRoles().remove(entity);
     }
 
     @Override
     public Set<RoleModel> getComposites() {
         Set<RoleModel> set = new HashSet<RoleModel>();
 
-        for (RoleEntity composite : getEntity().getCompositeRoles()) {
+        for (RoleEntity composite : role.getCompositeRoles()) {
             set.add(new RoleAdapter(session, realm, em, composite));
 
             // todo I want to do this, but can't as you get stack overflow
@@ -178,7 +178,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public String getFirstAttribute(String name) {
-        for (RoleAttributeEntity attribute : getEntity().getAttributes()) {
+        for (RoleAttributeEntity attribute : role.getAttributes()) {
             if (attribute.getName().equals(name)) {
                 return attribute.getValue();
             }
@@ -190,7 +190,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public List<String> getAttribute(String name) {
         List<String> attributes = new ArrayList<>();
-        for (RoleAttributeEntity attribute : getEntity().getAttributes()) {
+        for (RoleAttributeEntity attribute : role.getAttributes()) {
             if (attribute.getName().equals(name)) {
                 attributes.add(attribute.getValue());
             }
@@ -201,7 +201,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Map<String, List<String>> getAttributes() {
         Map<String, List<String>> map = new HashMap<>();
-        for (RoleAttributeEntity attribute : getEntity().getAttributes()) {
+        for (RoleAttributeEntity attribute : role.getAttributes()) {
             map.computeIfAbsent(attribute.getName(), name -> new ArrayList<>()).add(attribute.getValue());
         }
 
@@ -215,7 +215,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public String getContainerId() {
-        if (isClientRole()) return getEntity().getClient().getId();
+        if (isClientRole()) return role.getClient().getId();
         else return realm.getId();
     }
 
@@ -223,7 +223,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public RoleContainerModel getContainer() {
         if (getEntity().isClientRole()) {
-            return realm.getClientById(getEntity().getClient().getId());
+            return realm.getClientById(role.getClient().getId());
 
         } else {
             return realm;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java
index 4ae29df..65243a1 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/UserAdapter.java
@@ -195,7 +195,7 @@ return getEntity.computeIfAbsent(() -> {
 
     @Override
     public String getFirstAttribute(String name) {
-        for (UserAttributeEntity attr : getEntity().getAttributes()) {
+        for (UserAttributeEntity attr : user.getAttributes()) {
             if (attr.getName().equals(name)) {
                 return attr.getValue();
             }
@@ -206,7 +206,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public List<String> getAttribute(String name) {
         List<String> result = new ArrayList<>();
-        for (UserAttributeEntity attr : getEntity().getAttributes()) {
+        for (UserAttributeEntity attr : user.getAttributes()) {
             if (attr.getName().equals(name)) {
                 result.add(attr.getValue());
             }
@@ -217,7 +217,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Map<String, List<String>> getAttributes() {
         MultivaluedHashMap<String, String> result = new MultivaluedHashMap<>();
-        for (UserAttributeEntity attr : getEntity().getAttributes()) {
+        for (UserAttributeEntity attr : user.getAttributes()) {
             result.add(attr.getName(), attr.getValue());
         }
         return result;
@@ -226,7 +226,7 @@ return getEntity.computeIfAbsent(() -> {
     @Override
     public Set<String> getRequiredActions() {
         Set<String> result = new HashSet<>();
-        for (UserRequiredActionEntity attr : getEntity().getRequiredActions()) {
+        for (UserRequiredActionEntity attr : user.getRequiredActions()) {
             result.add(attr.getAction());
         }
         return result;