|
4 | 4 | */ |
5 | 5 | package org.wildfly.extension.discovery; |
6 | 6 |
|
7 | | -import org.jboss.as.controller.PathElement; |
| 7 | +import org.jboss.as.controller.OperationContext; |
| 8 | +import org.jboss.as.controller.OperationFailedException; |
8 | 9 | import org.jboss.as.controller.ResourceDefinition; |
9 | | -import org.jboss.as.controller.ResourceRegistration; |
10 | 10 | import org.jboss.as.controller.capability.RuntimeCapability; |
11 | 11 | import org.jboss.as.controller.registry.ManagementResourceRegistration; |
| 12 | +import org.jboss.dmr.ModelNode; |
12 | 13 | import org.wildfly.discovery.spi.DiscoveryProvider; |
13 | 14 | import org.wildfly.service.descriptor.UnaryServiceDescriptor; |
14 | 15 | import org.wildfly.subsystem.resource.ChildResourceDefinitionRegistrar; |
|
17 | 18 | import org.wildfly.subsystem.resource.ResourceDescriptor; |
18 | 19 | import org.wildfly.subsystem.resource.operation.ResourceOperationRuntimeHandler; |
19 | 20 | import org.wildfly.subsystem.service.ResourceServiceConfigurator; |
| 21 | +import org.wildfly.subsystem.service.ResourceServiceInstaller; |
| 22 | +import org.wildfly.subsystem.service.capability.CapabilityServiceInstaller; |
20 | 23 |
|
21 | 24 | /** |
22 | 25 | * Abstract registrar for a discovery provider resource definition. |
23 | 26 | * @author Paul Ferraro |
24 | 27 | */ |
25 | | -public abstract class DiscoveryProviderRegistrar implements ChildResourceDefinitionRegistrar, ResourceServiceConfigurator { |
| 28 | +public class DiscoveryProviderResourceRegistrar implements ChildResourceDefinitionRegistrar, ResourceServiceConfigurator { |
26 | 29 |
|
27 | 30 | // TODO Move this to an SPI module, when this capability acquires any consumers |
28 | 31 | static final UnaryServiceDescriptor<DiscoveryProvider> DISCOVERY_PROVIDER_DESCRIPTOR = UnaryServiceDescriptor.of("org.wildfly.discovery.provider", DiscoveryProvider.class); |
29 | 32 | static final RuntimeCapability<Void> DISCOVERY_PROVIDER_CAPABILITY = RuntimeCapability.Builder.of(DISCOVERY_PROVIDER_DESCRIPTOR).setAllowMultipleRegistrations(true).build(); |
30 | 33 |
|
31 | | - private final ResourceRegistration registration; |
32 | | - private final ResourceDescriptor descriptor; |
| 34 | + private final DiscoveryProviderResourceDescription description; |
33 | 35 |
|
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; |
39 | 38 | } |
40 | 39 |
|
41 | 40 | @Override |
42 | 41 | 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(); |
44 | 48 | ManagementResourceRegistration registration = parent.registerSubModel(definition); |
45 | 49 |
|
46 | | - ManagementResourceRegistrar.of(this.descriptor).register(registration); |
| 50 | + ManagementResourceRegistrar.of(descriptor).register(registration); |
47 | 51 |
|
48 | 52 | return registration; |
49 | 53 | } |
| 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 | + } |
50 | 59 | } |
0 commit comments