Skip to content

Commit

Permalink
Consolidate resource registration logic when using resource defintiti…
Browse files Browse the repository at this point in the history
…on inheritence.
  • Loading branch information
pferraro committed Feb 6, 2017
1 parent ad8784a commit c0b8622
Show file tree
Hide file tree
Showing 16 changed files with 169 additions and 344 deletions.
Expand Up @@ -46,6 +46,10 @@ public static <T extends AutoCloseable> Consumer<T> close() {
}; };
} }


public static <T> Consumer<T> empty() {
return value -> {};
}

private Consumers() { private Consumers() {
// Hide // Hide
} }
Expand Down
Expand Up @@ -27,11 +27,6 @@
import java.util.List; import java.util.List;


import org.jboss.as.clustering.controller.Operations; 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.clustering.controller.transform.LegacyPropertyResourceTransformer;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
Expand All @@ -44,7 +39,6 @@
import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
import org.jboss.as.controller.operations.common.Util; import org.jboss.as.controller.operations.common.Util;
import org.jboss.as.controller.operations.global.ReadResourceHandler; 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.registry.Resource;
import org.jboss.as.controller.transform.ResourceTransformationContext; import org.jboss.as.controller.transform.ResourceTransformationContext;
import org.jboss.as.controller.transform.ResourceTransformer; import org.jboss.as.controller.transform.ResourceTransformer;
Expand Down Expand Up @@ -122,7 +116,16 @@ public void transformResource(ResourceTransformationContext context, PathAddress
} }


BinaryKeyedJDBCStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { 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() { static final OperationStepHandler LEGACY_READ_TABLE_HANDLER = new OperationStepHandler() {
Expand All @@ -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);
}
} }
Expand Up @@ -26,6 +26,7 @@
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Map; import java.util.Map;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.function.Consumer;


import org.infinispan.configuration.cache.Index; import org.infinispan.configuration.cache.Index;
import org.jboss.as.clustering.controller.AttributeMarshallers; import org.jboss.as.clustering.controller.AttributeMarshallers;
Expand All @@ -34,6 +35,9 @@
import org.jboss.as.clustering.controller.CapabilityProvider; import org.jboss.as.clustering.controller.CapabilityProvider;
import org.jboss.as.clustering.controller.ChildResourceDefinition; import org.jboss.as.clustering.controller.ChildResourceDefinition;
import org.jboss.as.clustering.controller.MetricHandler; 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.EnumValidatorBuilder;
import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder; import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder;
import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder; import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder;
Expand Down Expand Up @@ -210,33 +214,49 @@ public void transformResource(ResourceTransformationContext context, PathAddress
CustomStoreResourceDefinition.buildTransformation(version, builder); CustomStoreResourceDefinition.buildTransformation(version, builder);
} }


private final PathManager pathManager; private final Consumer<ResourceDescriptor> descriptorConfigurator;
final boolean allowRuntimeOnlyRegistration; private final ResourceServiceHandler handler;
private final Consumer<ManagementResourceRegistration> registrationConfigurator;


public CacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration) { public CacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration, Consumer<ResourceDescriptor> descriptorConfigurator, CacheServiceHandler handler, Consumer<ManagementResourceRegistration> registrationConfigurator) {
super(path, new InfinispanResourceDescriptionResolver(path, PathElement.pathElement("cache"))); super(path, new InfinispanResourceDescriptionResolver(path, PathElement.pathElement("cache")));
this.pathManager = pathManager; this.descriptorConfigurator = descriptorConfigurator.andThen(descriptor -> descriptor
this.allowRuntimeOnlyRegistration = allowRuntimeOnlyRegistration; .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 @Override
public void register(ManagementResourceRegistration registration) { public void register(ManagementResourceRegistration parentRegistration) {
ManagementResourceRegistration registration = parentRegistration.registerSubModel(this);


if (this.allowRuntimeOnlyRegistration) { ResourceDescriptor descriptor = new ResourceDescriptor(this.getResourceDescriptionResolver());
new MetricHandler<>(new CacheMetricExecutor(), CacheMetric.class).register(registration); this.descriptorConfigurator.accept(descriptor);
} new SimpleResourceRegistration(descriptor, this.handler).register(registration);


new EvictionResourceDefinition(this.allowRuntimeOnlyRegistration).register(registration); this.registrationConfigurator.accept(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);
} }
} }
Expand Up @@ -22,7 +22,10 @@


