From 1e1a05dcde9926ba0840182ef7b9641e3aa53689 Mon Sep 17 00:00:00 2001 From: Paul Ferraro Date: Thu, 12 Apr 2018 12:02:35 -0400 Subject: [PATCH] Convert Infinispan's transport channel capability's static requirement to a resource capability reference. --- .../controller/ResourceCapabilityReference.java | 13 ++++++++++++- .../JGroupsTransportResourceDefinition.java | 9 +++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/clustering/common/src/main/java/org/jboss/as/clustering/controller/ResourceCapabilityReference.java b/clustering/common/src/main/java/org/jboss/as/clustering/controller/ResourceCapabilityReference.java index 85c42c477ab5..9e13192b07e5 100644 --- a/clustering/common/src/main/java/org/jboss/as/clustering/controller/ResourceCapabilityReference.java +++ b/clustering/common/src/main/java/org/jboss/as/clustering/controller/ResourceCapabilityReference.java @@ -41,6 +41,16 @@ public class ResourceCapabilityReference extends AbstractCapabilityReference { private final Function requirementNameResolver; + /** + * Creates a new reference between the specified capability and the specified requirement + * @param capability the capability referencing the specified requirement + * @param requirement the requirement of the specified capability + * @param requirementNameResolver function for resolving the dynamic elements of the requirement name + */ + public ResourceCapabilityReference(Capability capability, Requirement requirement) { + this(capability, requirement, new SimpleCapabilityNameResolver()); + } + /** * Creates a new reference between the specified capability and the specified requirement * @param capability the capability referencing the specified requirement @@ -77,7 +87,8 @@ public void removeCapabilityRequirements(OperationContext context, Resource reso } private String getRequirementName(OperationContext context) { - return RuntimeCapability.buildDynamicCapabilityName(this.getBaseRequirementName(), this.requirementNameResolver.apply(context.getCurrentAddress())); + String[] parts = this.requirementNameResolver.apply(context.getCurrentAddress()); + return (parts.length > 0) ? RuntimeCapability.buildDynamicCapabilityName(this.getBaseRequirementName(), parts) : this.getBaseRequirementName(); } @Override diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java index 479d49dca426..d21747e6a73e 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java @@ -27,6 +27,7 @@ import org.jboss.as.clustering.controller.CapabilityReference; import org.jboss.as.clustering.controller.DynamicCapabilityNameResolver; +import org.jboss.as.clustering.controller.ResourceCapabilityReference; import org.jboss.as.clustering.controller.ResourceDescriptor; import org.jboss.as.clustering.controller.SimpleAliasEntry; import org.jboss.as.clustering.controller.UnaryRequirementCapability; @@ -91,12 +92,7 @@ public Class getType() { } enum Capability implements org.jboss.as.clustering.controller.Capability, UnaryOperator> { - TRANSPORT_CHANNEL(Requirement.CHANNEL) { - @Override - public RuntimeCapability.Builder apply(RuntimeCapability.Builder builder) { - return super.apply(builder).addRequirements(JGroupsDefaultRequirement.CHANNEL_FACTORY.getName()); - } - }, + TRANSPORT_CHANNEL(Requirement.CHANNEL), ; private final RuntimeCapability definition; @@ -295,6 +291,7 @@ public ResourceDescriptor apply(ResourceDescriptor descriptor) { .addAttributes(ExecutorAttribute.class) .addAttributes(DeprecatedAttribute.class) .addCapabilities(Capability.class) + .addResourceCapabilityReference(new ResourceCapabilityReference(Capability.TRANSPORT_CHANNEL, JGroupsDefaultRequirement.CHANNEL_FACTORY)) ; } }