Skip to content

Instantly share code, notes, and snippets.

@ctomc
Created January 29, 2013 10:25
Show Gist options
  • Save ctomc/4663307 to your computer and use it in GitHub Desktop.
Save ctomc/4663307 to your computer and use it in GitHub Desktop.
Discard undefined behaving strange
transformer:
DiscardUndefinedAttributesTransformer discarder = new DiscardUndefinedAttributesTransformer(AbstractKeyGeneratorResourceDefinition.JNDI_NAME);
builder.addChildResource(CmpSubsystemModel.UUID_KEY_GENERATOR_PATH).setCustomResourceTransformer(discarder)
.addOperationTransformationOverride(ModelDescriptionConstants.ADD).setCustomOperationTransformer(discarder)
.inheritResourceAttributeDefinitions()
.end()
.addOperationTransformationOverride(ModelDescriptionConstants.WRITE_ATTRIBUTE_OPERATION).setCustomOperationTransformer(discarder.getWriteAttributeTransformer())
.inheritResourceAttributeDefinitions()
.end()
.addOperationTransformationOverride(ModelDescriptionConstants.UNDEFINE_ATTRIBUTE_OPERATION).setCustomOperationTransformer(discarder.getUndefineAttributeTransformer())
.inheritResourceAttributeDefinitions()
.end();
builder.addChildResource(CmpSubsystemModel.HILO_KEY_GENERATOR_PATH).setCustomResourceTransformer(discarder)
.addOperationTransformationOverride(ModelDescriptionConstants.ADD).setCustomOperationTransformer(discarder)
.inheritResourceAttributeDefinitions()
.end()
.addOperationTransformationOverride(ModelDescriptionConstants.WRITE_ATTRIBUTE_OPERATION).setCustomOperationTransformer(discarder.getWriteAttributeTransformer())
.inheritResourceAttributeDefinitions()
.end()
.addOperationTransformationOverride(ModelDescriptionConstants.UNDEFINE_ATTRIBUTE_OPERATION).setCustomOperationTransformer(discarder.getUndefineAttributeTransformer())
.inheritResourceAttributeDefinitions()
.end();
test:
@Test
public void testTransformers() throws Exception {
ModelVersion modelVersion = ModelVersion.create(1, 0, 0);
KernelServicesBuilder builder = createKernelServicesBuilder(AdditionalInitialization.MANAGEMENT);
builder.createLegacyKernelServicesBuilder(null, modelVersion)
.addMavenResourceURL("org.jboss.as:jboss-as-cmp:7.1.2.Final")
.addMavenResourceURL("org.jboss.as:jboss-as-controller:7.1.2.Final")
.addParentFirstClassPattern("org.jboss.as.controller.*");
KernelServices mainServices = builder.build();
Assert.assertTrue(mainServices.isSuccessfulBoot());
Assert.assertTrue(mainServices.getLegacyServices(modelVersion).isSuccessfulBoot());
ModelTestUtils.checkFailedTransformedBootOperations(mainServices, modelVersion, parse(getSubsystemXml()),
new FailedOperationTransformationConfig()
.addFailedAttribute(SUBSYSTEM_PATH.append(CmpSubsystemModel.UUID_KEY_GENERATOR_PATH),
new FailedOperationTransformationConfig.NewAttributesConfig(AbstractKeyGeneratorResourceDefinition.JNDI_NAME))
.addFailedAttribute(SUBSYSTEM_PATH.append(CmpSubsystemModel.HILO_KEY_GENERATOR_PATH),
new FailedOperationTransformationConfig.NewAttributesConfig(AbstractKeyGeneratorResourceDefinition.JNDI_NAME))
);
}
result:
junit.framework.ComparisonFailure: JBAS014792: Unknown attribute jndi-name for
:{
"operation" => "write-attribute",
"address" => [
("subsystem" => "cmp"),
("uuid-keygenerator" => "uuid2")
],
"name" => "jndi-name",
"value" => undefined
}
Expected :success
Actual :failed
with new API:
builder.addChildResource(CmpSubsystemModel.UUID_KEY_GENERATOR_PATH).getAttributeBuilder().setDiscard(DiscardAttributeChecker.UNDEFINED, AbstractKeyGeneratorResourceDefinition.JNDI_NAME).end();
builder.addChildResource(CmpSubsystemModel.HILO_KEY_GENERATOR_PATH).getAttributeBuilder().setDiscard(DiscardAttributeChecker.UNDEFINED, AbstractKeyGeneratorResourceDefinition.JNDI_NAME).end();
result:
junit.framework.ComparisonFailure: Should not have worked: {
"operation" => "add",
"address" => [
("subsystem" => "cmp"),
("uuid-keygenerator" => "uuid2")
],
"jndi-name" => "java:jboss/uuid2"
}
Expected :failed
Actual :success
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment