diff --git a/controller/src/main/java/org/jboss/as/controller/SimpleResourceDefinition.java b/controller/src/main/java/org/jboss/as/controller/SimpleResourceDefinition.java index fb183ac..8c50f08 100644 --- a/controller/src/main/java/org/jboss/as/controller/SimpleResourceDefinition.java +++ b/controller/src/main/java/org/jboss/as/controller/SimpleResourceDefinition.java @@ -148,7 +148,7 @@ public class SimpleResourceDefinition implements ResourceDefinition { @Override public DescriptionProvider getDescriptionProvider(ImmutableManagementResourceRegistration resourceRegistration) { return descriptionProvider == null - ? new DefaultResourceDescriptionProvider(resourceRegistration, descriptionResolver) + ? new DefaultResourceDescriptionProvider(resourceRegistration, descriptionResolver, this) : descriptionProvider; } @@ -177,6 +177,25 @@ public class SimpleResourceDefinition implements ResourceDefinition { } /** + * The min occurs of this element. The default is '0'. + * + * @return the min occurs + */ + public int getMinOccurs() { + return 0; + } + + /** + * The max occurs of this element. The default value is {@link Integer#MAX_VALUE} for wildcard addresses, + * '1' otherwise. + * + * @return the max occurs + */ + public int getMaxOccurs() { + return pathElement.isWildcard() ? Integer.MAX_VALUE : 1; + } + + /** * Gets the {@link ResourceDescriptionResolver} used by this resource definition, or {@code null} * if a {@code ResourceDescriptionResolver} is not used. * diff --git a/controller/src/main/java/org/jboss/as/controller/alias/AbstractAliasedResourceDefinition.java b/controller/src/main/java/org/jboss/as/controller/alias/AbstractAliasedResourceDefinition.java index 362bb1b..02738af 100644 --- a/controller/src/main/java/org/jboss/as/controller/alias/AbstractAliasedResourceDefinition.java +++ b/controller/src/main/java/org/jboss/as/controller/alias/AbstractAliasedResourceDefinition.java @@ -94,7 +94,7 @@ public class AbstractAliasedResourceDefinition extends SimpleResourceDefinition @Override public DescriptionProvider getAliasDescriptionProvider(ImmutableManagementResourceRegistration resourceRegistration, PathElement alias) { - DescriptionProvider delegate = new DefaultResourceDescriptionProvider(resourceRegistration, standardResourceDescriptionResolver); + DescriptionProvider delegate = new DefaultResourceDescriptionProvider(resourceRegistration, standardResourceDescriptionResolver, this); return new AliasedResourceDescriptionProvider(alias, delegate); } diff --git a/controller/src/main/java/org/jboss/as/controller/descriptions/DefaultResourceDescriptionProvider.java b/controller/src/main/java/org/jboss/as/controller/descriptions/DefaultResourceDescriptionProvider.java index 292f900..eb026e2 100644 --- a/controller/src/main/java/org/jboss/as/controller/descriptions/DefaultResourceDescriptionProvider.java +++ b/controller/src/main/java/org/jboss/as/controller/descriptions/DefaultResourceDescriptionProvider.java @@ -22,6 +22,7 @@ package org.jboss.as.controller.descriptions; +import org.jboss.as.controller.SimpleResourceDefinition; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.*; import java.util.HashSet; @@ -44,12 +45,22 @@ import org.jboss.dmr.ModelNode; public class DefaultResourceDescriptionProvider implements DescriptionProvider { private final ImmutableManagementResourceRegistration registration; - final ResourceDescriptionResolver descriptionResolver; + private final ResourceDescriptionResolver descriptionResolver; + private final SimpleResourceDefinition resourceDefinition; public DefaultResourceDescriptionProvider(final ImmutableManagementResourceRegistration registration, final ResourceDescriptionResolver descriptionResolver) { this.registration = registration; this.descriptionResolver = descriptionResolver; + this.resourceDefinition = null; + } + + public DefaultResourceDescriptionProvider(final ImmutableManagementResourceRegistration registration, + final ResourceDescriptionResolver descriptionResolver, + final SimpleResourceDefinition definition) { + this.registration = registration; + this.descriptionResolver = descriptionResolver; + this.resourceDefinition = definition; } @Override @@ -58,6 +69,10 @@ public class DefaultResourceDescriptionProvider implements DescriptionProvider { final ResourceBundle bundle = descriptionResolver.getResourceBundle(locale); result.get(DESCRIPTION).set(descriptionResolver.getResourceDescription(locale, bundle)); + if(resourceDefinition != null) { + result.get(MIN_OCCURS).set(resourceDefinition.getMinOccurs()); + result.get(MAX_OCCURS).set(resourceDefinition.getMaxOccurs()); + } final ModelNode attributes = result.get(ATTRIBUTES).setEmptyObject();