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 f5e45cf..4acf135 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
@@ -1347,7 +1347,9 @@ public class RealmAdapter implements RealmModel, JpaModel<RealmEntity> {
entity.setConfig(mapping.getConfig());
} else {
entity.getConfig().clear();
- entity.getConfig().putAll(mapping.getConfig());
+ if (mapping.getConfig() != null) {
+ entity.getConfig().putAll(mapping.getConfig());
+ }
}
em.flush();
@@ -1662,7 +1664,9 @@ public class RealmAdapter implements RealmModel, JpaModel<RealmEntity> {
entity.setConfig(model.getConfig());
} else {
entity.getConfig().clear();
- entity.getConfig().putAll(model.getConfig());
+ if (model.getConfig() != null) {
+ entity.getConfig().putAll(model.getConfig());
+ }
}
em.flush();
@@ -1744,7 +1748,9 @@ public class RealmAdapter implements RealmModel, JpaModel<RealmEntity> {
entity.setConfig(model.getConfig());
} else {
entity.getConfig().clear();
- entity.getConfig().putAll(model.getConfig());
+ if (model.getConfig() != null) {
+ entity.getConfig().putAll(model.getConfig());
+ }
}
em.flush();
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/authentication/RequiredActionsTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/authentication/RequiredActionsTest.java
index 0fe4a9b..11389d9 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/authentication/RequiredActionsTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/authentication/RequiredActionsTest.java
@@ -53,18 +53,21 @@ public class RequiredActionsTest extends AbstractAuthenticationTest {
compareRequiredActions(expected, sort(result));
RequiredActionProviderRepresentation forUpdate = newRequiredAction("VERIFY_EMAIL", "Verify Email", false, false, null);
- try {
- authMgmtResource.updateRequiredAction(forUpdate.getAlias(), forUpdate);
- Assert.fail("updateRequiredAction should fail due to null config");
- } catch (Exception ignored) {
- }
+ authMgmtResource.updateRequiredAction(forUpdate.getAlias(), forUpdate);
+ assertAdminEvents.assertEvent(REALM_NAME, OperationType.UPDATE, AdminEventPaths.authRequiredActionPath(forUpdate.getAlias()), ResourceType.REQUIRED_ACTION);
+
+ result = authMgmtResource.getRequiredActions();
+ RequiredActionProviderRepresentation updated = findRequiredActionByAlias(forUpdate.getAlias(), result);
+
+ Assert.assertNotNull("Required Action still there", updated);
+ compareRequiredAction(forUpdate, updated);
forUpdate.setConfig(Collections.<String, String>emptyMap());
authMgmtResource.updateRequiredAction(forUpdate.getAlias(), forUpdate);
assertAdminEvents.assertEvent(REALM_NAME, OperationType.UPDATE, AdminEventPaths.authRequiredActionPath(forUpdate.getAlias()), ResourceType.REQUIRED_ACTION);
result = authMgmtResource.getRequiredActions();
- RequiredActionProviderRepresentation updated = findRequiredActionByAlias(forUpdate.getAlias(), result);
+ updated = findRequiredActionByAlias(forUpdate.getAlias(), result);
Assert.assertNotNull("Required Action still there", updated);
compareRequiredAction(forUpdate, updated);