Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit a384225

Browse files
committedNov 29, 2024
Migrate discovery subsystem to SubsystemResourceXMLSchema.
1 parent f9007f0 commit a384225

12 files changed

+254
-56
lines changed
 
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 ‎discovery/src/main/java/org/wildfly/extension/discovery/AggregateDiscoveryProviderResourceRegistrar.java

+4-16
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

+1-1
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

+1-1
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
}
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 ‎discovery/src/main/java/org/wildfly/extension/discovery/DiscoveryProviderResourceRegistrar.java

+21-12
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
}
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 ‎discovery/src/main/java/org/wildfly/extension/discovery/DiscoverySubsystemResourceRegistrar.java

+5-9
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

+12-9
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
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
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.ArrayList;
9+
import java.util.List;
10+
import java.util.stream.Stream;
11+
12+
import org.jboss.as.controller.AttributeDefinition;
13+
import org.jboss.as.controller.AttributeMarshaller;
14+
import org.jboss.as.controller.AttributeParser;
15+
import org.jboss.as.controller.ObjectListAttributeDefinition;
16+
import org.jboss.as.controller.ObjectTypeAttributeDefinition;
17+
import org.jboss.as.controller.OperationContext;
18+
import org.jboss.as.controller.OperationFailedException;
19+
import org.jboss.as.controller.PathElement;
20+
import org.jboss.as.controller.SimpleAttributeDefinition;
21+
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
22+
import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
23+
import org.jboss.as.controller.registry.AttributeAccess.Flag;
24+
import org.jboss.dmr.ModelNode;
25+
import org.jboss.dmr.ModelType;
26+
import org.wildfly.discovery.AttributeValue;
27+
import org.wildfly.discovery.ServiceURL;
28+
import org.wildfly.discovery.impl.StaticDiscoveryProvider;
29+
import org.wildfly.discovery.spi.DiscoveryProvider;
30+
import org.wildfly.subsystem.service.ServiceDependency;
31+
32+
/**
33+
* Describes an aggregate discovery provider resource.
34+
* @author Paul Ferraro
35+
*/
36+
public enum StaticDiscoveryProviderResourceDescription implements DiscoveryProviderResourceDescription {
37+
INSTANCE;
38+
39+
private static final SimpleAttributeDefinition ABSTRACT_TYPE = new SimpleAttributeDefinitionBuilder("abstract-type", ModelType.STRING, true).setAllowExpression(true).build();
40+
private static final SimpleAttributeDefinition ABSTRACT_TYPE_AUTHORITY = new SimpleAttributeDefinitionBuilder("abstract-type-authority", ModelType.STRING, true).setAllowExpression(true).build();
41+
private static final SimpleAttributeDefinition URI = new SimpleAttributeDefinitionBuilder("uri", ModelType.STRING, false).setValidator(new ServiceURIValidator()).setAllowExpression(true).build();
42+
private static final SimpleAttributeDefinition URI_SCHEME_AUTHORITY = new SimpleAttributeDefinitionBuilder("uri-scheme-authority", ModelType.STRING, true).setAllowExpression(true).build();
43+
44+
private static final SimpleAttributeDefinition NAME = new SimpleAttributeDefinitionBuilder(ModelDescriptionConstants.NAME, ModelType.STRING, false).setAllowExpression(true).build();
45+
private static final SimpleAttributeDefinition VALUE = new SimpleAttributeDefinitionBuilder(ModelDescriptionConstants.VALUE, ModelType.STRING, true).setAllowExpression(true).build();
46+
47+
private static final ObjectTypeAttributeDefinition ATTRIBUTE = new ObjectTypeAttributeDefinition.Builder("attribute", NAME, VALUE).build();
48+
49+
private static final ObjectListAttributeDefinition SERVICE_ATTRIBUTES = new ObjectListAttributeDefinition.Builder("attributes", ATTRIBUTE)
50+
.setAttributeMarshaller(AttributeMarshaller.UNWRAPPED_OBJECT_LIST_MARSHALLER)
51+
.setAttributeParser(AttributeParser.UNWRAPPED_OBJECT_LIST_PARSER)
52+
.setRequired(false)
53+
.build();
54+
55+
private static final ObjectTypeAttributeDefinition SERVICE = new ObjectTypeAttributeDefinition.Builder("service",
56+
ABSTRACT_TYPE,
57+
ABSTRACT_TYPE_AUTHORITY,
58+
URI,
59+
URI_SCHEME_AUTHORITY,
60+
SERVICE_ATTRIBUTES
61+
).build();
62+
63+
private static final ObjectListAttributeDefinition SERVICES = new ObjectListAttributeDefinition.Builder("services", SERVICE)
64+
.setAttributeMarshaller(AttributeMarshaller.UNWRAPPED_OBJECT_LIST_MARSHALLER)
65+
.setAttributeParser(AttributeParser.UNWRAPPED_OBJECT_LIST_PARSER)
66+
.setFlags(Flag.RESTART_RESOURCE_SERVICES)
67+
.build();
68+
69+
private final PathElement path = PathElement.pathElement("static-provider");
70+
71+
@Override
72+
public PathElement getPathElement() {
73+
return this.path;
74+
}
75+
76+
@Override
77+
public Stream<AttributeDefinition> getAttributes() {
78+
return Stream.of(SERVICES);
79+
}
80+
81+
@Override
82+
public ServiceDependency<DiscoveryProvider> resolve(OperationContext context, ModelNode model) throws OperationFailedException {
83+
List<ModelNode> services = SERVICES.resolveModelAttribute(context, model).asListOrEmpty();
84+
List<ServiceURL> serviceURLs = new ArrayList<>(services.size());
85+
for (ModelNode service : services) {
86+
ServiceURL.Builder builder = new ServiceURL.Builder();
87+
builder.setUri(java.net.URI.create(URI.resolveModelAttribute(context, service).asString()));
88+
String abstractType = ABSTRACT_TYPE.resolveModelAttribute(context, service).asStringOrNull();
89+
if (abstractType != null) {
90+
builder.setAbstractType(abstractType);
91+
}
92+
String abstractTypeAuthority = ABSTRACT_TYPE_AUTHORITY.resolveModelAttribute(context, service).asStringOrNull();
93+
if (abstractTypeAuthority != null) {
94+
builder.setAbstractTypeAuthority(abstractTypeAuthority);
95+
}
96+
String uriSchemeAuthority = URI_SCHEME_AUTHORITY.resolveModelAttribute(context, service).asStringOrNull();
97+
if (uriSchemeAuthority != null) {
98+
builder.setUriSchemeAuthority(uriSchemeAuthority);
99+
}
100+
for (ModelNode attribute : SERVICE_ATTRIBUTES.resolveModelAttribute(context, service).asListOrEmpty()) {
101+
String name = NAME.resolveModelAttribute(context, attribute).asString();
102+
String value = VALUE.resolveModelAttribute(context, attribute).asStringOrNull();
103+
if (value != null) {
104+
builder.addAttribute(name, AttributeValue.fromString(value));
105+
} else {
106+
builder.addAttribute(name);
107+
}
108+
}
109+
ServiceURL serviceURL = builder.create();
110+
Messages.log.tracef("Adding service URL %s", serviceURL);
111+
serviceURLs.add(serviceURL);
112+
}
113+
return ServiceDependency.of(new StaticDiscoveryProvider(serviceURLs));
114+
}
115+
}