package org.jboss.as.clustering.infinispan.subsystem; 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.MetricHandler;
import org.jboss.as.clustering.controller.ResourceDescriptor;
import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder;
import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder; import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
Expand Down Expand Up @@ -103,17 +106,14 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc
CacheResourceDefinition.buildTransformation(version, builder); CacheResourceDefinition.buildTransformation(version, builder);
} }


ClusteredCacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration) { ClusteredCacheResourceDefinition(PathElement path, PathManager pathManager, boolean allowRuntimeOnlyRegistration, Consumer<ResourceDescriptor> descriptorConfigurator, ClusteredCacheServiceHandler handler, Consumer<ManagementResourceRegistration> registrationConfigurator) {
super(path, pathManager, allowRuntimeOnlyRegistration); super(path, pathManager, allowRuntimeOnlyRegistration, descriptorConfigurator.andThen(descriptor -> descriptor
} .addAttributes(Attribute.class)

.addAttributes(DeprecatedAttribute.class)
@Override ), handler, registrationConfigurator.andThen(registration -> {
public void register(ManagementResourceRegistration registration) { if (allowRuntimeOnlyRegistration) {

new MetricHandler<>(new ClusteredCacheMetricExecutor(), ClusteredCacheMetric.class).register(registration);
if (this.allowRuntimeOnlyRegistration) { }
new MetricHandler<>(new ClusteredCacheMetricExecutor(), ClusteredCacheMetric.class).register(registration); }));
}

super.register(registration);
} }
} }
Expand Up @@ -22,21 +22,16 @@


package org.jboss.as.clustering.infinispan.subsystem; 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.LegacyPropertyAddOperationTransformer;
import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer; import org.jboss.as.clustering.controller.transform.LegacyPropertyResourceTransformer;
import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer; 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.AttributeDefinition;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.PathElement; import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
import org.jboss.as.controller.registry.AttributeAccess; 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.as.controller.transform.description.ResourceTransformationDescriptionBuilder;
import org.jboss.dmr.ModelType; import org.jboss.dmr.ModelType;


Expand Down Expand Up @@ -83,22 +78,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc
} }


CustomStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) { CustomStoreResourceDefinition(boolean allowRuntimeOnlyRegistration) {
super(PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration); super(PATH, LEGACY_PATH, new InfinispanResourceDescriptionResolver(PATH, WILDCARD_PATH), allowRuntimeOnlyRegistration, descriptor -> descriptor.addAttributes(Attribute.class), address -> new CustomStoreBuilder(address.getParent()), Consumers.empty());
}

@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);
} }
} }
Expand Up @@ -22,9 +22,6 @@


package org.jboss.as.clustering.infinispan.subsystem; 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.DoubleRangeValidatorBuilder;
import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder;
import org.jboss.as.clustering.controller.validation.IntRangeValidatorBuilder; import org.jboss.as.clustering.controller.validation.IntRangeValidatorBuilder;
Expand All @@ -36,7 +33,6 @@
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.client.helpers.MeasurementUnit; import org.jboss.as.controller.client.helpers.MeasurementUnit;
import org.jboss.as.controller.registry.AttributeAccess; 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.PathManager;
import org.jboss.as.controller.transform.description.AttributeConverter; import org.jboss.as.controller.transform.description.AttributeConverter;
import org.jboss.as.controller.transform.description.DiscardAttributeChecker; import org.jboss.as.controller.transform.description.DiscardAttributeChecker;
Expand Down Expand Up @@ -111,29 +107,6 @@ static void buildTransformation(ModelVersion version, ResourceTransformationDesc
} }


DistributedCacheResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) { DistributedCacheResourceDefinition(PathManager pathManager, boolean allowRuntimeOnlyRegistration) {
super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration); super(WILDCARD_PATH, pathManager, allowRuntimeOnlyRegistration, descriptor -> descriptor.addAttributes(Attribute.class), new DistributedCacheServiceHandler());
}

@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);
} }
} }

0 comments on commit c0b8622

Please sign in to comment.