From 3b40dc645b78b73f77728916d6a8cb89bfc76982 Mon Sep 17 00:00:00 2001 From: Radoslav Husar Date: Tue, 10 Jan 2017 22:49:37 +0100 Subject: [PATCH] WFLY-7874 Configuring SSLContext in mod_cluster filter fails with "Capability 'org.wildfly.undertow.mod_cluster_filter.modcluster' is unknown in context 'global'." --- .../undertow/AbstractHandlerDefinition.java | 14 +++----------- .../org/wildfly/extension/undertow/Handler.java | 2 -- .../extension/undertow/filters/Filter.java | 5 ----- .../undertow/filters/ModClusterDefinition.java | 15 ++++++++++++--- .../undertow/filters/ModClusterService.java | 4 ++-- 5 files changed, 17 insertions(+), 23 deletions(-) diff --git a/undertow/src/main/java/org/wildfly/extension/undertow/AbstractHandlerDefinition.java b/undertow/src/main/java/org/wildfly/extension/undertow/AbstractHandlerDefinition.java index 329e2455471c..a774bc390686 100644 --- a/undertow/src/main/java/org/wildfly/extension/undertow/AbstractHandlerDefinition.java +++ b/undertow/src/main/java/org/wildfly/extension/undertow/AbstractHandlerDefinition.java @@ -49,9 +49,6 @@ public abstract class AbstractHandlerDefinition extends PersistentResourceDefini new SensitivityClassification(UndertowExtension.SUBSYSTEM_NAME, "undertow-filter", false, false, false) ).wrapAsList(); - - protected final String name; - protected AbstractHandlerDefinition(final String name, AbstractAddStepHandler addHandler, AbstractRemoveStepHandler removeHandler) { this(name, Constants.HANDLER, addHandler, removeHandler); } @@ -60,17 +57,17 @@ protected AbstractHandlerDefinition(final String name) { this(name, Constants.HANDLER); } - protected AbstractHandlerDefinition(final String name, String prefix, AbstractAddStepHandler addHandler, AbstractRemoveStepHandler removeHandler) { super(PathElement.pathElement(name), UndertowExtension.getResolver(prefix, name), addHandler, removeHandler); - this.name = name; } protected AbstractHandlerDefinition(final String name, String prefix) { super(PathElement.pathElement(name), UndertowExtension.getResolver(prefix, name)); - this.name = name; } + protected AbstractHandlerDefinition(final Parameters parameters) { + super(parameters); + } @Override public void registerOperations(ManagementResourceRegistration resourceRegistration) { @@ -98,11 +95,6 @@ public Collection getAttributes() { return Collections.emptyList(); } - @Override - public String getXmlElementName() { - return this.name; - } - protected static class DefaultHandlerRemove extends AbstractRemoveStepHandler { private DefaultHandlerRemove() { diff --git a/undertow/src/main/java/org/wildfly/extension/undertow/Handler.java b/undertow/src/main/java/org/wildfly/extension/undertow/Handler.java index c7ce23effbf2..13925a417940 100644 --- a/undertow/src/main/java/org/wildfly/extension/undertow/Handler.java +++ b/undertow/src/main/java/org/wildfly/extension/undertow/Handler.java @@ -35,8 +35,6 @@ public interface Handler { Collection getAttributes(); - String getXmlElementName(); - Class getHandlerClass(); HttpHandler createHttpHandler(final Predicate predicate, final ModelNode model, final HttpHandler next); diff --git a/undertow/src/main/java/org/wildfly/extension/undertow/filters/Filter.java b/undertow/src/main/java/org/wildfly/extension/undertow/filters/Filter.java index 7be745348a1d..8d20ae6eabbb 100644 --- a/undertow/src/main/java/org/wildfly/extension/undertow/filters/Filter.java +++ b/undertow/src/main/java/org/wildfly/extension/undertow/filters/Filter.java @@ -58,11 +58,6 @@ public void registerOperations(ManagementResourceRegistration resourceRegistrati } - @Override - public String getXmlElementName() { - return name; - } - public HttpHandler createHttpHandler(final Predicate predicate, final ModelNode model, HttpHandler next) { List attributes = new ArrayList<>(getAttributes()); HttpHandler handler = createHandler(getHandlerClass(), model, attributes, next); diff --git a/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterDefinition.java b/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterDefinition.java index 23f0781c4585..c0985f65beda 100644 --- a/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterDefinition.java +++ b/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterDefinition.java @@ -36,6 +36,7 @@ import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.access.management.SensitiveTargetAccessConstraintDefinition; +import org.jboss.as.controller.capability.RuntimeCapability; import org.jboss.as.controller.client.helpers.MeasurementUnit; import org.jboss.as.controller.operations.validation.EnumValidator; import org.jboss.as.controller.operations.validation.StringLengthValidator; @@ -47,12 +48,14 @@ import org.wildfly.extension.undertow.AbstractHandlerDefinition; import org.wildfly.extension.undertow.Constants; import org.wildfly.extension.undertow.PredicateValidator; +import org.wildfly.extension.undertow.UndertowExtension; import org.wildfly.extension.undertow.UndertowService; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import static org.jboss.as.controller.PathElement.pathElement; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR; /** @@ -64,7 +67,9 @@ public class ModClusterDefinition extends AbstractHandlerDefinition { private static final String MOD_CLUSTER_FILTER_CAPABILITY_NAME = "org.wildfly.undertow.mod_cluster_filter"; - static final String SSL_CONTEXT_CAPABILITY = "org.wildfly.security.ssl-context"; + public static final RuntimeCapability MOD_CLUSTER_FILTER_CAPABILITY = RuntimeCapability.Builder.of(MOD_CLUSTER_FILTER_CAPABILITY_NAME, true, Void.class).build(); + + static final String SSL_CONTEXT_CAPABILITY_NAME = "org.wildfly.security.ssl-context"; public static final AttributeDefinition MANAGEMENT_SOCKET_BINDING = new SimpleAttributeDefinitionBuilder(Constants.MANAGEMENT_SOCKET_BINDING, ModelType.STRING) .setAllowExpression(true) @@ -186,7 +191,7 @@ public class ModClusterDefinition extends AbstractHandlerDefinition { public static final SimpleAttributeDefinition SSL_CONTEXT = new SimpleAttributeDefinitionBuilder(Constants.SSL_CONTEXT, ModelType.STRING, true) .setAlternatives(Constants.SECURITY_REALM) - .setCapabilityReference(SSL_CONTEXT_CAPABILITY, MOD_CLUSTER_FILTER_CAPABILITY_NAME, true) + .setCapabilityReference(SSL_CONTEXT_CAPABILITY_NAME, MOD_CLUSTER_FILTER_CAPABILITY_NAME, true) .setRestartAllServices() .setValidator(new StringLengthValidator(1)) .build(); @@ -274,7 +279,11 @@ public class ModClusterDefinition extends AbstractHandlerDefinition { public static final ModClusterDefinition INSTANCE = new ModClusterDefinition(); private ModClusterDefinition() { - super(Constants.MOD_CLUSTER, new ModClusterAdd(), new ServiceRemoveStepHandler(UndertowService.FILTER, new ModClusterAdd())); + super(new Parameters(pathElement(Constants.MOD_CLUSTER), UndertowExtension.getResolver(Constants.HANDLER, Constants.MOD_CLUSTER)) + .setAddHandler(new ModClusterAdd()) + .setRemoveHandler(new ServiceRemoveStepHandler(UndertowService.FILTER, new ModClusterAdd())) + .setCapabilities(MOD_CLUSTER_FILTER_CAPABILITY) + ); } @Override diff --git a/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterService.java b/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterService.java index 575b734d817d..b71b9d656fba 100644 --- a/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterService.java +++ b/undertow/src/main/java/org/wildfly/extension/undertow/filters/ModClusterService.java @@ -1,6 +1,6 @@ package org.wildfly.extension.undertow.filters; -import static org.wildfly.extension.undertow.filters.ModClusterDefinition.SSL_CONTEXT_CAPABILITY; +import static org.wildfly.extension.undertow.filters.ModClusterDefinition.SSL_CONTEXT_CAPABILITY_NAME; import io.undertow.Handlers; import io.undertow.UndertowOptions; import io.undertow.client.UndertowClient; @@ -278,7 +278,7 @@ static ServiceController install(String name, ServiceTarget servi serviceBuilder.addDependency(IOServices.WORKER.append(ModClusterDefinition.WORKER.resolveModelAttribute(operationContext, model).asString()), XnioWorker.class, service.workerInjectedValue); if (sslContext.isDefined()) { - serviceBuilder.addDependency(operationContext.getCapabilityServiceName(SSL_CONTEXT_CAPABILITY, sslContext.asString(), SSLContext.class), SSLContext.class, service.sslContext); + serviceBuilder.addDependency(operationContext.getCapabilityServiceName(SSL_CONTEXT_CAPABILITY_NAME, sslContext.asString(), SSLContext.class), SSLContext.class, service.sslContext); } if(securityRealm.isDefined()) { SecurityRealm.ServiceUtil.addDependency(serviceBuilder, service.securityRealm, securityRealm.asString(), false);