diff --git a/clustering/common/src/main/java/org/jboss/as/clustering/function/Consumers.java b/clustering/common/src/main/java/org/jboss/as/clustering/function/Consumers.java index e8c2f0008138..2f8e4a10d19b 100644 --- a/clustering/common/src/main/java/org/jboss/as/clustering/function/Consumers.java +++ b/clustering/common/src/main/java/org/jboss/as/clustering/function/Consumers.java @@ -46,6 +46,10 @@ public static Consumer close() { }; } + public static Consumer empty() { + return value -> {}; + } + private Consumers() { // Hide } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryKeyedJDBCStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryKeyedJDBCStoreResourceDefinition.java index cb79285c5bbe..62d7a7e0b721 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryKeyedJDBCStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryKeyedJDBCStoreResourceDefinition.java @@ -27,11 +27,6 @@ import java.util.List; import org.jboss.as.clustering.controller.Operations; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; -import org.jboss.as.clustering.controller.SimpleAliasEntry; -import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.ModelVersion; @@ -44,7 +39,6 @@ import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.operations.common.Util; import org.jboss.as.controller.operations.global.ReadResourceHandler; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.registry.Resource; import org.jboss.as.controller.transform.ResourceTransformationContext; import org.jboss.as.controller.transform.ResourceTransformer; @@ -122,7 +116,16 @@ public void transformResource(ResourceTransformationContext context, PathAddress } BinaryKeyedJDBCStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { - super(PATH, new InfinispanResourceDescriptionResolver(PATH, pathElement("jdbc"), WILDCARD_PATH), allowRuntimeOnlyRegistration); + super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, pathElement("jdbc"), WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor + .addExtraParameters(DeprecatedAttribute.class) + .addRequiredChildren(BinaryTableResourceDefinition.PATH) + // Translate deprecated TABLE attribute into separate add table operation + .addOperationTranslator(new TableAttributeTranslator(DeprecatedAttribute.TABLE, BinaryTableResourceDefinition.PATH)) + , address -> new BinaryKeyedJDBCStoreBuilder(address.getParent()), registration -> { + registration.registerReadWriteAttribute(DeprecatedAttribute.TABLE.getDefinition(), LEGACY_READ_TABLE_HANDLER, LEGACY_WRITE_TABLE_HANDLER); + + new BinaryTableResourceDefinition().register(registration); + }); } static final OperationStepHandler LEGACY_READ_TABLE_HANDLER = new OperationStepHandler() { @@ -148,31 +151,4 @@ public void execute(OperationContext context, ModelNode operation) throws Operat } } }; - - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - parentRegistration.registerAlias(LEGACY_PATH, new SimpleAliasEntry(registration)); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(JDBCStoreResourceDefinition.Attribute.class) - .addAttributes(StoreResourceDefinition.Attribute.class) - .addExtraParameters(DeprecatedAttribute.class) - .addCapabilities(Capability.class) - .addRequiredChildren(BinaryTableResourceDefinition.PATH) - .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) - // Translate deprecated DATASOURCE attribute to DATA_SOURCE attribute - .addAttributeTranslation(JDBCStoreResourceDefinition.DeprecatedAttribute.DATASOURCE, JDBCStoreResourceDefinition.Attribute.DATA_SOURCE, JDBCStoreResourceDefinition.POOL_NAME_TO_JNDI_NAME_TRANSLATOR, JDBCStoreResourceDefinition.JNDI_NAME_TO_POOL_NAME_TRANSLATOR) - // Translate deprecated TABLE attribute into separate add table operation - .addOperationTranslator(new TableAttributeTranslator(DeprecatedAttribute.TABLE, BinaryTableResourceDefinition.PATH)) - ; - ResourceServiceHandler handler = new SimpleResourceServiceHandler<>(address -> new BinaryKeyedJDBCStoreBuilder(address.getParent())); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - registration.registerReadWriteAttribute(DeprecatedAttribute.TABLE.getDefinition(), LEGACY_READ_TABLE_HANDLER, LEGACY_WRITE_TABLE_HANDLER); - - new BinaryTableResourceDefinition().register(registration); - - super.register(registration); - } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java index 782a2eafbd19..ed4dd355dffb 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java @@ -26,6 +26,7 @@ import java.util.EnumSet; import java.util.Map; import java.util.NoSuchElementException; +import java.util.function.Consumer; import org.infinispan.configuration.cache.Index; import org.jboss.as.clustering.controller.AttributeMarshallers; @@ -34,6 +35,9 @@ import org.jboss.as.clustering.controller.CapabilityProvider; import org.jboss.as.clustering.controller.ChildResourceDefinition; import org.jboss.as.clustering.controller.MetricHandler; +import org.jboss.as.clustering.controller.ResourceDescriptor; +import org.jboss.as.clustering.controller.ResourceServiceHandler; +import org.jboss.as.clustering.controller.SimpleResourceRegistration; import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder; import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder; @@ -210,33 +214,49 @@ public void transformResource(ResourceTransformationContext context, PathAddress CustomStoreResourceDefinition.buildTransformation(version, builder); } - private final PathManager pathManager; - final boolean allowRuntimeOnlyRegistration; + private final Consumer descriptorConfigurator; + private final ResourceServiceHandler handler; + private final Consumer registrationConfigurator; - public CacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration) { + public CacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration, Consumer descriptorConfigurator, CacheServiceHandler handler, Consumer registrationConfigurator) { super(path, new InfinispanResourceDescriptionResolver(path, PathElement.pathElement("cache"))); - this.pathManager = pathManager; - this.allowRuntimeOnlyRegistration = allowRuntimeOnlyRegistration; + this.descriptorConfigurator = descriptorConfigurator.andThen(descriptor -> descriptor + .addAttributes(Attribute.class) + .addAttributes(DeprecatedAttribute.class) + .addCapabilities(Capability.class) + .addCapabilities(CLUSTERING_CAPABILITIES.values()) + .addRequiredChildren(EvictionResourceDefinition.PATH, ExpirationResourceDefinition.PATH, LockingResourceDefinition.PATH, TransactionResourceDefinition.PATH) + .addRequiredSingletonChildren(NoStoreResourceDefinition.PATH) + ); + this.handler = handler; + this.registrationConfigurator = registrationConfigurator.andThen(registration -> { + if (allowRuntimeOnlyRegistration) { + new MetricHandler<>(new CacheMetricExecutor(), CacheMetric.class).register(registration); + } + + new EvictionResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new ExpirationResourceDefinition().register(registration); + new LockingResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new TransactionResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + + new NoStoreResourceDefinition().register(registration); + new CustomStoreResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new FileStoreResourceDefinition(pathManager, allowRuntimeOnlyRegistration).register(registration); + new BinaryKeyedJDBCStoreResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new MixedKeyedJDBCStoreResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new StringKeyedJDBCStoreResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new RemoteStoreResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + }); } @Override - public void register(ManagementResourceRegistration registration) { + public void register(ManagementResourceRegistration parentRegistration) { + ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - if (this.allowRuntimeOnlyRegistration) { - new MetricHandler<>(new CacheMetricExecutor(), CacheMetric.class).register(registration); - } + ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()); + this.descriptorConfigurator.accept(descriptor); + new SimpleResourceRegistration(descriptor, this.handler).register(registration); - new EvictionResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new ExpirationResourceDefinition().register(registration); - new LockingResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new TransactionResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - - new NoStoreResourceDefinition().register(registration); - new CustomStoreResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new FileStoreResourceDefinition(this.pathManager, this.allowRuntimeOnlyRegistration).register(registration); - new BinaryKeyedJDBCStoreResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new MixedKeyedJDBCStoreResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new StringKeyedJDBCStoreResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new RemoteStoreResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); + this.registrationConfigurator.accept(registration); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java index 3022a5de8a6a..46d42b45112d 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java @@ -22,7 +22,10 @@ package org.jboss.as.clustering.infinispan.subsystem; +import java.util.function.Consumer; + import org.jboss.as.clustering.controller.MetricHandler; +import org.jboss.as.clustering.controller.ResourceDescriptor; import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder; import org.jboss.as.controller.AttributeDefinition; @@ -103,17 +106,14 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc CacheResourceDefinition.buildTransformation(version, builder); } - ClusteredCacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(path, pathManager, allowRuntimeOnlyRegistration); - } - - @Override - public void register(ManagementResourceRegistration registration) { - - if (this.allowRuntimeOnlyRegistration) { - new MetricHandler<>(new ClusteredCacheMetricExecutor(), ClusteredCacheMetric.class).register(registration); - } - - super.register(registration); + ClusteredCacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration, Consumer descriptorConfigurator, ClusteredCacheServiceHandler handler, Consumer registrationConfigurator) { + super(path, pathManager, allowRuntimeOnlyRegistration, descriptorConfigurator.andThen(descriptor -> descriptor + .addAttributes(Attribute.class) + .addAttributes(DeprecatedAttribute.class) + ), handler, registrationConfigurator.andThen(registration -> { + if (allowRuntimeOnlyRegistration) { + new MetricHandler<>(new ClusteredCacheMetricExecutor(), ClusteredCacheMetric.class).register(registration); + } + })); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CustomStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CustomStoreResourceDefinition.java index e762e078fa00..1da243c1349a 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CustomStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CustomStoreResourceDefinition.java @@ -22,21 +22,16 @@ package org.jboss.as.clustering.infinispan.subsystem; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; -import org.jboss.as.clustering.controller.SimpleAliasEntry; -import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyAddOperationTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer; +import org.jboss.as.clustering.function.Consumers; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathElement; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.registry.AttributeAccess; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; import org.jboss.dmr.ModelType; @@ -83,22 +78,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc } CustomStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { - super(PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration); - } - - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - parentRegistration.registerAlias(LEGACY_PATH, new SimpleAliasEntry(registration)); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(Attribute.class) - .addAttributes(StoreResourceDefinition.Attribute.class) - .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new SimpleResourceServiceHandler<>(address -> new CustomStoreBuilder(address.getParent())); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - super.register(registration); + super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor.addAttributes(Attribute.class), address -> new CustomStoreBuilder(address.getParent()), Consumers.empty()); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/DistributedCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/DistributedCacheResourceDefinition.java index 183634f6dfc1..fc51215c5ebf 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/DistributedCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/DistributedCacheResourceDefinition.java @@ -22,9 +22,6 @@ package org.jboss.as.clustering.infinispan.subsystem; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; import org.jboss.as.clustering.controller.validation.DoubleRangeValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.IntRangeValidatorBuilder; @@ -36,7 +33,6 @@ import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.client.helpers.MeasurementUnit; import org.jboss.as.controller.registry.AttributeAccess; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.services.path.PathManager; import org.jboss.as.controller.transform.description.AttributeConverter; import org.jboss.as.controller.transform.description.DiscardAttributeChecker; @@ -111,29 +107,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc } DistributedCacheResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration); - } - - @SuppressWarnings("deprecation") - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(Attribute.class) - .addAttributes(ClusteredCacheResourceDefinition.Attribute.class) - .addAttributes(ClusteredCacheResourceDefinition.DeprecatedAttribute.class) - .addAttributes(CacheResourceDefinition.Attribute.class) - .addAttributes(CacheResourceDefinition.DeprecatedAttribute.class) - .addCapabilities(CacheResourceDefinition.Capability.class) - .addCapabilities(CacheResourceDefinition.CLUSTERING_CAPABILITIES.values()) - .addRequiredChildren(EvictionResourceDefinition.PATH, ExpirationResourceDefinition.PATH, LockingResourceDefinition.PATH, TransactionResourceDefinition.PATH) - .addRequiredChildren(PartitionHandlingResourceDefinition.PATH, StateTransferResourceDefinition.PATH, BackupForResourceDefinition.PATH, BackupsResourceDefinition.PATH) - .addRequiredSingletonChildren(NoStoreResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new DistributedCacheServiceHandler(); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - super.register(registration); + super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration, descriptor -> descriptor.addAttributes(Attribute.class), new DistributedCacheServiceHandler()); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java index 84f759abba11..76ffe2e23db0 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java @@ -22,11 +22,6 @@ package org.jboss.as.clustering.infinispan.subsystem; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; -import org.jboss.as.clustering.controller.SimpleAliasEntry; -import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyAddOperationTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer; @@ -36,7 +31,6 @@ import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.registry.AttributeAccess; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.services.path.PathManager; import org.jboss.as.controller.services.path.ResolvePathHandler; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; @@ -88,34 +82,15 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc StoreResourceDefinition.buildTransformation(version, builder); } - private final PathManager pathManager; - FileStoreResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration); - this.pathManager = pathManager; - } - - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - parentRegistration.registerAlias(LEGACY_PATH, new SimpleAliasEntry(registration)); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(Attribute.class) - .addAttributes(StoreResourceDefinition.Attribute.class) - .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new SimpleResourceServiceHandler<>(address -> new FileStoreBuilder(address.getParent())); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - if (this.pathManager != null) { - ResolvePathHandler pathHandler = ResolvePathHandler.Builder.of(this.pathManager) - .setPathAttribute(Attribute.RELATIVE_PATH.getDefinition()) - .setRelativeToAttribute(Attribute.RELATIVE_TO.getDefinition()) - .build(); - registration.registerOperationHandler(pathHandler.getOperationDefinition(), pathHandler); - } - - super.register(registration); + super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor.addAttributes(Attribute.class), address -> new FileStoreBuilder(address.getParent()), registration -> { + if (pathManager != null) { + ResolvePathHandler pathHandler = ResolvePathHandler.Builder.of(pathManager) + .setPathAttribute(Attribute.RELATIVE_PATH.getDefinition()) + .setRelativeToAttribute(Attribute.RELATIVE_TO.getDefinition()) + .build(); + registration.registerOperationHandler(pathHandler.getOperationDefinition(), pathHandler); + } + }); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/InvalidationCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/InvalidationCacheResourceDefinition.java index 092742103fd7..c698f5578432 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/InvalidationCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/InvalidationCacheResourceDefinition.java @@ -22,12 +22,9 @@ package org.jboss.as.clustering.infinispan.subsystem; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; +import org.jboss.as.clustering.function.Consumers; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.services.path.PathManager; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; @@ -50,27 +47,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc } InvalidationCacheResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration); - } - - @SuppressWarnings("deprecation") - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(ClusteredCacheResourceDefinition.Attribute.class) - .addAttributes(ClusteredCacheResourceDefinition.DeprecatedAttribute.class) - .addAttributes(CacheResourceDefinition.Attribute.class) - .addAttributes(CacheResourceDefinition.DeprecatedAttribute.class) - .addCapabilities(CacheResourceDefinition.Capability.class) - .addCapabilities(CacheResourceDefinition.CLUSTERING_CAPABILITIES.values()) - .addRequiredChildren(EvictionResourceDefinition.PATH, ExpirationResourceDefinition.PATH, LockingResourceDefinition.PATH, TransactionResourceDefinition.PATH) - .addRequiredSingletonChildren(NoStoreResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new InvalidationCacheServiceHandler(); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - super.register(registration); + super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration, Consumers.empty(), new InvalidationCacheServiceHandler(), Consumers.empty()); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java index fc714293c445..2008aa42f43f 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java @@ -23,11 +23,15 @@ package org.jboss.as.clustering.infinispan.subsystem; import java.util.Arrays; +import java.util.function.Consumer; +import org.infinispan.configuration.cache.PersistenceConfiguration; import org.infinispan.persistence.jdbc.DatabaseType; import org.jboss.as.clustering.controller.AttributeValueTranslator; import org.jboss.as.clustering.controller.CapabilityReference; import org.jboss.as.clustering.controller.CommonUnaryRequirement; +import org.jboss.as.clustering.controller.ResourceDescriptor; +import org.jboss.as.clustering.controller.ResourceServiceBuilderFactory; import org.jboss.as.clustering.controller.transform.LegacyPropertyAddOperationTransformer; import org.jboss.as.clustering.controller.transform.SimpleAttributeConverter; import org.jboss.as.clustering.controller.transform.SimpleAttributeConverter.Converter; @@ -48,6 +52,7 @@ import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.operations.common.Util; import org.jboss.as.controller.registry.AttributeAccess; +import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.registry.Resource; import org.jboss.as.controller.transform.TransformationContext; import org.jboss.as.controller.transform.description.DiscardAttributeChecker; @@ -243,7 +248,12 @@ public ModelNode translate(OperationContext context, ModelNode value) throws Ope } }; - JDBCStoreResourceDefinition(PathElement path, InfinispanResourceDescriptionResolver resolver, boolean allowRuntimeOnlyRegistration) { - super(path, resolver, allowRuntimeOnlyRegistration); + JDBCStoreResourceDefinition(PathElement path, PathElement legacyPath, InfinispanResourceDescriptionResolver resolver, boolean allowRuntimeOnlyRegistration, Consumer configurator, ResourceServiceBuilderFactory builderFactory, Consumer registrationConfigurator) { + super(path, legacyPath, resolver, allowRuntimeOnlyRegistration, configurator.andThen(descriptor -> descriptor + .addAttributes(Attribute.class) + .addCapabilities(Capability.class) + // Translate deprecated DATASOURCE attribute to DATA_SOURCE attribute + .addAttributeTranslation(DeprecatedAttribute.DATASOURCE, Attribute.DATA_SOURCE, POOL_NAME_TO_JNDI_NAME_TRANSLATOR, JNDI_NAME_TO_POOL_NAME_TRANSLATOR) + ), builderFactory, registrationConfigurator); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LocalCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LocalCacheResourceDefinition.java index 07cae585c31e..b0c0c0265360 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LocalCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LocalCacheResourceDefinition.java @@ -22,12 +22,9 @@ package org.jboss.as.clustering.infinispan.subsystem; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; +import org.jboss.as.clustering.function.Consumers; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.services.path.PathManager; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; @@ -50,25 +47,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc } LocalCacheResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration); - } - - @SuppressWarnings("deprecation") - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(CacheResourceDefinition.Attribute.class) - .addAttributes(CacheResourceDefinition.DeprecatedAttribute.class) - .addCapabilities(CacheResourceDefinition.Capability.class) - .addCapabilities(CacheResourceDefinition.CLUSTERING_CAPABILITIES.values()) - .addRequiredChildren(EvictionResourceDefinition.PATH, ExpirationResourceDefinition.PATH, LockingResourceDefinition.PATH, TransactionResourceDefinition.PATH) - .addRequiredSingletonChildren(NoStoreResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new LocalCacheServiceHandler(); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - super.register(registration); + super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration, Consumers.empty(), new LocalCacheServiceHandler(), Consumers.empty()); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MixedKeyedJDBCStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MixedKeyedJDBCStoreResourceDefinition.java index 319157395222..a171ac5d11ba 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MixedKeyedJDBCStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MixedKeyedJDBCStoreResourceDefinition.java @@ -23,11 +23,6 @@ package org.jboss.as.clustering.infinispan.subsystem; import org.jboss.as.clustering.controller.Operations; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; -import org.jboss.as.clustering.controller.SimpleAliasEntry; -import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyMapGetOperationTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyWriteOperationTransformer; @@ -38,7 +33,6 @@ import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.PathElement; import org.jboss.as.controller.operations.global.MapOperations; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.registry.Resource; import org.jboss.as.controller.transform.ResourceTransformationContext; import org.jboss.as.controller.transform.ResourceTransformer; @@ -121,37 +115,19 @@ public void transformResource(ResourceTransformationContext context, PathAddress } MixedKeyedJDBCStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { - super(PATH, new InfinispanResourceDescriptionResolver(PATH, pathElement("jdbc"), WILDCARD_PATH), allowRuntimeOnlyRegistration); - } - - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - parentRegistration.registerAlias(LEGACY_PATH, new SimpleAliasEntry(registration)); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(JDBCStoreResourceDefinition.Attribute.class) - .addAttributes(StoreResourceDefinition.Attribute.class) + super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, pathElement("jdbc"), WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor .addExtraParameters(DeprecatedAttribute.class) - .addCapabilities(Capability.class) .addRequiredChildren(BinaryTableResourceDefinition.PATH, StringTableResourceDefinition.PATH) - .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) - // Translate deprecated DATASOURCE attribute to DATA_SOURCE attribute - .addAttributeTranslation(JDBCStoreResourceDefinition.DeprecatedAttribute.DATASOURCE, JDBCStoreResourceDefinition.Attribute.DATA_SOURCE, JDBCStoreResourceDefinition.POOL_NAME_TO_JNDI_NAME_TRANSLATOR, JDBCStoreResourceDefinition.JNDI_NAME_TO_POOL_NAME_TRANSLATOR) // Translate deprecated BINARY_TABLE attribute into separate add table operation .addOperationTranslator(new TableAttributeTranslator(DeprecatedAttribute.BINARY_TABLE, BinaryTableResourceDefinition.PATH)) // Translate deprecated STRING_TABLE attribute into separate add table operation .addOperationTranslator(new TableAttributeTranslator(DeprecatedAttribute.STRING_TABLE, StringTableResourceDefinition.PATH)) - ; - ResourceServiceHandler handler = new SimpleResourceServiceHandler<>(address -> new MixedKeyedJDBCStoreBuilder(address.getParent())); - new SimpleResourceRegistration(descriptor, handler).register(registration); + , address -> new MixedKeyedJDBCStoreBuilder(address.getParent()), registration -> { + registration.registerReadWriteAttribute(DeprecatedAttribute.BINARY_TABLE.getDefinition(), BinaryKeyedJDBCStoreResourceDefinition.LEGACY_READ_TABLE_HANDLER, BinaryKeyedJDBCStoreResourceDefinition.LEGACY_WRITE_TABLE_HANDLER); + registration.registerReadWriteAttribute(DeprecatedAttribute.STRING_TABLE.getDefinition(), StringKeyedJDBCStoreResourceDefinition.LEGACY_READ_TABLE_HANDLER, StringKeyedJDBCStoreResourceDefinition.LEGACY_WRITE_TABLE_HANDLER); - registration.registerReadWriteAttribute(DeprecatedAttribute.BINARY_TABLE.getDefinition(), BinaryKeyedJDBCStoreResourceDefinition.LEGACY_READ_TABLE_HANDLER, BinaryKeyedJDBCStoreResourceDefinition.LEGACY_WRITE_TABLE_HANDLER); - registration.registerReadWriteAttribute(DeprecatedAttribute.STRING_TABLE.getDefinition(), StringKeyedJDBCStoreResourceDefinition.LEGACY_READ_TABLE_HANDLER, StringKeyedJDBCStoreResourceDefinition.LEGACY_WRITE_TABLE_HANDLER); - - new BinaryTableResourceDefinition().register(registration); - new StringTableResourceDefinition().register(registration); - - super.register(registration); + new BinaryTableResourceDefinition().register(registration); + new StringTableResourceDefinition().register(registration); + }); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/RemoteStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/RemoteStoreResourceDefinition.java index 9d7937d029c5..cc21bc49b50f 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/RemoteStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/RemoteStoreResourceDefinition.java @@ -28,14 +28,10 @@ import org.jboss.as.clustering.controller.AttributeParsers; import org.jboss.as.clustering.controller.CapabilityReference; import org.jboss.as.clustering.controller.CommonUnaryRequirement; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; -import org.jboss.as.clustering.controller.SimpleAliasEntry; -import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyAddOperationTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer; +import org.jboss.as.clustering.function.Consumers; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathAddress; @@ -46,7 +42,6 @@ import org.jboss.as.controller.client.helpers.MeasurementUnit; import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.registry.AttributeAccess; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.transform.TransformationContext; import org.jboss.as.controller.transform.description.AttributeConverter; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; @@ -154,23 +149,9 @@ protected void convertAttribute(PathAddress address, String attributeName, Model } RemoteStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { - super(PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration); - } - - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - parentRegistration.registerAlias(LEGACY_PATH, new SimpleAliasEntry(registration)); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) + super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor .addAttributes(Attribute.class) - .addAttributes(StoreResourceDefinition.Attribute.class) .addCapabilities(Capability.class) - .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new SimpleResourceServiceHandler<>(address -> new RemoteStoreBuilder(address.getParent())); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - super.register(registration); + , address -> new RemoteStoreBuilder(address.getParent()), Consumers.empty()); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ReplicatedCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ReplicatedCacheResourceDefinition.java index ab5e28dcd1e3..5766aeef95ca 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ReplicatedCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ReplicatedCacheResourceDefinition.java @@ -22,12 +22,9 @@ package org.jboss.as.clustering.infinispan.subsystem; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; +import org.jboss.as.clustering.function.Consumers; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.services.path.PathManager; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; @@ -50,28 +47,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc } ReplicatedCacheResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration); - } - - @SuppressWarnings("deprecation") - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(ClusteredCacheResourceDefinition.Attribute.class) - .addAttributes(ClusteredCacheResourceDefinition.DeprecatedAttribute.class) - .addAttributes(CacheResourceDefinition.Attribute.class) - .addAttributes(CacheResourceDefinition.DeprecatedAttribute.class) - .addCapabilities(CacheResourceDefinition.Capability.class) - .addCapabilities(CacheResourceDefinition.CLUSTERING_CAPABILITIES.values()) - .addRequiredChildren(EvictionResourceDefinition.PATH, ExpirationResourceDefinition.PATH, LockingResourceDefinition.PATH, TransactionResourceDefinition.PATH) - .addRequiredChildren(PartitionHandlingResourceDefinition.PATH, StateTransferResourceDefinition.PATH, BackupForResourceDefinition.PATH, BackupsResourceDefinition.PATH) - .addRequiredSingletonChildren(NoStoreResourceDefinition.PATH) - ; - ResourceServiceHandler handler = new ReplicatedCacheServiceHandler(); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - super.register(registration); + super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration, Consumers.empty(), new ReplicatedCacheServiceHandler()); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/SharedStateCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/SharedStateCacheResourceDefinition.java index a58b88b8ca22..cb125281ce25 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/SharedStateCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/SharedStateCacheResourceDefinition.java @@ -22,10 +22,12 @@ package org.jboss.as.clustering.infinispan.subsystem; +import java.util.function.Consumer; + +import org.jboss.as.clustering.controller.ResourceDescriptor; import org.jboss.as.clustering.controller.transform.RequiredChildResourceDiscardPolicy; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.services.path.PathManager; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; @@ -60,18 +62,14 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc ClusteredCacheResourceDefinition.buildTransformation(version, builder); } - SharedStateCacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration) { - super(path, pathManager, allowRuntimeOnlyRegistration); - } - - @Override - public void register(ManagementResourceRegistration registration) { - - new PartitionHandlingResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new StateTransferResourceDefinition().register(registration); - new BackupsResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); - new BackupForResourceDefinition().register(registration); - - super.register(registration); + SharedStateCacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration, Consumer descriptorConfigurator, ClusteredCacheServiceHandler handler) { + super(path, pathManager, allowRuntimeOnlyRegistration, descriptorConfigurator.andThen(descriptor -> descriptor + .addRequiredChildren(PartitionHandlingResourceDefinition.PATH, StateTransferResourceDefinition.PATH, BackupForResourceDefinition.PATH, BackupsResourceDefinition.PATH) + ), handler, registration -> { + new PartitionHandlingResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new StateTransferResourceDefinition().register(registration); + new BackupsResourceDefinition(allowRuntimeOnlyRegistration).register(registration); + new BackupForResourceDefinition().register(registration); + }); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java index b274124da0ae..9d80da17ff74 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java @@ -21,11 +21,20 @@ */ package org.jboss.as.clustering.infinispan.subsystem; +import java.util.function.Consumer; + +import org.infinispan.configuration.cache.PersistenceConfiguration; import org.jboss.as.clustering.controller.AttributeMarshallers; import org.jboss.as.clustering.controller.AttributeParsers; import org.jboss.as.clustering.controller.ChildResourceDefinition; import org.jboss.as.clustering.controller.MetricHandler; import org.jboss.as.clustering.controller.Operations; +import org.jboss.as.clustering.controller.ResourceDescriptor; +import org.jboss.as.clustering.controller.ResourceServiceBuilderFactory; +import org.jboss.as.clustering.controller.ResourceServiceHandler; +import org.jboss.as.clustering.controller.SimpleAliasEntry; +import org.jboss.as.clustering.controller.SimpleResourceRegistration; +import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyMapGetOperationTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyWriteOperationTransformer; import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer; @@ -91,8 +100,6 @@ public AttributeDefinition getDefinition() { } } - private final boolean allowRuntimeOnlyRegistration; - static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder builder) { if (InfinispanModel.VERSION_4_0_0.requiresTransformation(version)) { builder.discardChildResource(StoreWriteThroughResourceDefinition.PATH); @@ -112,22 +119,43 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc StoreWriteBehindResourceDefinition.buildTransformation(version, builder); } - StoreResourceDefinition(PathElement path, ResourceDescriptionResolver resolver, boolean allowRuntimeOnlyRegistration) { + private final PathElement legacyPath; + private final Consumer descriptorConfigurator; + private final ResourceServiceHandler handler; + private final Consumer registrationConfigurator; + + @SuppressWarnings("deprecation") + StoreResourceDefinition(PathElement path, PathElement legacyPath, ResourceDescriptionResolver resolver, boolean allowRuntimeOnlyRegistration, Consumer descriptorConfigurator, ResourceServiceBuilderFactory builderFactory, Consumer registrationConfigurator) { super(path, resolver); - this.allowRuntimeOnlyRegistration = allowRuntimeOnlyRegistration; + this.legacyPath = legacyPath; + this.descriptorConfigurator = descriptorConfigurator.andThen(descriptor -> descriptor + .addAttributes(StoreResourceDefinition.Attribute.class) + .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) + ); + this.handler = new SimpleResourceServiceHandler<>(builderFactory); + this.registrationConfigurator = registrationConfigurator.andThen(registration -> { + if (allowRuntimeOnlyRegistration) { + new MetricHandler<>(new StoreMetricExecutor(), StoreMetric.class).register(registration); + } + + new StoreWriteBehindResourceDefinition().register(registration); + new StoreWriteThroughResourceDefinition().register(registration); + + new StorePropertyResourceDefinition().register(registration); + }); } - @SuppressWarnings("deprecation") @Override - public void register(ManagementResourceRegistration registration) { - - if (this.allowRuntimeOnlyRegistration) { - new MetricHandler<>(new StoreMetricExecutor(), StoreMetric.class).register(registration); + public void register(ManagementResourceRegistration parentRegistration) { + ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); + if (this.legacyPath != null) { + parentRegistration.registerAlias(this.legacyPath, new SimpleAliasEntry(registration)); } - new StoreWriteBehindResourceDefinition().register(registration); - new StoreWriteThroughResourceDefinition().register(registration); + ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()); + this.descriptorConfigurator.accept(descriptor); + new SimpleResourceRegistration(descriptor, this.handler).register(registration); - new StorePropertyResourceDefinition().register(registration); + this.registrationConfigurator.accept(registration); } } diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StringKeyedJDBCStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StringKeyedJDBCStoreResourceDefinition.java index 68fc29a243c5..db8eba7f5d77 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StringKeyedJDBCStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StringKeyedJDBCStoreResourceDefinition.java @@ -27,11 +27,6 @@ import java.util.List; import org.jboss.as.clustering.controller.Operations; -import org.jboss.as.clustering.controller.ResourceDescriptor; -import org.jboss.as.clustering.controller.SimpleResourceRegistration; -import org.jboss.as.clustering.controller.ResourceServiceHandler; -import org.jboss.as.clustering.controller.SimpleAliasEntry; -import org.jboss.as.clustering.controller.SimpleResourceServiceHandler; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.ModelVersion; @@ -44,7 +39,6 @@ import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.operations.common.Util; import org.jboss.as.controller.operations.global.ReadResourceHandler; -import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.registry.Resource; import org.jboss.as.controller.transform.ResourceTransformationContext; import org.jboss.as.controller.transform.ResourceTransformer; @@ -123,7 +117,16 @@ public void transformResource(ResourceTransformationContext context, PathAddress } StringKeyedJDBCStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { - super(PATH, new InfinispanResourceDescriptionResolver(PATH, pathElement("jdbc"), WILDCARD_PATH), allowRuntimeOnlyRegistration); + super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, pathElement("jdbc"), WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor + .addExtraParameters(DeprecatedAttribute.class) + .addRequiredChildren(StringTableResourceDefinition.PATH) + // Translate deprecated TABLE attribute into separate add table operation + .addOperationTranslator(new TableAttributeTranslator(DeprecatedAttribute.TABLE, StringTableResourceDefinition.PATH)) + , address -> new StringKeyedJDBCStoreBuilder(address.getParent()), registration -> { + registration.registerReadWriteAttribute(DeprecatedAttribute.TABLE.getDefinition(), LEGACY_READ_TABLE_HANDLER, LEGACY_WRITE_TABLE_HANDLER); + + new StringTableResourceDefinition().register(registration); + }); } static final OperationStepHandler LEGACY_READ_TABLE_HANDLER = new OperationStepHandler() { @@ -149,31 +152,4 @@ public void execute(OperationContext context, ModelNode operation) throws Operat } } }; - - @Override - public void register(ManagementResourceRegistration parentRegistration) { - ManagementResourceRegistration registration = parentRegistration.registerSubModel(this); - parentRegistration.registerAlias(LEGACY_PATH, new SimpleAliasEntry(registration)); - - ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver()) - .addAttributes(JDBCStoreResourceDefinition.Attribute.class) - .addAttributes(StoreResourceDefinition.Attribute.class) - .addExtraParameters(DeprecatedAttribute.class) - .addCapabilities(Capability.class) - .addRequiredChildren(StringTableResourceDefinition.PATH) - .addRequiredSingletonChildren(StoreWriteThroughResourceDefinition.PATH) - // Translate deprecated DATASOURCE attribute to DATA_SOURCE attribute - .addAttributeTranslation(JDBCStoreResourceDefinition.DeprecatedAttribute.DATASOURCE, JDBCStoreResourceDefinition.Attribute.DATA_SOURCE, JDBCStoreResourceDefinition.POOL_NAME_TO_JNDI_NAME_TRANSLATOR, JDBCStoreResourceDefinition.JNDI_NAME_TO_POOL_NAME_TRANSLATOR) - // Translate deprecated TABLE attribute into separate add table operation - .addOperationTranslator(new TableAttributeTranslator(DeprecatedAttribute.TABLE, StringTableResourceDefinition.PATH)) - ; - ResourceServiceHandler handler = new SimpleResourceServiceHandler<>(address -> new StringKeyedJDBCStoreBuilder(address.getParent())); - new SimpleResourceRegistration(descriptor, handler).register(registration); - - registration.registerReadWriteAttribute(DeprecatedAttribute.TABLE.getDefinition(), LEGACY_READ_TABLE_HANDLER, LEGACY_WRITE_TABLE_HANDLER); - - new StringTableResourceDefinition().register(registration); - - super.register(registration); - } }