From bbef4e2be19b0bd0053afa2f7415df52d298d08e Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Thu, 9 Apr 2015 10:30:39 -0400 Subject: [PATCH] KEYCLOAK-1174: Refactor KeycloakAdapterConfigService to be a simple singleton --- .../extension/CredentialAddHandler.java | 2 +- .../CredentialReadWriteAttributeHandler.java | 2 +- .../extension/CredentialRemoveHandler.java | 2 +- ...cloakAdapterConfigDeploymentProcessor.java | 3 +- ...kAdapterConfigDeploymentProcessorEAP6.java | 2 +- .../KeycloakAdapterConfigService.java | 57 ++++--------------- .../extension/KeycloakSubsystemAdd.java | 12 ---- .../subsystem/extension/RealmAddHandler.java | 2 +- .../extension/RealmRemoveHandler.java | 2 +- .../extension/RealmWriteAttributeHandler.java | 2 +- .../extension/SecureDeploymentAddHandler.java | 2 +- .../SecureDeploymentRemoveHandler.java | 2 +- ...SecureDeploymentWriteAttributeHandler.java | 2 +- .../authserver/AuthServerAddHandler.java | 2 +- .../authserver/AuthServerDefinition.java | 4 +- .../authserver/AuthServerRemoveHandler.java | 2 +- .../AuthServerWriteAttributeHandler.java | 4 +- .../KeycloakServerDeploymentProcessor.java | 2 +- 18 files changed, 29 insertions(+), 77 deletions(-) diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java index c3c37fa63c..17f7928198 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java @@ -40,7 +40,7 @@ public class CredentialAddHandler extends AbstractAddStepHandler { @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addCredential(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java index 6289ff4539..75b334d3dd 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java @@ -33,7 +33,7 @@ public class CredentialReadWriteAttributeHandler extends AbstractWriteAttributeH protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, ModelNode resolvedValue, ModelNode currentValue, AbstractWriteAttributeHandler.HandbackHolder hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.updateCredential(operation, attributeName, resolvedValue); hh.setHandback(ckService); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java index 1cad10bfb0..0023d41cc1 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java @@ -35,7 +35,7 @@ public final class CredentialRemoveHandler extends AbstractRemoveStepHandler { @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.removeCredential(operation); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java index f96d1c2c99..bebf6dbe54 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java @@ -68,8 +68,7 @@ public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitP DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); String deploymentName = deploymentUnit.getName(); - KeycloakAdapterConfigService service = KeycloakAdapterConfigService.find(phaseContext.getServiceRegistry()); - //log.info("********* CHECK KEYCLOAK DEPLOYMENT: " + deploymentName); + KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); if (service.isSecureDeployment(deploymentName)) { addKeycloakAuthData(phaseContext, deploymentName, service); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java index 77261ba311..dc2d8e76d0 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java @@ -50,7 +50,7 @@ public class KeycloakAdapterConfigDeploymentProcessorEAP6 implements DeploymentU DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); String deploymentName = deploymentUnit.getName(); - KeycloakAdapterConfigService service = KeycloakAdapterConfigService.find(phaseContext.getServiceRegistry()); + KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); //log.info("********* CHECK KEYCLOAK DEPLOYMENT: " + deploymentName); if (service.isSecureDeployment(deploymentName)) { addKeycloakAuthData(phaseContext, deploymentName, service); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java index d860cb65c4..81bb610138 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java @@ -17,17 +17,9 @@ package org.keycloak.subsystem.extension; -import org.jboss.as.controller.OperationContext; import org.jboss.dmr.ModelNode; import org.jboss.dmr.Property; import org.jboss.logging.Logger; -import org.jboss.msc.service.Service; -import org.jboss.msc.service.ServiceController; -import org.jboss.msc.service.ServiceName; -import org.jboss.msc.service.ServiceRegistry; -import org.jboss.msc.service.StartContext; -import org.jboss.msc.service.StartException; -import org.jboss.msc.service.StopContext; import java.util.HashMap; import java.util.Map; @@ -40,41 +32,27 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public final class KeycloakAdapterConfigService implements Service { +public final class KeycloakAdapterConfigService { protected Logger log = Logger.getLogger(KeycloakAdapterConfigService.class); private static final String CREDENTIALS_JSON_NAME = "credentials"; - // Right now this is used as a service, but I'm not sure it really needs to be implemented that way. - // It's also a singleton serving the entire subsystem, but the INSTANCE variable is currently only - // used during initialization of the subsystem. - public static final ServiceName SERVICE_NAME = ServiceName.JBOSS.append("KeycloakAdapterConfigService"); - public static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); + private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); - private Map realms = new HashMap(); + public static KeycloakAdapterConfigService getInstance() { + return INSTANCE; + } + + private final Map realms = new HashMap(); // keycloak-secured deployments - private Map secureDeployments = new HashMap(); + private final Map secureDeployments = new HashMap(); // key=auth-server deployment name; value=web-context - private Map webContexts = new HashMap(); + private final Map webContexts = new HashMap(); + + private KeycloakAdapterConfigService() { - - } - - @Override - public void start(StartContext sc) throws StartException { - - } - - @Override - public void stop(StopContext sc) { - - } - - @Override - public KeycloakAdapterConfigService getValue() throws IllegalStateException, IllegalArgumentException { - return this; } public void addServerDeployment(String deploymentName, String webContext) { @@ -223,17 +201,4 @@ public final class KeycloakAdapterConfigService implements Service container = registry.getService(KeycloakAdapterConfigService.SERVICE_NAME); - if (container != null) { - KeycloakAdapterConfigService service = (KeycloakAdapterConfigService)container.getValue(); - return service; - } - return null; - } - - public static KeycloakAdapterConfigService find(OperationContext context) { - return find(context.getServiceRegistry(true)); - } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java index 0a490042be..386f8c57bc 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java @@ -82,18 +82,6 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { } } - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { - super.performRuntime(context, operation, model, verificationHandler, newControllers); - - ServiceController controller = context.getServiceTarget() - .addService(KeycloakAdapterConfigService.SERVICE_NAME, KeycloakAdapterConfigService.INSTANCE) - .addListener(verificationHandler) - .setInitialMode(ServiceController.Mode.ACTIVE) - .install(); - newControllers.add(controller); - } - @Override protected boolean requiresRuntimeVerification() { return false; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java index 0d4a5d86d1..62c76e69b6 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java @@ -60,7 +60,7 @@ public final class RealmAddHandler extends AbstractAddStepHandler { @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addRealm(operation, context.resolveExpressions(model)); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java index a5c5441554..5cc319c0b2 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java @@ -35,7 +35,7 @@ public final class RealmRemoveHandler extends AbstractRemoveStepHandler { @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.removeRealm(operation); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java index 1902b076bc..13e91c5ce4 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java @@ -43,7 +43,7 @@ public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.updateRealm(operation, attributeName, resolvedValue); hh.setHandback(ckService); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java index 99267dbe18..0c36146ec6 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java @@ -55,7 +55,7 @@ public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addSecureDeployment(operation, context.resolveExpressions(model)); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java index da0ca7e19d..23196a5fff 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java @@ -35,7 +35,7 @@ public final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandl @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.removeSecureDeployment(operation); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java index 2caca6ae64..6c87ac8601 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java @@ -44,7 +44,7 @@ public class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttribut @Override protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.find(context); + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); hh.setHandback(ckService); ckService.updateSecureDeployment(operation, attributeName, resolvedValue); return false; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java index 591718e8b1..43d26ce969 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java @@ -69,7 +69,7 @@ public final class AuthServerAddHandler extends AbstractAddStepHandler { AuthServerUtil authServerUtil = new AuthServerUtil(operation); authServerUtil.addStepToUploadAuthServer(context, enabled); - KeycloakAdapterConfigService.INSTANCE.addServerDeployment(authServerUtil.getDeploymentName(), webContext); + KeycloakAdapterConfigService.getInstance().addServerDeployment(authServerUtil.getDeploymentName(), webContext); } @Override diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java index 653d09ae3b..648e35d118 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java @@ -116,7 +116,7 @@ public class AuthServerDefinition extends SimpleResourceDefinition { @Override public void validateParameter(String paramName, ModelNode value) throws OperationFailedException { String strValue = value.asString(); - if (KeycloakAdapterConfigService.INSTANCE.isWebContextUsed(strValue)) { + if (KeycloakAdapterConfigService.getInstance().isWebContextUsed(strValue)) { throw new OperationFailedException("Can not set web-context to '" + strValue + "'. web-context must be unique among all deployments."); } } @@ -124,7 +124,7 @@ public class AuthServerDefinition extends SimpleResourceDefinition { @Override public void validateResolvedParameter(String paramName, ModelNode value) throws OperationFailedException { String strValue = value.asString(); - if (KeycloakAdapterConfigService.INSTANCE.isWebContextUsed(strValue)) { + if (KeycloakAdapterConfigService.getInstance().isWebContextUsed(strValue)) { throw new OperationFailedException("Can not set web-context to '" + strValue + "'. web-context must be unique among all deployments."); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java index f84e45ffe1..e80fbc6d75 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java @@ -45,7 +45,7 @@ public final class AuthServerRemoveHandler extends AbstractRemoveStepHandler { @Override protected void performRemove(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { String deploymentName = AuthServerUtil.getDeploymentName(operation); - KeycloakAdapterConfigService.INSTANCE.removeServerDeployment(deploymentName); + KeycloakAdapterConfigService.getInstance().removeServerDeployment(deploymentName); if (requiresRuntime(context)) { // don't do this on a domain controller addStepToRemoveAuthServer(context, deploymentName); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java index 48ffc320cf..6c5d6b3235 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java @@ -55,8 +55,8 @@ public class AuthServerWriteAttributeHandler extends ModelOnlyWriteAttributeHand if (attributeName.equals(AuthServerDefinition.WEB_CONTEXT.getName())) { - KeycloakAdapterConfigService.INSTANCE.removeServerDeployment(deploymentName); - KeycloakAdapterConfigService.INSTANCE.addServerDeployment(deploymentName, newValue.asString()); + KeycloakAdapterConfigService.getInstance().removeServerDeployment(deploymentName); + KeycloakAdapterConfigService.getInstance().addServerDeployment(deploymentName, newValue.asString()); if (isEnabled) { AuthServerUtil.addStepToRedeployAuthServer(context, deploymentName); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java index dd66a01127..565310d8e2 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java @@ -34,7 +34,7 @@ public class KeycloakServerDeploymentProcessor implements DeploymentUnitProcesso public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); String deploymentName = deploymentUnit.getName(); - KeycloakAdapterConfigService service = KeycloakAdapterConfigService.find(phaseContext.getServiceRegistry()); + KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); if (!service.isKeycloakServerDeployment(deploymentName)) { return; }