From 89875aea02362059f8337c05814abe3760b9437a Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Fri, 1 May 2015 10:46:49 +0200 Subject: [PATCH] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Fix deprecated uses, and more code cleanup --- .../adapter/extension/Environment.java | 58 ------------------- .../KeycloakAdapterConfigService.java | 27 +-------- .../adapter/extension/KeycloakExtension.java | 3 +- .../extension/KeycloakSubsystemAdd.java | 9 +-- .../KeycloakSubsystemDefinition.java | 2 - .../adapter/extension/RealmAddHandler.java | 9 +-- .../extension/RealmWriteAttributeHandler.java | 6 -- .../extension/SecureDeploymentAddHandler.java | 9 +-- .../extension/RealmDefinitionTestCase.java | 3 - .../KeycloakAdapterConfigService.java | 5 -- .../server/extension/KeycloakExtension.java | 3 +- .../extension/KeycloakSubsystemAdd.java | 9 +-- .../extension/KeycloakSubsystemParser.java | 13 ----- .../server/logging/KeycloakLogger.java | 6 -- .../extension/SubsystemParsingTestCase.java | 2 - 15 files changed, 7 insertions(+), 157 deletions(-) delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java deleted file mode 100644 index 06883c8448..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors - * as indicated by the @author tags. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package org.keycloak.subsystem.adapter.extension; - -import org.jboss.as.version.Version; -import org.jboss.modules.Module; -import org.jboss.modules.ModuleIdentifier; -import org.jboss.modules.ModuleLoadException; - -/** - * Allows the Keycloak subsystem to learn about its environment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class Environment { - private static final ModuleIdentifier KEYCLOAK_SUBSYSTEM = ModuleIdentifier.create("org.keycloak.keycloak-adapter-subsystem"); - - private static final boolean isWildFly = findIsWildFly(); - - public Environment() { - } - - private static boolean findIsWildFly() { - try { - return !Version.AS_VERSION.startsWith("7"); - } catch (Exception e) { - return false; - } - } - - public Module getSubsysModule() { - // Unfortunately, we can't cache this because unit tests will fail - try { - return Module.getModuleFromCallerModuleLoader(KEYCLOAK_SUBSYSTEM); - } catch (ModuleLoadException e) { - throw new IllegalStateException("Can't find Keycloak subsystem.", e); - } - } - - public static boolean isWildFly() { - return isWildFly; - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java index cb2dddf744..c6f616adce 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java @@ -19,7 +19,6 @@ package org.keycloak.subsystem.adapter.extension; import org.jboss.dmr.ModelNode; import org.jboss.dmr.Property; -import org.jboss.logging.Logger; import java.util.HashMap; import java.util.Map; @@ -33,7 +32,7 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ public final class KeycloakAdapterConfigService { - protected Logger log = Logger.getLogger(KeycloakAdapterConfigService.class); + private static final String CREDENTIALS_JSON_NAME = "credentials"; private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); @@ -47,30 +46,10 @@ public final class KeycloakAdapterConfigService { // keycloak-secured deployments private final Map secureDeployments = new HashMap(); - // key=auth-server deployment name; value=web-context - private final Map webContexts = new HashMap(); - - private KeycloakAdapterConfigService() { } - public void addServerDeployment(String deploymentName, String webContext) { - this.webContexts.put(deploymentName, webContext); - } - - public String getWebContext(String deploymentName) { - return webContexts.get(deploymentName); - } - - public void removeServerDeployment(String deploymentName) { - this.webContexts.remove(deploymentName); - } - - public boolean isWebContextUsed(String webContext) { - return webContexts.containsValue(webContext); - } - public void addRealm(ModelNode operation, ModelNode model) { this.realms.put(realmNameFromOp(operation), model.clone()); } @@ -197,8 +176,4 @@ public final class KeycloakAdapterConfigService { return this.secureDeployments.containsKey(deploymentName); } - - public boolean isKeycloakServerDeployment(String deploymentName) { - return this.webContexts.containsKey(deploymentName); - } } diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java index 2d2705fb9c..31f69572e2 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java @@ -71,8 +71,7 @@ public class KeycloakExtension implements Extension { @Override public void initialize(final ExtensionContext context) { KeycloakLogger.ROOT_LOGGER.debug("Activating Keycloak Extension"); - final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION.getMajor(), - MGMT_API_VERSION.getMinor(), MGMT_API_VERSION.getMicro()); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION); ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); registration.registerSubModel(REALM_DEFINITION); diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java index 9489179b68..81ad1ce5db 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java @@ -19,16 +19,12 @@ package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.as.server.AbstractDeploymentChainStep; import org.jboss.as.server.DeploymentProcessorTarget; import org.jboss.as.server.deployment.Phase; import org.jboss.dmr.ModelNode; import org.jboss.as.server.deployment.DeploymentUnitProcessor; -import org.jboss.msc.service.ServiceController; - -import java.util.List; /** * The Keycloak subsystem add update handler. @@ -39,11 +35,8 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @Override - protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) { + protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model) { context.addStep(new AbstractDeploymentChainStep() { @Override protected void execute(DeploymentProcessorTarget processorTarget) { diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java index c3562c464a..975fc6c503 100644 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java @@ -17,10 +17,8 @@ package org.keycloak.subsystem.adapter.extension; -import org.jboss.as.controller.PathElement; import org.jboss.as.controller.ReloadRequiredRemoveStepHandler; import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; import org.jboss.as.controller.registry.ManagementResourceRegistration; diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java index df14e742f0..1651ddf651 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java @@ -21,11 +21,7 @@ import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.dmr.ModelNode; -import org.jboss.msc.service.ServiceController; - -import java.util.List; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; @@ -58,11 +54,8 @@ public final class RealmAddHandler extends AbstractAddStepHandler { } } - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addRealm(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java index dd1af54902..f8f5e41b10 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java @@ -23,8 +23,6 @@ import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; import org.jboss.dmr.ModelNode; -import java.util.List; - /** * Update an attribute on a realm. * @@ -32,10 +30,6 @@ import java.util.List; */ public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { - public RealmWriteAttributeHandler(List definitions) { - this(definitions.toArray(new AttributeDefinition[definitions.size()])); - } - public RealmWriteAttributeHandler(AttributeDefinition... definitions) { super(definitions); } diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java index 1008d5552e..8bf263df2e 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java @@ -21,11 +21,7 @@ import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.dmr.ModelNode; -import org.jboss.msc.service.ServiceController; - -import java.util.List; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; @@ -53,11 +49,8 @@ public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { } } - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addSecureDeployment(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java index 2865bc4341..92a1958a59 100755 --- a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java +++ b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java @@ -16,13 +16,10 @@ */ package org.keycloak.subsystem.adapter.extension; - import org.jboss.dmr.ModelNode; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.keycloak.subsystem.adapter.extension.SharedAttributeDefinitons; - /** * diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java index b1842b9dba..7f86d7981b 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java @@ -17,8 +17,6 @@ package org.keycloak.subsystem.server.extension; -import org.jboss.dmr.ModelNode; - import java.util.HashMap; import java.util.Map; @@ -38,9 +36,6 @@ public final class KeycloakAdapterConfigService { return INSTANCE; } - // keycloak-secured deployments - private final Map secureDeployments = new HashMap(); - // key=auth-server deployment name; value=web-context private final Map webContexts = new HashMap(); diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java index 3f431d2449..145b475653 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java @@ -70,8 +70,7 @@ public class KeycloakExtension implements Extension { @Override public void initialize(final ExtensionContext context) { KeycloakLogger.ROOT_LOGGER.debug("Activating Keycloak Extension"); - final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION.getMajor(), - MGMT_API_VERSION.getMinor(), MGMT_API_VERSION.getMicro()); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION); ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); registration.registerSubModel(AUTH_SERVER_DEFINITION); diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java index a49c6324a7..622c0102f4 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java @@ -18,18 +18,14 @@ package org.keycloak.subsystem.server.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.as.server.AbstractDeploymentChainStep; import org.jboss.as.server.DeploymentProcessorTarget; import org.jboss.as.server.deployment.Phase; import org.jboss.dmr.ModelNode; import org.jboss.as.server.deployment.DeploymentUnitProcessor; -import org.jboss.msc.service.ServiceController; import org.keycloak.subsystem.server.extension.authserver.KeycloakServerDeploymentProcessor; -import java.util.List; - /** * The Keycloak subsystem add update handler. * @@ -39,11 +35,8 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @Override - protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) { + protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model) { context.addStep(new AbstractDeploymentChainStep() { @Override protected void execute(DeploymentProcessorTarget processorTarget) { diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java index 00b5cf4b11..921c576dd6 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java @@ -124,17 +124,4 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader
  • -1) { - // Multiline content. Use the overloaded variant that staxmapper will format - writer.writeCharacters(content); - } else { - // Staxmapper will just output the chars without adding newlines if this is used - char[] chars = content.toCharArray(); - writer.writeCharacters(chars, 0, chars.length); - } - } - } diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java index 752a25888d..bf6053b60a 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java @@ -36,10 +36,4 @@ public interface KeycloakLogger extends BasicLogger { * A logger with a category of the package name. */ KeycloakLogger ROOT_LOGGER = Logger.getMessageLogger(KeycloakLogger.class, "org.jboss.keycloak"); - - @LogMessage(level = INFO) - @Message(value = "Keycloak subsystem override for deployment %s") - void deploymentSecured(String deployment); - - } diff --git a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java index af951c30a7..9f29a6f15b 100755 --- a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java @@ -16,14 +16,12 @@ */ package org.keycloak.subsystem.server.extension; - import java.io.IOException; import org.jboss.as.subsystem.test.AbstractSubsystemBaseTest; import org.jboss.dmr.ModelNode; import org.junit.Test; - /** * Tests all management expects for subsystem, parsing, marshaling, model definition and other * Here is an example that allows you a fine grained controller over what is tested and how. So it can give you ideas what can be done and tested.