Skip to content

Commit d612ea2

Browse files
committed
Migrate discovery subsystem to SubsystemResourceXMLSchema.
1 parent 01f191a commit d612ea2

12 files changed

Lines changed: 254 additions & 56 deletions
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright The WildFly Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.wildfly.extension.discovery;
7+
8+
import java.util.List;
9+
import java.util.function.Function;
10+
import java.util.stream.Stream;
11+
12+
import org.jboss.as.controller.AttributeDefinition;
13+
import org.jboss.as.controller.OperationContext;
14+
import org.jboss.as.controller.OperationFailedException;
15+
import org.jboss.as.controller.PathElement;
16+
import org.jboss.dmr.ModelNode;
17+
import org.wildfly.discovery.impl.AggregateDiscoveryProvider;
18+
import org.wildfly.discovery.spi.DiscoveryProvider;
19+
import org.wildfly.subsystem.resource.capability.CapabilityReference;
20+
import org.wildfly.subsystem.resource.capability.CapabilityReferenceListAttributeDefinition;
21+
import org.wildfly.subsystem.service.ServiceDependency;
22+
23+
/**
24+
* Describes an aggregate discovery provider resource.
25+
* @author Paul Ferraro
26+
*/
27+
public enum AggregateDiscoveryProviderResourceDescription implements DiscoveryProviderResourceDescription {
28+
INSTANCE;
29+
30+
static final CapabilityReferenceListAttributeDefinition<DiscoveryProvider> PROVIDER_NAMES = new CapabilityReferenceListAttributeDefinition.Builder<>("providers", CapabilityReference.builder(DiscoveryProviderResourceRegistrar.DISCOVERY_PROVIDER_CAPABILITY, DiscoveryProviderResourceRegistrar.DISCOVERY_PROVIDER_DESCRIPTOR).build()).build();
31+
32+
private final PathElement path = PathElement.pathElement("aggregate-provider");
33+
34+
@Override
35+
public PathElement getPathElement() {
36+
return this.path;
37+
}
38+
39+
@Override
40+
public Stream<AttributeDefinition> getAttributes() {
41+
return Stream.of(PROVIDER_NAMES);
42+
}
43+
44+
@Override
45+
public ServiceDependency<DiscoveryProvider> resolve(OperationContext context, ModelNode model) throws OperationFailedException {
46+
return AggregateDiscoveryProviderResourceDescription.PROVIDER_NAMES.resolve(context, model).map(new Function<>() {
47+
@Override
48+
public DiscoveryProvider apply(List<DiscoveryProvider> providers) {
49+
return new AggregateDiscoveryProvider(providers.toArray(DiscoveryProvider[]::new));
50+
}
51+
});
52+
}
53+
}

discovery/src/main/java/org/wildfly/extension/discovery/AggregateDiscoveryProviderRegistrar.java renamed to discovery/src/main/java/org/wildfly/extension/discovery/AggregateDiscoveryProviderResourceRegistrar.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,14 @@
44
*/
55
package org.wildfly.extension.discovery;
66

7-
import java.util.Collection;
87
import java.util.List;
98
import java.util.function.Function;
109

