Skip to content

Commit

Permalink
WFLY-4488 Replace Infinispan cache-container add-alias/remove-alias o…
Browse files Browse the repository at this point in the history
…perations with global list operations

WFLY-4453 Convert cache store properties to SimpleMapAttributeDefinition
  • Loading branch information
pferraro committed Apr 7, 2015
1 parent c8a8361 commit fe127ae
Show file tree
Hide file tree
Showing 19 changed files with 391 additions and 559 deletions.

This file was deleted.

Expand Up @@ -22,17 +22,12 @@


package org.jboss.as.clustering.infinispan.subsystem; package org.jboss.as.clustering.infinispan.subsystem;


import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD;

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.OperationDefinition;
import org.jboss.as.controller.OperationStepHandler; import org.jboss.as.controller.OperationStepHandler;
import org.jboss.as.controller.PathElement; import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler; import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler;
import org.jboss.as.controller.SimpleOperationDefinitionBuilder;
import org.jboss.as.controller.registry.ManagementResourceRegistration; import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.as.controller.registry.OperationEntry;
import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder; import org.jboss.as.controller.transform.description.ResourceTransformationDescriptionBuilder;


/** /**
Expand All @@ -49,14 +44,6 @@ public class BinaryKeyedJDBCStoreResourceDefinition extends JDBCStoreResourceDef
// attributes // attributes
static final AttributeDefinition[] ATTRIBUTES = new AttributeDefinition[] { BINARY_KEYED_TABLE }; static final AttributeDefinition[] ATTRIBUTES = new AttributeDefinition[] { BINARY_KEYED_TABLE };


// operations
private static final OperationDefinition BINARY_KEYED_JDBC_STORE_ADD_DEFINITION = new SimpleOperationDefinitionBuilder(ADD, new InfinispanResourceDescriptionResolver(ModelKeys.BINARY_KEYED_JDBC_STORE))
.setParameters(PARAMETERS)
.addParameter(DATA_SOURCE)
.addParameter(DIALECT)
.addParameter(BINARY_KEYED_TABLE)
.build();

static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) { static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) {
ResourceTransformationDescriptionBuilder builder = parent.addChildResource(PATH); ResourceTransformationDescriptionBuilder builder = parent.addChildResource(PATH);


Expand All @@ -76,10 +63,4 @@ public void registerAttributes(ManagementResourceRegistration registration) {
registration.registerReadWriteAttribute(attr, null, writeHandler); registration.registerReadWriteAttribute(attr, null, writeHandler);
} }
} }

// override the add operation to provide a custom definition (for the optional PROPERTIES parameter to add())
@Override
protected void registerAddOperation(final ManagementResourceRegistration registration, final OperationStepHandler handler, OperationEntry.Flag... flags) {
registration.registerOperationHandler(BINARY_KEYED_JDBC_STORE_ADD_DEFINITION, handler);
}
} }
Expand Up @@ -21,19 +21,26 @@
*/ */
package org.jboss.as.clustering.infinispan.subsystem; package org.jboss.as.clustering.infinispan.subsystem;


import org.jboss.as.clustering.controller.Operations;
import org.jboss.as.clustering.controller.transform.OperationTransformer;
import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer;
import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidator; import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidator;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.AttributeMarshaller;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationDefinition; import org.jboss.as.controller.OperationDefinition;
import org.jboss.as.controller.OperationFailedException;
import org.jboss.as.controller.OperationStepHandler; import org.jboss.as.controller.OperationStepHandler;
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PathElement; import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler; import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler;
import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinition;
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.SimpleListAttributeDefinition;
import org.jboss.as.controller.SimpleOperationDefinitionBuilder; import org.jboss.as.controller.SimpleOperationDefinitionBuilder;
import org.jboss.as.controller.SimpleResourceDefinition; import org.jboss.as.controller.SimpleResourceDefinition;
import org.jboss.as.controller.StringListAttributeDefinition;
import org.jboss.as.controller.operations.common.Util;
import org.jboss.as.controller.operations.global.ListOperations;
import org.jboss.as.controller.operations.validation.EnumValidator; import org.jboss.as.controller.operations.validation.EnumValidator;
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.registry.ManagementResourceRegistration;
Expand All @@ -48,6 +55,7 @@
* Resource description for the addressable resource /subsystem=infinispan/cache-container=X * Resource description for the addressable resource /subsystem=infinispan/cache-container=X
* *
* @author Richard Achmatowicz (c) 2011 Red Hat Inc. * @author Richard Achmatowicz (c) 2011 Red Hat Inc.
* @author Paul Ferraro
*/ */
public class CacheContainerResourceDefinition extends SimpleResourceDefinition { public class CacheContainerResourceDefinition extends SimpleResourceDefinition {


Expand All @@ -57,16 +65,8 @@ static PathElement pathElement(String containerName) {
return PathElement.pathElement(ModelKeys.CACHE_CONTAINER, containerName); return PathElement.pathElement(ModelKeys.CACHE_CONTAINER, containerName);
} }


private static final AttributeDefinition ALIAS = new SimpleAttributeDefinitionBuilder(ModelKeys.NAME, ModelType.STRING, true) static final StringListAttributeDefinition ALIASES = new StringListAttributeDefinition.Builder(ModelKeys.ALIASES)
.setXmlName(Attribute.NAME.getLocalName())
.setAllowExpression(false)
.setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES)
.build();

// attributes
static final SimpleListAttributeDefinition ALIASES = SimpleListAttributeDefinition.Builder.of(ModelKeys.ALIASES, ALIAS)
.setAllowNull(true) .setAllowNull(true)
.setAttributeMarshaller(AttributeMarshaller.STRING_LIST)
.build(); .build();


static final SimpleAttributeDefinition MODULE = new SimpleAttributeDefinitionBuilder(ModelKeys.MODULE, ModelType.STRING, true) static final SimpleAttributeDefinition MODULE = new SimpleAttributeDefinitionBuilder(ModelKeys.MODULE, ModelType.STRING, true)
Expand Down Expand Up @@ -128,17 +128,58 @@ static PathElement pathElement(String containerName) {
DEFAULT_CACHE, ALIASES, JNDI_NAME, START, LISTENER_EXECUTOR, EVICTION_EXECUTOR, REPLICATION_QUEUE_EXECUTOR, MODULE, STATISTICS_ENABLED DEFAULT_CACHE, ALIASES, JNDI_NAME, START, LISTENER_EXECUTOR, EVICTION_EXECUTOR, REPLICATION_QUEUE_EXECUTOR, MODULE, STATISTICS_ENABLED
}; };



static final AttributeDefinition ALIAS = new SimpleAttributeDefinitionBuilder(ModelKeys.NAME, ModelType.STRING)
.setAllowExpression(false)
.build();

static final OperationDefinition ALIAS_ADD = new SimpleOperationDefinitionBuilder("add-alias", new InfinispanResourceDescriptionResolver(ModelKeys.CACHE_CONTAINER)) static final OperationDefinition ALIAS_ADD = new SimpleOperationDefinitionBuilder("add-alias", new InfinispanResourceDescriptionResolver(ModelKeys.CACHE_CONTAINER))
.setParameters(ALIAS) .setParameters(ALIAS)
.setDeprecated(InfinispanModel.VERSION_3_0_0.getVersion())
.build(); .build();


static final OperationDefinition ALIAS_REMOVE = new SimpleOperationDefinitionBuilder("remove-alias", new InfinispanResourceDescriptionResolver(ModelKeys.CACHE_CONTAINER)) static final OperationDefinition ALIAS_REMOVE = new SimpleOperationDefinitionBuilder("remove-alias", new InfinispanResourceDescriptionResolver(ModelKeys.CACHE_CONTAINER))
.setParameters(ALIAS) .setParameters(ALIAS)
.setDeprecated(InfinispanModel.VERSION_3_0_0.getVersion())
.build(); .build();


