Skip to content

Commit bbeaa91

Browse files
committed
Port IO subsystem to SubsystemResourceXMLSchema.
1 parent d612ea2 commit bbeaa91

12 files changed

+78
-56
lines changed

io/subsystem/src/main/java/org/wildfly/extension/io/BufferPoolResourceDefinition.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class BufferPoolResourceDefinition extends PersistentResourceDefinition {
103103
);
104104

105105
BufferPoolResourceDefinition() {
106-
super(new SimpleResourceDefinition.Parameters(PATH, IOSubsystemRegistrar.RESOLVER.createChildResolver(PATH))
106+
super(new SimpleResourceDefinition.Parameters(PATH, IOSubsystemResourceRegistrar.RESOLVER.createChildResolver(PATH))
107107
.setAddHandler(new BufferPoolAdd())
108108
.setRemoveHandler(ReloadRequiredRemoveStepHandler.INSTANCE)
109109
.addCapabilities(IO_POOL_RUNTIME_CAPABILITY,

io/subsystem/src/main/java/org/wildfly/extension/io/IOExtension.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
public class IOExtension extends SubsystemExtension<IOSubsystemSchema> {
1818

1919
public IOExtension() {
20-
super(SubsystemConfiguration.of(IOSubsystemRegistrar.NAME, IOSubsystemModel.CURRENT, IOSubsystemRegistrar::new), SubsystemPersistence.of(IOSubsystemSchema.CURRENT));
20+
super(SubsystemConfiguration.of(IOSubsystemResourceDescription.INSTANCE, IOSubsystemModel.CURRENT, IOSubsystemResourceRegistrar::new), SubsystemPersistence.of(IOSubsystemSchema.CURRENT));
2121
}
2222
}

io/subsystem/src/main/java/org/wildfly/extension/io/IOExtensionTransformerRegistration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
public class IOExtensionTransformerRegistration extends SubsystemExtensionTransformerRegistration {
1414

1515
public IOExtensionTransformerRegistration() {
16-
super(IOSubsystemRegistrar.NAME, IOSubsystemModel.CURRENT, IOSubsystemTransformationDescriptionFactory.INSTANCE);
16+
super(IOSubsystemResourceDescription.INSTANCE, IOSubsystemModel.CURRENT, IOSubsystemTransformationDescriptionFactory.INSTANCE);
1717
}
1818
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright The WildFly Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.wildfly.extension.io;
7+
8+
import java.util.stream.Stream;
9+
10+
import org.jboss.as.controller.AttributeDefinition;
11+
import org.jboss.as.controller.SubsystemResourceDescription;
12+
import org.jboss.as.controller.capability.RuntimeCapability;
13+
import org.wildfly.io.IOServiceDescriptor;
14+
import org.wildfly.subsystem.resource.capability.CapabilityReference;
15+
import org.wildfly.subsystem.resource.capability.CapabilityReferenceAttributeDefinition;
16+
import org.xnio.XnioWorker;
17+
18+
/**
19+
* Describes the IO subsystem resource.
20+
*/
21+
public enum IOSubsystemResourceDescription implements SubsystemResourceDescription {
22+
INSTANCE;
23+
24+
static final RuntimeCapability<Void> DEFAULT_WORKER_CAPABILITY = RuntimeCapability.Builder.of(IOServiceDescriptor.DEFAULT_WORKER).build();
25+
26+
static final CapabilityReferenceAttributeDefinition<XnioWorker> DEFAULT_WORKER = new CapabilityReferenceAttributeDefinition.Builder<>("default-worker", CapabilityReference.builder(DEFAULT_WORKER_CAPABILITY, IOServiceDescriptor.NAMED_WORKER).build())
27+
.setRequired(false)
28+
.build();
29+
30+
@Override
31+
public String getName() {
32+
return "io";
33+
}
34+
35+
@Override
36+
public Stream<AttributeDefinition> getAttributes() {
37+
return Stream.of(DEFAULT_WORKER);
38+
}
39+
}

io/subsystem/src/main/java/org/wildfly/extension/io/IOSubsystemRegistrar.java io/subsystem/src/main/java/org/wildfly/extension/io/IOSubsystemResourceRegistrar.java

+7-19
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111

1212
import org.jboss.as.controller.OperationContext;
1313
import org.jboss.as.controller.OperationFailedException;
14-
import org.jboss.as.controller.PathElement;
1514
import org.jboss.as.controller.ResourceDefinition;
16-
import org.jboss.as.controller.ResourceRegistration;
1715
import org.jboss.as.controller.SubsystemRegistration;
1816
import org.jboss.as.controller.capability.RuntimeCapability;
1917
import org.jboss.as.controller.descriptions.ParentResourceDescriptionResolver;
@@ -26,8 +24,6 @@
2624
import org.wildfly.subsystem.resource.ManagementResourceRegistrationContext;
2725
import org.wildfly.subsystem.resource.ResourceDescriptor;
2826
import org.wildfly.subsystem.resource.SubsystemResourceDefinitionRegistrar;
29-
import org.wildfly.subsystem.resource.capability.CapabilityReference;
30-
import org.wildfly.subsystem.resource.capability.CapabilityReferenceAttributeDefinition;
3127
import org.wildfly.subsystem.resource.operation.ResourceOperationRuntimeHandler;
3228
import org.wildfly.subsystem.service.ResourceServiceConfigurator;
3329
import org.wildfly.subsystem.service.ResourceServiceInstaller;
@@ -38,32 +34,24 @@
3834
/**
3935
* @author <a href="mailto:[email protected]">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
4036
*/
41-
class IOSubsystemRegistrar implements SubsystemResourceDefinitionRegistrar, ResourceServiceConfigurator {
37+
class IOSubsystemResourceRegistrar implements SubsystemResourceDefinitionRegistrar, ResourceServiceConfigurator {
4238

43-
static final String NAME = "io";
44-
static final PathElement PATH = SubsystemResourceDefinitionRegistrar.pathElement(NAME);
45-
static final ParentResourceDescriptionResolver RESOLVER = new SubsystemResourceDescriptionResolver(NAME, IOSubsystemRegistrar.class);
39+
static final ParentResourceDescriptionResolver RESOLVER = new SubsystemResourceDescriptionResolver(IOSubsystemResourceDescription.INSTANCE.getName(), IOSubsystemResourceRegistrar.class);
4640

4741
static final RuntimeCapability<Void> MAX_THREADS_CAPABILITY = RuntimeCapability.Builder.of(IOServiceDescriptor.MAX_THREADS).build();
4842

49-
static final RuntimeCapability<Void> DEFAULT_WORKER_CAPABILITY = RuntimeCapability.Builder.of(IOServiceDescriptor.DEFAULT_WORKER).build();
50-
5143
static final ModelNode LEGACY_DEFAULT_WORKER = new ModelNode("default");
5244

53-
static final CapabilityReferenceAttributeDefinition<XnioWorker> DEFAULT_WORKER = new CapabilityReferenceAttributeDefinition.Builder<>("default-worker", CapabilityReference.builder(DEFAULT_WORKER_CAPABILITY, IOServiceDescriptor.NAMED_WORKER).build())
54-
.setRequired(false)
55-
.build();
56-
5745
// Tracks max-threads for all workers
5846
private final AtomicInteger maxThreads = new AtomicInteger();
5947

6048
@Override
6149
public ManagementResourceRegistration register(SubsystemRegistration parent, ManagementResourceRegistrationContext context) {
62-
ManagementResourceRegistration registration = parent.registerSubsystemModel(ResourceDefinition.builder(ResourceRegistration.of(PATH), RESOLVER).build());
50+
ManagementResourceRegistration registration = parent.registerSubsystemModel(ResourceDefinition.builder(IOSubsystemResourceDescription.INSTANCE, RESOLVER).build());
6351

6452
ResourceDescriptor descriptor = ResourceDescriptor.builder(RESOLVER)
65-
.addAttributes(List.of(DEFAULT_WORKER))
66-
.addCapabilities(List.of(DEFAULT_WORKER_CAPABILITY, MAX_THREADS_CAPABILITY))
53+
.addAttributes(IOSubsystemResourceDescription.INSTANCE.getAttributes().toList())
54+
.addCapabilities(List.of(IOSubsystemResourceDescription.DEFAULT_WORKER_CAPABILITY, MAX_THREADS_CAPABILITY))
6755
.withRuntimeHandler(ResourceOperationRuntimeHandler.configureParentService(this))
6856
.build();
6957
ManagementResourceRegistrar.of(descriptor).register(registration);
@@ -82,9 +70,9 @@ public ResourceServiceInstaller configure(OperationContext context, ModelNode mo
8270
List<ResourceServiceInstaller> installers = new ArrayList<>(2);
8371
installers.add(CapabilityServiceInstaller.builder(MAX_THREADS_CAPABILITY, AtomicInteger::intValue, Functions.constantSupplier(this.maxThreads)).build());
8472

85-
ServiceDependency<XnioWorker> defaultWorker = DEFAULT_WORKER.resolve(context, model);
73+
ServiceDependency<XnioWorker> defaultWorker = IOSubsystemResourceDescription.DEFAULT_WORKER.resolve(context, model);
8674
if (defaultWorker.isPresent()) {
87-
installers.add(CapabilityServiceInstaller.builder(DEFAULT_WORKER_CAPABILITY, defaultWorker).build());
75+
installers.add(CapabilityServiceInstaller.builder(IOSubsystemResourceDescription.DEFAULT_WORKER_CAPABILITY, defaultWorker).build());
8876
}
8977

9078
return ResourceServiceInstaller.combine(installers);

io/subsystem/src/main/java/org/wildfly/extension/io/IOSubsystemSchema.java

+20-25
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,20 @@
66
package org.wildfly.extension.io;
77

88
import java.util.List;
9-
import java.util.function.Predicate;
10-
import java.util.stream.Stream;
9+
import java.util.function.UnaryOperator;
1110

12-
import org.jboss.as.controller.PathAddress;
13-
import org.jboss.as.controller.PersistentResourceXMLDescription;
14-
import org.jboss.as.controller.PersistentSubsystemSchema;
11+
import org.jboss.as.controller.ResourceDescription;
1512
import org.jboss.as.controller.SubsystemSchema;
13+
import org.jboss.as.controller.persistence.xml.ResourceXMLElement;
14+
import org.jboss.as.controller.persistence.xml.SubsystemResourceXMLSchema;
1615
import org.jboss.as.controller.xml.VersionedNamespace;
1716
import org.jboss.dmr.ModelNode;
1817
import org.jboss.staxmapper.IntVersion;
19-
import org.wildfly.io.OptionAttributeDefinition;
2018

2119
/**
2220
* Enumerates the supported schemas of the IO subsystem.
2321
*/
24-
public enum IOSubsystemSchema implements PersistentSubsystemSchema<IOSubsystemSchema> {
22+
public enum IOSubsystemSchema implements SubsystemResourceXMLSchema<IOSubsystemSchema> {
2523
VERSION_1_1(1, 1), // WildFly 8.1 - 10.1
2624
VERSION_2_0(2, 0), // WildFly 11 - 12
2725
VERSION_3_0(3, 0), // WildFly 13 - 31
@@ -32,7 +30,7 @@ public enum IOSubsystemSchema implements PersistentSubsystemSchema<IOSubsystemSc
3230
private final VersionedNamespace<IntVersion, IOSubsystemSchema> namespace;
3331

3432
IOSubsystemSchema(int major, int minor) {
35-
this.namespace = SubsystemSchema.createLegacySubsystemURN(IOSubsystemRegistrar.NAME, new IntVersion(major, minor));
33+
this.namespace = SubsystemSchema.createLegacySubsystemURN(IOSubsystemResourceDescription.INSTANCE.getName(), new IntVersion(major, minor));
3634
}
3735

3836
@Override
@@ -41,32 +39,29 @@ public VersionedNamespace<IntVersion, IOSubsystemSchema> getNamespace() {
4139
}
4240

4341
@Override
44-
public PersistentResourceXMLDescription getXMLDescription() {
45-
PersistentResourceXMLDescription.Factory factory = PersistentResourceXMLDescription.factory(this);
46-
PersistentResourceXMLDescription.Builder builder = factory.builder(IOSubsystemRegistrar.PATH);
47-
if (this.since(VERSION_4_0)) {
48-
builder.addAttribute(IOSubsystemRegistrar.DEFAULT_WORKER);
49-
} else {
50-
builder.setAdditionalOperationsGenerator(new PersistentResourceXMLDescription.AdditionalOperationsGenerator() {
42+
public ResourceXMLElement getSubsystemResourceXMLElement() {
43+
ResourceXMLElement.Builder.Factory factory = ResourceXMLElement.Builder.Factory.newInstance(this);
44+
ResourceXMLElement.Builder builder = factory.createBuilder(IOSubsystemResourceDescription.INSTANCE);
45+
if (!this.since(VERSION_4_0)) {
46+
builder.excludeAttribute(IOSubsystemResourceDescription.DEFAULT_WORKER);
47+
builder.withOperationTransformation(new UnaryOperator<>() {
5148
@Override
52-
public void additionalOperations(PathAddress address, ModelNode addOperation, List<ModelNode> operations) {
49+
public ModelNode apply(ModelNode operation) {
5350
// Apply "magic" default worker referenced by other subsystems
54-
addOperation.get(IOSubsystemRegistrar.DEFAULT_WORKER.getName()).set(IOSubsystemRegistrar.LEGACY_DEFAULT_WORKER);
51+
operation.get(IOSubsystemResourceDescription.DEFAULT_WORKER.getName()).set(IOSubsystemResourceRegistrar.LEGACY_DEFAULT_WORKER);
52+
return operation;
5553
}
5654
});
5755
}
58-
59-
Stream<OptionAttributeDefinition> workerAttributes = Stream.of(WorkerResourceDefinition.ATTRIBUTES);
56+
ResourceXMLElement.Builder workerBuilder = factory.createBuilder(ResourceDescription.of(WorkerResourceDefinition.PATH, List.of(WorkerResourceDefinition.ATTRIBUTES)));
6057
if (!this.since(VERSION_3_0)) {
61-
workerAttributes = workerAttributes.filter(Predicate.not(WorkerResourceDefinition.WORKER_TASK_CORE_THREADS::equals));
58+
workerBuilder.excludeAttribute(WorkerResourceDefinition.WORKER_TASK_CORE_THREADS);
6259
}
63-
PersistentResourceXMLDescription.Builder workerBuilder = factory.builder(WorkerResourceDefinition.PATH).addAttributes(workerAttributes);
6460
if (this.since(VERSION_2_0)) {
65-
workerBuilder.addChild(factory.builder(OutboundBindAddressResourceDefinition.PATH).addAttributes(OutboundBindAddressResourceDefinition.ATTRIBUTES.stream()).build());
61+
workerBuilder.appendChild(factory.createBuilder(ResourceDescription.of(OutboundBindAddressResourceDefinition.PATH, OutboundBindAddressResourceDefinition.ATTRIBUTES)).build());
6662
}
67-
68-
return builder.addChild(workerBuilder.build())
69-
.addChild(factory.builder(BufferPoolResourceDefinition.PATH).addAttributes(BufferPoolResourceDefinition.ATTRIBUTES.stream()).build())
63+
return builder.appendChild(workerBuilder.build())
64+
.appendChild(factory.createBuilder(ResourceDescription.of(BufferPoolResourceDefinition.PATH, BufferPoolResourceDefinition.ATTRIBUTES)).build())
7065
.build();
7166
}
7267
}

io/subsystem/src/main/java/org/wildfly/extension/io/IOSubsystemTransformationDescriptionFactory.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ public TransformationDescription apply(ModelVersion version) {
2525
ResourceTransformationDescriptionBuilder builder = TransformationDescriptionBuilder.Factory.createSubsystemInstance();
2626
if (IOSubsystemModel.VERSION_6_0_0.requiresTransformation(version)) {
2727
builder.getAttributeBuilder()
28-
.setDiscard(new DiscardAttributeChecker.DiscardAttributeValueChecker(IOSubsystemRegistrar.LEGACY_DEFAULT_WORKER), IOSubsystemRegistrar.DEFAULT_WORKER)
29-
.addRejectCheck(RejectAttributeChecker.DEFINED, IOSubsystemRegistrar.DEFAULT_WORKER)
28+
.setDiscard(new DiscardAttributeChecker.DiscardAttributeValueChecker(IOSubsystemResourceRegistrar.LEGACY_DEFAULT_WORKER), IOSubsystemResourceDescription.DEFAULT_WORKER)
29+
.addRejectCheck(RejectAttributeChecker.DEFINED, IOSubsystemResourceDescription.DEFAULT_WORKER)
3030
.end();
3131
}
3232
return builder.build();

io/subsystem/src/main/java/org/wildfly/extension/io/OutboundBindAddressResourceDefinition.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class OutboundBindAddressResourceDefinition extends PersistentResourceDef
5454
static final OutboundBindAddressResourceDefinition INSTANCE = new OutboundBindAddressResourceDefinition();
5555

5656
private OutboundBindAddressResourceDefinition() {
57-
super(new SimpleResourceDefinition.Parameters(PATH, IOSubsystemRegistrar.RESOLVER.createChildResolver(PATH))
57+
super(new SimpleResourceDefinition.Parameters(PATH, IOSubsystemResourceRegistrar.RESOLVER.createChildResolver(PATH))
5858
.setAddHandler(new OutboundBindAddressAddHandler())
5959
.setRemoveHandler(new OutboundBindAddressRemoveHandler())
6060
);

io/subsystem/src/main/java/org/wildfly/extension/io/WorkerResourceDefinition.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class WorkerResourceDefinition extends PersistentResourceDefinition {
101101
private static final AttributeDefinition BUSY_WORKER_THREAD_COUNT = new SimpleAttributeDefinitionBuilder("busy-task-thread-count", ModelType.INT).build();
102102

103103
WorkerResourceDefinition(AtomicInteger maxThreads) {
104-
super(new SimpleResourceDefinition.Parameters(PATH, IOSubsystemRegistrar.RESOLVER.createChildResolver(PATH))
104+
super(new SimpleResourceDefinition.Parameters(PATH, IOSubsystemResourceRegistrar.RESOLVER.createChildResolver(PATH))
105105
.setAddHandler(new WorkerAdd(maxThreads))
106106
.setRemoveHandler(ReloadRequiredRemoveStepHandler.INSTANCE)
107107
.addCapabilities(CAPABILITY));

io/subsystem/src/main/java/org/wildfly/extension/io/WorkerServerDefinition.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class WorkerServerDefinition extends SimpleResourceDefinition {
4343
static final ModelNode NO_METRICS = new ModelNode(IOLogger.ROOT_LOGGER.noMetrics());
4444

4545
WorkerServerDefinition() {
46-
super(new Parameters(PATH, IOSubsystemRegistrar.RESOLVER.createChildResolver(PathElement.pathElement(WorkerResourceDefinition.PATH.getKey(), PATH.getKey())))
46+
super(new Parameters(PATH, IOSubsystemResourceRegistrar.RESOLVER.createChildResolver(PathElement.pathElement(WorkerResourceDefinition.PATH.getKey(), PATH.getKey())))
4747
.setRuntime());
4848
}
4949

io/tests/src/test/java/org/wildfly/extension/io/IOSubsystemTestCase.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static Iterable<IOSubsystemSchema> parameters() {
4545
}
4646

4747
public IOSubsystemTestCase(IOSubsystemSchema schema) {
48-
super(IOSubsystemRegistrar.NAME, new IOExtension(), schema, IOSubsystemSchema.CURRENT);
48+
super(IOSubsystemResourceDescription.INSTANCE.getName(), new IOExtension(), schema, IOSubsystemSchema.CURRENT);
4949
}
5050

5151
@Test

io/tests/src/test/java/org/wildfly/extension/io/IOSubsystemTransformerTestCase.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static Iterable<ModelTestControllerVersion> parameters() {
4040
private final ModelVersion version;
4141

4242
public IOSubsystemTransformerTestCase(ModelTestControllerVersion controller) {
43-
super(IOSubsystemRegistrar.NAME, new IOExtension());
43+
super(IOSubsystemResourceDescription.INSTANCE.getName(), new IOExtension());
4444
this.controller = controller;
4545
this.version = this.getModelVersion().getVersion();
4646
this.additionalInitialization = AdditionalInitialization.MANAGEMENT;
@@ -129,10 +129,10 @@ public void testRejections() throws Exception {
129129

130130
private FailedOperationTransformationConfig createFailedOperationTransformationConfig() {
131131
FailedOperationTransformationConfig config = new FailedOperationTransformationConfig();
132-
PathAddress subsystemAddress = PathAddress.pathAddress(IOSubsystemRegistrar.PATH);
132+
PathAddress subsystemAddress = PathAddress.pathAddress(IOSubsystemResourceDescription.INSTANCE.getPathElement());
133133

134134
if (IOSubsystemModel.VERSION_6_0_0.requiresTransformation(this.version)) {
135-
config.addFailedAttribute(subsystemAddress, new FailedOperationTransformationConfig.NewAttributesConfig(IOSubsystemRegistrar.DEFAULT_WORKER.getName()));
135+
config.addFailedAttribute(subsystemAddress, new FailedOperationTransformationConfig.NewAttributesConfig(IOSubsystemResourceDescription.DEFAULT_WORKER.getName()));
136136
}
137137

138138
return config;

0 commit comments

Comments
 (0)