diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java index 219b9a5e1a9..f57c4f2a6ad 100755 --- a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java +++ b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaRealmProvider.java @@ -115,7 +115,7 @@ public class JpaRealmProvider implements RealmProvider { TypedQuery query = em.createNamedQuery("getRealmIdByName", String.class); query.setParameter("name", name); List entities = query.getResultList(); - if (entities.size() == 0) return null; + if (entities.isEmpty()) return null; if (entities.size() > 1) throw new IllegalStateException("Should not be more than one realm with same name"); String id = query.getResultList().get(0); @@ -155,6 +155,10 @@ public class JpaRealmProvider implements RealmProvider { removeRole(adapter, role); } + for (GroupModel group : adapter.getGroups()) { + session.realms().removeGroup(adapter, group); + } + num = em.createNamedQuery("removeClientInitialAccessByRealm") .setParameter("realm", realm).executeUpdate(); @@ -208,7 +212,7 @@ public class JpaRealmProvider implements RealmProvider { query.setParameter("name", name); query.setParameter("realm", realm.getId()); List roles = query.getResultList(); - if (roles.size() == 0) return null; + if (roles.isEmpty()) return null; return session.realms().getRoleById(roles.get(0), realm); } @@ -237,7 +241,7 @@ public class JpaRealmProvider implements RealmProvider { List roles = query.getResultList(); if (roles.isEmpty()) return Collections.EMPTY_SET; - Set list = new HashSet(); + Set list = new HashSet<>(); for (String id : roles) { list.add(session.realms().getRoleById(id, realm)); } @@ -250,14 +254,14 @@ public class JpaRealmProvider implements RealmProvider { query.setParameter("name", name); query.setParameter("client", client.getId()); List roles = query.getResultList(); - if (roles.size() == 0) return null; + if (roles.isEmpty()) return null; return session.realms().getRoleById(roles.get(0), realm); } @Override public Set getClientRoles(RealmModel realm, ClientModel client) { - Set list = new HashSet(); + Set list = new HashSet<>(); TypedQuery query = em.createNamedQuery("getClientRoleIds", String.class); query.setParameter("client", client.getId()); List roles = query.getResultList(); @@ -384,9 +388,8 @@ public class JpaRealmProvider implements RealmProvider { for (GroupModel subGroup : group.getSubGroups()) { session.realms().removeGroup(realm, subGroup); } - moveGroup(realm, group, null); GroupEntity groupEntity = em.find(GroupEntity.class, group.getId()); - if (!groupEntity.getRealm().getId().equals(realm.getId())) { + if ((groupEntity == null) || (!groupEntity.getRealm().getId().equals(realm.getId()))) { return false; } em.createNamedQuery("deleteGroupRoleMappingsByGroup").setParameter("group", groupEntity).executeUpdate(); diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/log4j.properties b/testsuite/integration-arquillian/tests/base/src/test/resources/log4j.properties index 8f743734d1f..3dcf46ac7c1 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/resources/log4j.properties +++ b/testsuite/integration-arquillian/tests/base/src/test/resources/log4j.properties @@ -75,4 +75,11 @@ log4j.logger.org.apache.directory.server.core=warn # log4j.logger.org.keycloak.keys.infinispan=trace log4j.logger.org.keycloak.services.clientregistration.policy=debug -#log4j.logger.org.keycloak.authentication=debug \ No newline at end of file +#log4j.logger.org.keycloak.authentication=debug + +## Enable SQL debugging +# Enable logs the SQL statements +#log4j.logger.org.hibernate.SQL=debug + +# Enable logs the JDBC parameters passed to a query +#log4j.logger.org.hibernate.type=trace diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/testrealm.json b/testsuite/integration-arquillian/tests/base/src/test/resources/testrealm.json index 99cd578d8d8..bbed5618872 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/resources/testrealm.json +++ b/testsuite/integration-arquillian/tests/base/src/test/resources/testrealm.json @@ -456,6 +456,17 @@ "attributes": { "level2Attribute": ["true"] + } + }, + { + "name": "level2group2", + "realmRoles": ["admin"], + "clientRoles": { + "test-app": ["customer-user"] + }, + "attributes": { + "level2Attribute": ["true"] + } } ] @@ -481,6 +492,17 @@ "attributes": { "level2Attribute": ["true"] + } + }, + { + "name": "level2group2", + "realmRoles": ["admin"], + "clientRoles": { + "test-app": ["customer-user"] + }, + "attributes": { + "level2Attribute": ["true"] + } } ]