static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) { static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) {
ResourceTransformationDescriptionBuilder builder = parent.addChildResource(WILDCARD_PATH); ResourceTransformationDescriptionBuilder builder = parent.addChildResource(WILDCARD_PATH);


if (InfinispanModel.VERSION_3_0_0.requiresTransformation(version)) {
OperationTransformer addAliasTransformer = new OperationTransformer() {
@Override
public ModelNode transformOperation(ModelNode operation) {
String attributeName = Operations.getAttributeName(operation);
if (ALIASES.getName().equals(attributeName)) {
ModelNode value = Operations.getAttributeValue(operation);
PathAddress address = Operations.getPathAddress(operation);
ModelNode transformedOperation = Util.createOperation(ALIAS_ADD, address);
transformedOperation.get(ALIAS.getName()).set(value);
return transformedOperation;
}
return operation;
}
};
builder.addRawOperationTransformationOverride(ListOperations.LIST_ADD_DEFINITION.getName(), new SimpleOperationTransformer(addAliasTransformer));

OperationTransformer removeAliasTransformer = new OperationTransformer() {
@Override
public ModelNode transformOperation(ModelNode operation) {
String attributeName = Operations.getAttributeName(operation);
if (ALIASES.getName().equals(attributeName)) {
ModelNode value = Operations.getAttributeValue(operation);
PathAddress address = Operations.getPathAddress(operation);
ModelNode transformedOperation = Util.createOperation(ALIAS_REMOVE, address);
transformedOperation.get(ALIAS.getName()).set(value);
return transformedOperation;
}
return operation;
}
};
builder.addRawOperationTransformationOverride(ListOperations.LIST_REMOVE_DEFINITION.getName(), new SimpleOperationTransformer(removeAliasTransformer));
}

if (InfinispanModel.VERSION_1_5_0.requiresTransformation(version)) { if (InfinispanModel.VERSION_1_5_0.requiresTransformation(version)) {
builder.getAttributeBuilder() builder.getAttributeBuilder()
// discard statistics if set to true, reject otherwise // discard statistics if set to true, reject otherwise
Expand Down Expand Up @@ -187,9 +228,28 @@ public void registerAttributes(ManagementResourceRegistration registration) {
@Override @Override
public void registerOperations(ManagementResourceRegistration registration) { public void registerOperations(ManagementResourceRegistration registration) {
super.registerOperations(registration); super.registerOperations(registration);
// register add-alias and remove-alias
registration.registerOperationHandler(CacheContainerResourceDefinition.ALIAS_ADD, new AddAliasHandler()); // Translate legacy add-alias operation to list-add operation
registration.registerOperationHandler(CacheContainerResourceDefinition.ALIAS_REMOVE, new RemoveAliasHandler()); OperationStepHandler addAliasHandler = new OperationStepHandler() {
@Override
public void execute(OperationContext context, ModelNode legacyOperation) {
String value = legacyOperation.get(ALIAS.getName()).asString();
ModelNode operation = Operations.createListAddOperation(context.getCurrentAddress(), ALIASES.getName(), value);
context.addStep(operation, ListOperations.LIST_ADD_HANDLER, context.getCurrentStage());
}
};
registration.registerOperationHandler(ALIAS_ADD, addAliasHandler);

// Translate legacy remove-alias operation to list-remove operation
OperationStepHandler removeAliasHandler = new OperationStepHandler() {
@Override
public void execute(OperationContext context, ModelNode legacyOperation) throws OperationFailedException {
String value = legacyOperation.get(ALIAS.getName()).asString();
ModelNode operation = Operations.createListRemoveOperation(context.getCurrentAddress(), ALIASES.getName(), value);
context.addStep(operation, ListOperations.LIST_REMOVE_HANDLER, context.getCurrentStage());
}
};
registration.registerOperationHandler(ALIAS_REMOVE, removeAliasHandler);
} }


@Override @Override
Expand Down
Expand Up @@ -22,20 +22,15 @@


package org.jboss.as.clustering.infinispan.subsystem; package org.jboss.as.clustering.infinispan.subsystem;


import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD;

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.OperationDefinition;
import org.jboss.as.controller.OperationStepHandler; import org.jboss.as.controller.OperationStepHandler;
import org.jboss.as.controller.PathElement; import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler; import org.jboss.as.controller.ReloadRequiredWriteAttributeHandler;
import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinition;
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.SimpleOperationDefinitionBuilder;
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.registry.ManagementResourceRegistration;
import org.jboss.as.controller.registry.OperationEntry;
import org.jboss.as.controller.transform.description.RejectAttributeChecker; import org.jboss.as.controller.transform.description.RejectAttributeChecker;
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 All @@ -58,12 +53,6 @@ public class CustomStoreResourceDefinition extends StoreResourceDefinition {


static final AttributeDefinition[] ATTRIBUTES = new AttributeDefinition[] { CLASS }; static final AttributeDefinition[] ATTRIBUTES = new AttributeDefinition[] { CLASS };


// operations
private static final OperationDefinition ADD_DEFINITION = new SimpleOperationDefinitionBuilder(ADD, new InfinispanResourceDescriptionResolver(ModelKeys.STORE))
.setParameters(PARAMETERS)
.addParameter(CLASS)
.build();

static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) { static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) {
ResourceTransformationDescriptionBuilder builder = parent.addChildResource(PATH); ResourceTransformationDescriptionBuilder builder = parent.addChildResource(PATH);


Expand All @@ -87,10 +76,4 @@ public void registerAttributes(ManagementResourceRegistration registration) {
registration.registerReadWriteAttribute(attr, null, writeHandler); registration.registerReadWriteAttribute(attr, null, writeHandler);
} }
} }

// override the add operation to provide a custom definition (for the optional PROPERTIES parameter to add())
@Override
protected void registerAddOperation(final ManagementResourceRegistration registration, final OperationStepHandler handler, OperationEntry.Flag... flags) {
registration.registerOperationHandler(ADD_DEFINITION, handler);
}
} }

0 comments on commit fe127ae

Please sign in to comment.