‎discovery/src/main/java/org/wildfly/extension/discovery/StaticDiscoveryProviderRegistrar.java ‎discovery/src/main/java/org/wildfly/extension/discovery/StaticDiscoveryProviderResourceRegistrar.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import org.jboss.as.controller.ObjectTypeAttributeDefinition;
1717
import org.jboss.as.controller.OperationContext;
1818
import org.jboss.as.controller.OperationFailedException;
19-
import org.jboss.as.controller.PathElement;
2019
import org.jboss.as.controller.SimpleAttributeDefinition;
2120
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
2221
import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
@@ -26,16 +25,14 @@
2625
import org.wildfly.discovery.AttributeValue;
2726
import org.wildfly.discovery.ServiceURL;
2827
import org.wildfly.discovery.impl.StaticDiscoveryProvider;
29-
import org.wildfly.subsystem.resource.ResourceDescriptor;
3028
import org.wildfly.subsystem.service.ResourceServiceInstaller;
3129
import org.wildfly.subsystem.service.capability.CapabilityServiceInstaller;
3230

3331
/**
3432
* Registers the static discovery provider resource definition.
3533
* @author Paul Ferraro
3634
*/
37-
public class StaticDiscoveryProviderRegistrar extends DiscoveryProviderRegistrar {
38-
static final PathElement PATH = PathElement.pathElement("static-provider");
35+
public class StaticDiscoveryProviderResourceRegistrar extends DiscoveryProviderResourceRegistrar {
3936

4037
private static final SimpleAttributeDefinition ABSTRACT_TYPE = new SimpleAttributeDefinitionBuilder("abstract-type", ModelType.STRING, true).setAllowExpression(true).build();
4138
private static final SimpleAttributeDefinition ABSTRACT_TYPE_AUTHORITY = new SimpleAttributeDefinitionBuilder("abstract-type-authority", ModelType.STRING, true).setAllowExpression(true).build();
@@ -69,8 +66,8 @@ public class StaticDiscoveryProviderRegistrar extends DiscoveryProviderRegistrar
6966

7067
static final Collection<AttributeDefinition> ATTRIBUTES = List.of(SERVICES);
7168

72-
StaticDiscoveryProviderRegistrar() {
73-
super(PATH, ResourceDescriptor.builder(DiscoverySubsystemRegistrar.RESOLVER.createChildResolver(PATH)).addAttributes(ATTRIBUTES));
69+
StaticDiscoveryProviderResourceRegistrar() {
70+
super(StaticDiscoveryProviderResourceDescription.INSTANCE);
7471
}
7572

7673
@Override
@@ -105,6 +102,6 @@ public ResourceServiceInstaller configure(OperationContext context, ModelNode mo
105102
Messages.log.tracef("Adding service URL %s", serviceURL);
106103
serviceURLs.add(serviceURL);
107104
}
108-
return CapabilityServiceInstaller.builder(DiscoveryProviderRegistrar.DISCOVERY_PROVIDER_CAPABILITY, new StaticDiscoveryProvider(serviceURLs)).build();
105+
return CapabilityServiceInstaller.builder(DiscoveryProviderResourceRegistrar.DISCOVERY_PROVIDER_CAPABILITY, new StaticDiscoveryProvider(serviceURLs)).build();
109106
}
110107
}

‎discovery/src/test/java/org/wildfly/extension/discovery/DiscoverySubsystemTestCase.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public static Iterable<DiscoverySubsystemSchema> parameters() {
2525
}
2626

2727
public DiscoverySubsystemTestCase(DiscoverySubsystemSchema schema) {
28-
super(DiscoverySubsystemRegistrar.NAME, new DiscoveryExtension(), schema, DiscoverySubsystemSchema.CURRENT);
28+
super(DiscoverySubsystemResourceDescription.INSTANCE.getName(), new DiscoveryExtension(), schema, DiscoverySubsystemSchema.CURRENT);
2929
}
3030
}

0 commit comments

Comments
 (0)
Please sign in to comment.