Skip to content

Commit

Permalink
WFCORE-805 Add capabilty information to ResourceDefinition / MRR
Browse files Browse the repository at this point in the history
  • Loading branch information
ctomc committed Jul 21, 2015
1 parent 5ef6a94 commit f19abfb
Show file tree
Hide file tree
Showing 23 changed files with 230 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ public void registerNotifications(ManagementResourceRegistration resourceRegistr
delegate.registerNotifications(resourceRegistration);
}

@Override
public void registerCapabilities(ManagementResourceRegistration resourceRegistration) {
delegate.registerCapabilities(resourceRegistration);
}

@Override
public PathElement getPathElement() {
return delegate.getPathElement();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,13 @@ public interface ResourceDefinition {
*/
void registerChildren(final ManagementResourceRegistration resourceRegistration);

/**
* Register capabilities associated with this resource.
*
* @param resourceRegistration a {@link ManagementResourceRegistration} created from this definition
*/
void registerCapabilities(final ManagementResourceRegistration resourceRegistration);

/**
* Get the definition of any access constraints associated with the resource.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,11 @@ public void registerChildren(ManagementResourceRegistration resourceRegistration
// no-op
}

@Override
public void registerCapabilities(ManagementResourceRegistration resourceRegistration) {
// no-op
}

/**
* Gets the {@link ResourceDescriptionResolver} used by this resource definition, or {@code null}
* if a {@code ResourceDescriptionResolver} is not used.
Expand Down Expand Up @@ -564,6 +569,22 @@ public Parameters setDeprecationData(DeprecationData deprecationData) {
return this;
}

/**
* Call to deprecate the resource
*
* @param deprecatedSince version in which model was deprecated
* @return this Parameters object
* @throws IllegalStateException if the {@code deprecationData} is null
*/
public Parameters setDeprecatedSince(ModelVersion deprecatedSince) {
if (deprecationData == null) {
throw ControllerLogger.ROOT_LOGGER.nullVar("addRestartLevel");
}

this.deprecationData = new DeprecationData(deprecatedSince);
return this;
}

/**
* Call to indicate that a resource is of a type where ordering matters amongst the siblings of the same type.
* If not called, the default is {@code false}.
Expand All @@ -575,5 +596,6 @@ public Parameters setOrderedChild() {
this.orderedChildResource = true;
return this;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ATTRIBUTES;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.CHILDREN;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.DESCRIPTION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.DYNAMIC;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.MODEL_DESCRIPTION;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.NAME;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.NOTIFICATIONS;
import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OPERATIONS;

Expand All @@ -41,6 +43,7 @@
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.access.management.AccessConstraintDescriptionProviderUtil;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.registry.AttributeAccess;
import org.jboss.as.controller.registry.ImmutableManagementResourceRegistration;
import org.jboss.dmr.ModelNode;
Expand Down Expand Up @@ -76,6 +79,15 @@ public ModelNode getModelDescription(Locale locale) {
final ResourceBundle bundle = descriptionResolver.getResourceBundle(locale);
result.get(DESCRIPTION).set(descriptionResolver.getResourceDescription(locale, bundle));

Set<RuntimeCapability<?>> capabilities = registration.getCapabilities();
if (capabilities!=null&&!capabilities.isEmpty()){
for (RuntimeCapability capability: capabilities) {
ModelNode cap = result.get(ModelDescriptionConstants.CAPABILITIES).add();
cap.get(NAME).set(capability.getName());
cap.get(DYNAMIC).set(capability.isDynamicallyNamed());
}
}

if (deprecationData != null) {
ModelNode deprecated = addDeprecatedInfo(result);
deprecated.get(ModelDescriptionConstants.REASON).set(descriptionResolver.getResourceDeprecatedDescription(locale, bundle));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ public class ModelDescriptionConstants {
public static final String CALLER_THREAD = "caller-thread";
public static final String CALLER_TYPE = "caller-type";
public static final String CANCELLED = "cancelled";
public static final String CAPABILITIES = " capabilities";
public static final String CAPABILITY_REFERENCE = "capability-reference";
public static final String CHILD_TYPE = "child-type";
public static final String CHILDREN = "children";
Expand Down Expand Up @@ -140,6 +141,7 @@ public class ModelDescriptionConstants {
public static final String DOMAIN_MODEL = "domain-model";
public static final String DOMAIN_RESULTS = "domain-results";
public static final String DOMAIN_UUID = "domain-uuid";
public static final String DYNAMIC = "capability";
public static final String DUMP_SERVICES = "dump-services";
public static final String ENABLE = "enable";
public static final String ENABLED = "enabled";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
import org.jboss.as.controller.access.management.JmxAuthorizer;
import org.jboss.as.controller.audit.AuditLogger;
import org.jboss.as.controller.audit.ManagedAuditLogger;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
import org.jboss.as.controller.descriptions.NonResolvingResourceDescriptionResolver;
Expand Down Expand Up @@ -1018,6 +1019,12 @@ public void unregisterAlias(PathElement address) {
subdeployments.unregisterAlias(address);
}

@Override
public void registerCapability(RuntimeCapability<?> capability) {
deployments.registerCapability(capability);
subdeployments.registerCapability(capability);
}

@Override
public AliasEntry getAliasEntry() {
return deployments.getAliasEntry();
Expand All @@ -1027,6 +1034,11 @@ public AliasEntry getAliasEntry() {
public boolean isAlias() {
return deployments.isAlias();
}

@Override
public Set<RuntimeCapability<?>> getCapabilities() {
return deployments.getCapabilities();
}
}

private static final JmxAuthorizer NO_OP_AUTHORIZER = new JmxAuthorizer() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.jboss.as.controller.ProxyController;
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.descriptions.OverrideDescriptionProvider;
import org.jboss.as.controller.logging.ControllerLogger;
Expand Down Expand Up @@ -200,6 +201,11 @@ public void unregisterNotification(String notificationType) {
throw alreadyRegistered();
}

@Override
public void registerCapability(RuntimeCapability<?> capability) {
throw alreadyRegistered();
}

@Override
void getOperationDescriptions(final ListIterator<PathElement> iterator, final Map<String, OperationEntry> providers, final boolean inherited) {
Map<String, OperationEntry> temp = new HashMap<String, OperationEntry>();
Expand Down Expand Up @@ -308,4 +314,9 @@ public Set<String> getOrderedChildTypes() {
public void setOrderedChild(String key) {
throw alreadyRegistered();
}

@Override
public Set<RuntimeCapability<?>> getCapabilities() {
return target.getCapabilities();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.util.ListIterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;

Expand All @@ -45,6 +46,7 @@
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.access.management.AccessConstraintUtilizationRegistry;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.logging.ControllerLogger;
import org.jboss.as.controller.registry.AttributeAccess.AccessType;
Expand Down Expand Up @@ -82,6 +84,8 @@ final class ConcreteResourceRegistration extends AbstractResourceRegistration {
private static final AtomicMapFieldUpdater<ConcreteResourceRegistration, String, AttributeAccess> attributesUpdater = AtomicMapFieldUpdater.newMapUpdater(AtomicReferenceFieldUpdater.newUpdater(ConcreteResourceRegistration.class, Map.class, "attributes"));
private static final AtomicMapFieldUpdater<ConcreteResourceRegistration, String, Empty> orderedChildUpdater = AtomicMapFieldUpdater.newMapUpdater(AtomicReferenceFieldUpdater.newUpdater(ConcreteResourceRegistration.class, Map.class, "orderedChildTypes"));

private final Set<RuntimeCapability<?>> capabilities = new CopyOnWriteArraySet<>();

ConcreteResourceRegistration(final String valueString, final NodeSubregistry parent, final ResourceDefinition definition,
final AccessConstraintUtilizationRegistry constraintUtilizationRegistry,
final boolean runtimeOnly, final boolean ordered) {
Expand Down Expand Up @@ -182,6 +186,7 @@ public ManagementResourceRegistration registerSubModel(final ResourceDefinition
resourceDefinition.registerOperations(resourceRegistration);
resourceDefinition.registerNotifications(resourceRegistration);
resourceDefinition.registerChildren(resourceRegistration);
resourceDefinition.registerCapabilities(resourceRegistration);
if (constraintUtilizationRegistry != null) {
PathAddress childAddress = getPathAddress().append(address);
List<AccessConstraintDefinition> constraintDefinitions = resourceDefinition.getAccessConstraints();
Expand Down Expand Up @@ -449,6 +454,10 @@ public void unregisterAlias(PathElement address) {
}
}

public void registerCapability(RuntimeCapability<?> capability){
capabilities.add(capability);
}

NodeSubregistry getOrCreateSubregistry(final String key) {
for (;;) {
final Map<String, NodeSubregistry> snapshot = childrenUpdater.get(this);
Expand Down Expand Up @@ -640,6 +649,11 @@ protected void setOrderedChild(String type) {

}

@Override
public Set<RuntimeCapability<?>> getCapabilities() {
return Collections.unmodifiableSet(capabilities);
}

private static class Empty {
static final Empty INSTANCE = new Empty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.ProxyController;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;

/**
Expand Down Expand Up @@ -163,4 +164,9 @@ public boolean isOrderedChildResource() {
public Set<String> getOrderedChildTypes() {
return delegate.getOrderedChildTypes();
}

@Override
public Set<RuntimeCapability<?>> getCapabilities() {
return delegate.getCapabilities();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.jboss.as.controller.ProxyController;
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.descriptions.OverrideDescriptionProvider;

Expand Down Expand Up @@ -330,6 +331,16 @@ public boolean isOrderedChildResource() {
return getDelegate().isOrderedChildResource();
}

@Override
public void registerCapability(RuntimeCapability<?> capability) {
getDelegate().registerCapability(capability);
}

@Override
public Set<RuntimeCapability<?>> getCapabilities() {
return getDelegate().getCapabilities();
}

private ManagementResourceRegistration getDelegate() {
return delegateProvider.getDelegateRegistration();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.jboss.as.controller.ProxyController;
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.security.ControllerPermission;

Expand Down Expand Up @@ -252,4 +253,11 @@ public interface ImmutableManagementResourceRegistration {
* @return the set of ordered child types, and and empty set if there are none
*/
Set<String> getOrderedChildTypes();

/**
* Returns capability definition for this resource.
*
* @return RuntimeCapability if any registered otherwise null
*/
Set<RuntimeCapability<?>> getCapabilities();
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a>
*/
//todo consider removing this class or moving it to test harness for transformers
public class LegacyResourceDefinition implements ResourceDefinition {
private Map<String, AttributeAccess> attributes = new HashMap<String, AttributeAccess>();
private List<ResourceDefinition> children = new LinkedList<ResourceDefinition>();
Expand Down Expand Up @@ -115,6 +116,11 @@ public void registerNotifications(ManagementResourceRegistration resourceRegistr
// no-op
}

@Override
public void registerCapabilities(ManagementResourceRegistration resourceRegistration) {
// no-op
}

/**
* Register operations associated with this resource.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.access.management.AccessConstraintUtilizationRegistry;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.descriptions.OverrideDescriptionProvider;
import org.jboss.as.controller.logging.ControllerLogger;
Expand Down Expand Up @@ -369,6 +370,12 @@ public interface ManagementResourceRegistration extends ImmutableManagementResou
*/
void unregisterNotification(String notificationType);

/**
* Registers passed capability on resource
* @param capability a capability to register
*/
void registerCapability(RuntimeCapability<?> capability);

/**
* A factory for creating a new, root model node registration.
*/
Expand Down Expand Up @@ -440,6 +447,11 @@ public void registerNotifications(ManagementResourceRegistration resourceRegistr
// no-op
}

@Override
public void registerCapabilities(ManagementResourceRegistration resourceRegistration) {
// no-op
}

@Override
public List<AccessConstraintDefinition> getAccessConstraints() {
return Collections.emptyList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.jboss.as.controller.ProxyStepHandler;
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.access.management.AccessConstraintDefinition;
import org.jboss.as.controller.capability.RuntimeCapability;
import org.jboss.as.controller.descriptions.DescriptionProvider;
import org.jboss.as.controller.descriptions.OverrideDescriptionProvider;
import org.jboss.as.controller.logging.ControllerLogger;
Expand Down Expand Up @@ -118,6 +119,11 @@ public ManagementResourceRegistration registerSubModel(final ResourceDefinition
throw alreadyRegistered();
}

@Override
public void registerCapability(RuntimeCapability<?> capability) {
throw alreadyRegistered();
}

@Override
public void unregisterSubModel(final PathElement address) throws IllegalArgumentException {
throw alreadyRegistered();
Expand Down Expand Up @@ -353,6 +359,11 @@ public void setOrderedChild(String key) {
throw alreadyRegistered();
}

@Override
public Set<RuntimeCapability<?>> getCapabilities() {
return Collections.emptySet();
}

@Override
protected void registerAlias(PathElement address, AliasEntry alias, AbstractResourceRegistration target) {
throw ControllerLogger.ROOT_LOGGER.proxyHandlerAlreadyRegistered(getLocationString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public interface ResourceDefinitionLoader {
ResourceDefinition load(TransformationTarget target);

}

//todo consider removing this class or moving it to test harness for transformers
public abstract static class AbstractDefinitionLoader implements ResourceDefinitionLoader {

/**
Expand Down

0 comments on commit f19abfb

Please sign in to comment.