11-
import org.jboss.as.controller.AttributeDefinition;
1210
import org.jboss.as.controller.OperationContext;
1311
import org.jboss.as.controller.OperationFailedException;
14-
import org.jboss.as.controller.PathElement;
1512
import org.jboss.dmr.ModelNode;
1613
import org.wildfly.discovery.impl.AggregateDiscoveryProvider;
1714
import org.wildfly.discovery.spi.DiscoveryProvider;
18-
import org.wildfly.subsystem.resource.ResourceDescriptor;
19-
import org.wildfly.subsystem.resource.capability.CapabilityReference;
20-
import org.wildfly.subsystem.resource.capability.CapabilityReferenceListAttributeDefinition;
2115
import org.wildfly.subsystem.service.ResourceServiceInstaller;
2216
import org.wildfly.subsystem.service.ServiceDependency;
2317
import org.wildfly.subsystem.service.capability.CapabilityServiceInstaller;
@@ -26,21 +20,15 @@
2620
* Registers the aggregate discovery provider resource definition.
2721
* @author Paul Ferraro
2822
*/
29-
public class AggregateDiscoveryProviderRegistrar extends DiscoveryProviderRegistrar {
23+
public class AggregateDiscoveryProviderResourceRegistrar extends DiscoveryProviderResourceRegistrar {
3024

31-
static final PathElement PATH = PathElement.pathElement("aggregate-provider");
32-
33-
private static final CapabilityReferenceListAttributeDefinition<DiscoveryProvider> PROVIDER_NAMES = new CapabilityReferenceListAttributeDefinition.Builder<>("providers", CapabilityReference.builder(DISCOVERY_PROVIDER_CAPABILITY, DISCOVERY_PROVIDER_DESCRIPTOR).build()).build();
34-
35-
static final Collection<AttributeDefinition> ATTRIBUTES = List.of(PROVIDER_NAMES);
36-
37-
AggregateDiscoveryProviderRegistrar() {
38-
super(PATH, ResourceDescriptor.builder(DiscoverySubsystemRegistrar.RESOLVER.createChildResolver(PATH)).addAttributes(ATTRIBUTES));
25+
AggregateDiscoveryProviderResourceRegistrar() {
26+
super(AggregateDiscoveryProviderResourceDescription.INSTANCE);
3927
}
4028

4129
@Override
4230
public ResourceServiceInstaller configure(OperationContext context, ModelNode model) throws OperationFailedException {
43-
ServiceDependency<DiscoveryProvider> provider = PROVIDER_NAMES.resolve(context, model).map(new Function<>() {
31+
ServiceDependency<DiscoveryProvider> provider = AggregateDiscoveryProviderResourceDescription.PROVIDER_NAMES.resolve(context, model).map(new Function<>() {
4432
@Override
4533
public DiscoveryProvider apply(List<DiscoveryProvider> providers) {
4634
return new AggregateDiscoveryProvider(providers.toArray(DiscoveryProvider[]::new));

discovery/src/main/java/org/wildfly/extension/discovery/DiscoveryExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
public class DiscoveryExtension extends SubsystemExtension<DiscoverySubsystemSchema> {
1818

1919
public DiscoveryExtension() {
20-
super(SubsystemConfiguration.of(DiscoverySubsystemRegistrar.NAME, DiscoverySubsystemModel.CURRENT, DiscoverySubsystemRegistrar::new), SubsystemPersistence.of(DiscoverySubsystemSchema.CURRENT));
20+
super(SubsystemConfiguration.of(DiscoverySubsystemResourceDescription.INSTANCE, DiscoverySubsystemModel.CURRENT, DiscoverySubsystemResourceRegistrar::new), SubsystemPersistence.of(DiscoverySubsystemSchema.CURRENT));
2121
}
2222
}

discovery/src/main/java/org/wildfly/extension/discovery/DiscoveryExtensionTransformerRegistration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
public class DiscoveryExtensionTransformerRegistration extends SubsystemExtensionTransformerRegistration {
1515

1616
public DiscoveryExtensionTransformerRegistration() {
17-
super(DiscoverySubsystemRegistrar.NAME, DiscoverySubsystemModel.CURRENT, DiscoverySubsystemTransformationDescriptionFactory.INSTANCE);
17+
super(DiscoverySubsystemResourceDescription.INSTANCE, DiscoverySubsystemModel.CURRENT, DiscoverySubsystemTransformationDescriptionFactory.INSTANCE);
1818
}
1919
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Copyright The WildFly Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.wildfly.extension.discovery;
7+
8+
import org.jboss.as.controller.ResourceDescription;
9+
import org.wildfly.discovery.spi.DiscoveryProvider;
10+
import org.wildfly.subsystem.resource.ResourceModelResolver;
11+
import org.wildfly.subsystem.service.ServiceDependency;
12+
13+
/**
14+
* Describes a discovery provider resource
15+
*/
16+
public interface DiscoveryProviderResourceDescription extends ResourceDescription, ResourceModelResolver<ServiceDependency<DiscoveryProvider>> {
17+
}

discovery/src/main/java/org/wildfly/extension/discovery/DiscoveryProviderRegistrar.java renamed to discovery/src/main/java/org/wildfly/extension/discovery/DiscoveryProviderResourceRegistrar.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
*/
55
package org.wildfly.extension.discovery;
66

7-
import org.jboss.as.controller.PathElement;
7+
import org.jboss.as.controller.OperationContext;
8+
import org.jboss.as.controller.OperationFailedException;
89
import org.jboss.as.controller.ResourceDefinition;
9-
import org.jboss.as.controller.ResourceRegistration;
1010
import org.jboss.as.controller.capability.RuntimeCapability;
1111
import org.jboss.as.controller.registry.ManagementResourceRegistration;
12+
import org.jboss.dmr.ModelNode;
1213
import org.wildfly.discovery.spi.DiscoveryProvider;
1314
import org.wildfly.service.descriptor.UnaryServiceDescriptor;
1415
import org.wildfly.subsystem.resource.ChildResourceDefinitionRegistrar;
@@ -17,34 +18,42 @@
1718
import org.wildfly.subsystem.resource.ResourceDescriptor;
1819
import org.wildfly.subsystem.resource.operation.ResourceOperationRuntimeHandler;
1920
import org.wildfly.subsystem.service.ResourceServiceConfigurator;
21+
import org.wildfly.subsystem.service.ResourceServiceInstaller;
22+
import org.wildfly.subsystem.service.capability.CapabilityServiceInstaller;
2023

2124
/**
2225
* Abstract registrar for a discovery provider resource definition.
2326
* @author Paul Ferraro
2427
*/
25-
public abstract class DiscoveryProviderRegistrar implements ChildResourceDefinitionRegistrar, ResourceServiceConfigurator {
28+
public class DiscoveryProviderResourceRegistrar implements ChildResourceDefinitionRegistrar, ResourceServiceConfigurator {
2629

2730
// TODO Move this to an SPI module, when this capability acquires any consumers
2831
static final UnaryServiceDescriptor<DiscoveryProvider> DISCOVERY_PROVIDER_DESCRIPTOR = UnaryServiceDescriptor.of("org.wildfly.discovery.provider", DiscoveryProvider.class);
2932
static final RuntimeCapability<Void> DISCOVERY_PROVIDER_CAPABILITY = RuntimeCapability.Builder.of(DISCOVERY_PROVIDER_DESCRIPTOR).setAllowMultipleRegistrations(true).build();
3033

31-
private final ResourceRegistration registration;
32-
private final ResourceDescriptor descriptor;
34+
private final DiscoveryProviderResourceDescription description;
3335

34-
DiscoveryProviderRegistrar(PathElement path, ResourceDescriptor.Builder builder) {
35-
this.registration = ResourceRegistration.of(path);
36-
this.descriptor = builder.addCapability(DISCOVERY_PROVIDER_CAPABILITY)
37-
.withRuntimeHandler(ResourceOperationRuntimeHandler.configureService(this))
38-
.build();
36+
DiscoveryProviderResourceRegistrar(DiscoveryProviderResourceDescription description) {
37+
this.description = description;
3938
}
4039

4140
@Override
4241
public ManagementResourceRegistration register(ManagementResourceRegistration parent, ManagementResourceRegistrationContext context) {
43-
ResourceDefinition definition = ResourceDefinition.builder(this.registration, this.descriptor.getResourceDescriptionResolver()).build();
42+
ResourceDescriptor descriptor = ResourceDescriptor.builder(DiscoverySubsystemResourceRegistrar.RESOLVER.createChildResolver(this.description.getPathElement()))
43+
.addAttributes(this.description.getAttributes().toList())
44+
.addCapability(DISCOVERY_PROVIDER_CAPABILITY)
45+
.withRuntimeHandler(ResourceOperationRuntimeHandler.configureService(this))
46+
.build();
47+
ResourceDefinition definition = ResourceDefinition.builder(this.description, descriptor.getResourceDescriptionResolver()).build();
4448
ManagementResourceRegistration registration = parent.registerSubModel(definition);
4549

46-
ManagementResourceRegistrar.of(this.descriptor).register(registration);
50+
ManagementResourceRegistrar.of(descriptor).register(registration);
4751

4852
return registration;
4953
}
54+
55+
@Override
56+
public ResourceServiceInstaller configure(OperationContext context, ModelNode model) throws OperationFailedException {
57+
return CapabilityServiceInstaller.builder(DiscoveryProviderResourceRegistrar.DISCOVERY_PROVIDER_CAPABILITY, this.description.resolve(context, model)).build();
58+
}
5059
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright The WildFly Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.wildfly.extension.discovery;
7+
8+
import org.jboss.as.controller.SubsystemResourceDescription;
9+
10+
/**
11+
* Describes the discovery subsystem resource.
12+
*/
13+
public enum DiscoverySubsystemResourceDescription implements SubsystemResourceDescription {
14+
INSTANCE;
15+
16+
@Override
17+
public String getName() {
18+
return "discovery";
19+
}
20+
}

discovery/src/main/java/org/wildfly/extension/discovery/DiscoverySubsystemRegistrar.java renamed to discovery/src/main/java/org/wildfly/extension/discovery/DiscoverySubsystemResourceRegistrar.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55

66
package org.wildfly.extension.discovery;
77

8-
import org.jboss.as.controller.PathElement;
98
import org.jboss.as.controller.ResourceDefinition;
10-
import org.jboss.as.controller.ResourceRegistration;
119
import org.jboss.as.controller.SubsystemRegistration;
1210
import org.jboss.as.controller.descriptions.ParentResourceDescriptionResolver;
1311
import org.jboss.as.controller.descriptions.SubsystemResourceDescriptionResolver;
@@ -21,23 +19,21 @@
2119
* Registrar for the discovery subsystem.
2220
* @author Paul Ferraro
2321
*/
24-
class DiscoverySubsystemRegistrar implements SubsystemResourceDefinitionRegistrar {
22+
class DiscoverySubsystemResourceRegistrar implements SubsystemResourceDefinitionRegistrar {
2523

26-
static final String NAME = "discovery";
27-
static final PathElement PATH = SubsystemResourceDefinitionRegistrar.pathElement(NAME);
28-
static final ParentResourceDescriptionResolver RESOLVER = new SubsystemResourceDescriptionResolver(NAME, DiscoverySubsystemRegistrar.class);
24+
static final ParentResourceDescriptionResolver RESOLVER = new SubsystemResourceDescriptionResolver(DiscoverySubsystemResourceDescription.INSTANCE.getName(), DiscoverySubsystemResourceRegistrar.class);
2925

3026
@Override
3127
public ManagementResourceRegistration register(SubsystemRegistration parent, ManagementResourceRegistrationContext context) {
3228
parent.setHostCapable();
3329

34-
ManagementResourceRegistration registration = parent.registerSubsystemModel(ResourceDefinition.builder(ResourceRegistration.of(PATH), RESOLVER).build());
30+
ManagementResourceRegistration registration = parent.registerSubsystemModel(ResourceDefinition.builder(DiscoverySubsystemResourceDescription.INSTANCE, RESOLVER).build());
3531
ResourceDescriptor descriptor = ResourceDescriptor.builder(RESOLVER).build();
3632

3733
ManagementResourceRegistrar.of(descriptor).register(registration);
3834

39-
new AggregateDiscoveryProviderRegistrar().register(registration, context);
40-
new StaticDiscoveryProviderRegistrar().register(registration, context);
35+
new AggregateDiscoveryProviderResourceRegistrar().register(registration, context);
36+
new StaticDiscoveryProviderResourceRegistrar().register(registration, context);
4137

4238
return registration;
4339
}

discovery/src/main/java/org/wildfly/extension/discovery/DiscoverySubsystemSchema.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,29 @@
55

66
package org.wildfly.extension.discovery;
77

8-
import org.jboss.as.controller.PersistentResourceXMLDescription;
9-
import org.jboss.as.controller.PersistentSubsystemSchema;
8+
import java.util.List;
9+
1010
import org.jboss.as.controller.SubsystemSchema;
11+
import org.jboss.as.controller.persistence.xml.ResourceXMLElement;
12+
import org.jboss.as.controller.persistence.xml.SubsystemResourceXMLSchema;
1113
import org.jboss.as.controller.xml.VersionedNamespace;
14+
import org.jboss.as.controller.xml.XMLCardinality;
15+
import org.jboss.as.controller.xml.XMLChoice;
1216
import org.jboss.staxmapper.IntVersion;
1317

1418
/**
1519
* Enumeration of discovery subsystem schema versions.
1620
* @author Paul Ferraro
1721
*/
18-
enum DiscoverySubsystemSchema implements PersistentSubsystemSchema<DiscoverySubsystemSchema> {
22+
enum DiscoverySubsystemSchema implements SubsystemResourceXMLSchema<DiscoverySubsystemSchema> {
1923
VERSION_1_0(1, 0),
2024
;
2125
static final DiscoverySubsystemSchema CURRENT = VERSION_1_0;
2226

2327
private final VersionedNamespace<IntVersion, DiscoverySubsystemSchema> namespace;
2428

2529
DiscoverySubsystemSchema(int major, int minor) {
26-
this.namespace = SubsystemSchema.createLegacySubsystemURN(DiscoverySubsystemRegistrar.NAME, new IntVersion(major, minor));
30+
this.namespace = SubsystemSchema.createLegacySubsystemURN(DiscoverySubsystemResourceDescription.INSTANCE.getName(), new IntVersion(major, minor));
2731
}
2832

2933
@Override
@@ -32,11 +36,10 @@ public VersionedNamespace<IntVersion, DiscoverySubsystemSchema> getNamespace() {
3236
}
3337

3438
@Override
35-
public PersistentResourceXMLDescription getXMLDescription() {
36-
PersistentResourceXMLDescription.Factory factory = PersistentResourceXMLDescription.factory(this);
37-
return factory.builder(DiscoverySubsystemRegistrar.PATH)
38-
.addChild(factory.builder(StaticDiscoveryProviderRegistrar.PATH).addAttributes(StaticDiscoveryProviderRegistrar.ATTRIBUTES.stream()).build())
39-
.addChild(factory.builder(AggregateDiscoveryProviderRegistrar.PATH).addAttributes(AggregateDiscoveryProviderRegistrar.ATTRIBUTES.stream()).build())
39+
public ResourceXMLElement getSubsystemResourceXMLElement() {
40+
ResourceXMLElement.Builder.Factory factory = ResourceXMLElement.Builder.Factory.newInstance(this);
41+
return factory.createBuilder(DiscoverySubsystemResourceDescription.INSTANCE)
42+
.appendChild(XMLChoice.of(List.of(factory.createBuilder(StaticDiscoveryProviderResourceDescription.INSTANCE).build(), factory.createBuilder(AggregateDiscoveryProviderResourceDescription.INSTANCE).build()), XMLCardinality.Unbounded.OPTIONAL))
4043
.build();
4144
}
4245
}

0 commit comments

Comments
 (0)