/** * {@link org.jboss.as.controller.ResourceDefinition} for the HTTP management interface resource. * * @author Brian Stansberry (c) 2011 Red Hat Inc. */ public class HttpManagementResourceDefinition extends SimpleResourceDefinition { private static final PathElement RESOURCE_PATH = PathElement.pathElement(MANAGEMENT_INTERFACE, HTTP_INTERFACE); public static final SimpleAttributeDefinition SECURITY_REALM = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.SECURITY_REALM, ModelType.STRING, true) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, false)) .addAccessConstraint( new SensitiveTargetAccessConstraintDefinition( SensitivityClassification.SECURITY_REALM)) .build(); public static final SimpleAttributeDefinition INTERFACE = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.INTERFACE, ModelType.STRING, false) .setAllowExpression(true) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) .setAlternatives( ModelDescriptionConstants.SOCKET_BINDING, ModelDescriptionConstants.SECURE_SOCKET_BINDING) .addAccessConstraint( new SensitiveTargetAccessConstraintDefinition( SensitivityClassification.SOCKET_CONFIG)) .setDeprecated(ModelVersion.create(1, 4)) .build(); public static final SimpleAttributeDefinition HTTP_PORT = new SimpleAttributeDefinitionBuilder(ModelDescriptionConstants.PORT, ModelType.INT, true) .setAllowExpression(true) .setValidator(new IntRangeValidator(0, 65535, true, true)) .setAlternatives( ModelDescriptionConstants.SOCKET_BINDING, ModelDescriptionConstants.SECURE_SOCKET_BINDING) .setRequires(ModelDescriptionConstants.INTERFACE) .addAccessConstraint( new SensitiveTargetAccessConstraintDefinition( SensitivityClassification.SOCKET_CONFIG)) .setDeprecated(ModelVersion.create(1, 4)) .build(); public static final SimpleAttributeDefinition HTTPS_PORT = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.SECURE_PORT, ModelType.INT, true) .setAllowExpression(true) .setValidator(new IntRangeValidator(0, 65535, true, true)) .setAlternatives( ModelDescriptionConstants.SOCKET_BINDING, ModelDescriptionConstants.SECURE_SOCKET_BINDING) .setRequires(ModelDescriptionConstants.INTERFACE) .addAccessConstraint( new SensitiveTargetAccessConstraintDefinition( SensitivityClassification.SOCKET_CONFIG)) .setDeprecated(ModelVersion.create(1, 4)) .build(); public static final SimpleAttributeDefinition SOCKET_BINDING = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.SOCKET_BINDING, ModelType.STRING, true) .setXmlName(Attribute.HTTP.getLocalName()) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, false)) .setAlternatives(ModelDescriptionConstants.INTERFACE) .addAccessConstraint( new SensitiveTargetAccessConstraintDefinition( SensitivityClassification.SOCKET_CONFIG)) .build(); public static final SimpleAttributeDefinition SECURE_SOCKET_BINDING = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.SECURE_SOCKET_BINDING, ModelType.STRING, true) .setXmlName(Attribute.HTTPS.getLocalName()) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, false)) .setAlternatives(ModelDescriptionConstants.INTERFACE) .addAccessConstraint( new SensitiveTargetAccessConstraintDefinition( SensitivityClassification.SOCKET_CONFIG)) .build(); public static final SimpleAttributeDefinition CONSOLE_ENABLED = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.CONSOLE_ENABLED, ModelType.BOOLEAN, true) .setXmlName(Attribute.CONSOLE_ENABLED.getLocalName()) .setDefaultValue(new ModelNode(true)) .build(); public static final SimpleAttributeDefinition HTTP_UPGRADE_ENABLED = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.HTTP_UPGRADE_ENABLED, ModelType.BOOLEAN, true) .setXmlName(Attribute.HTTP_UPGRADE_ENABLED.getLocalName()) .setDefaultValue(new ModelNode(false)) .build(); public static final AttributeDefinition[] ATTRIBUTE_DEFINITIONS = new AttributeDefinition[] { INTERFACE, HTTP_PORT, HTTPS_PORT, SECURITY_REALM, SOCKET_BINDING, SECURE_SOCKET_BINDING, CONSOLE_ENABLED, HTTP_UPGRADE_ENABLED }; public static final HttpManagementResourceDefinition INSTANCE = new HttpManagementResourceDefinition(); private HttpManagementResourceDefinition() { super( RESOURCE_PATH, ServerDescriptions.getResourceDescriptionResolver("core.management.http-interface"), HttpManagementAddHandler.INSTANCE, HttpManagementRemoveHandler.INSTANCE, OperationEntry.Flag.RESTART_NONE, OperationEntry.Flag.RESTART_NONE); } @Override public void registerAttributes(ManagementResourceRegistration resourceRegistration) { for (AttributeDefinition attr : ATTRIBUTE_DEFINITIONS) { resourceRegistration.registerReadWriteAttribute( attr, null, HttpManagementWriteAttributeHandler.INSTANCE); } } }
/** * {@link org.jboss.as.controller.ResourceDefinition} for the HTTP management interface resource. * * @author Brian Stansberry (c) 2011 Red Hat Inc. */ public class HttpManagementResourceDefinition extends SimpleResourceDefinition { private final LocalHostControllerInfoImpl hostControllerInfo; private final HostControllerEnvironment environment; private static final PathElement RESOURCE_PATH = PathElement.pathElement(MANAGEMENT_INTERFACE, HTTP_INTERFACE); public static final SimpleAttributeDefinition SECURITY_REALM = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.SECURITY_REALM, ModelType.STRING, true) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, false)) .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SECURITY_REALM_REF) .build(); public static final SimpleAttributeDefinition INTERFACE = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.INTERFACE, ModelType.STRING, false) .setAllowExpression(true) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG) .build(); public static final SimpleAttributeDefinition HTTP_PORT = new SimpleAttributeDefinitionBuilder(ModelDescriptionConstants.PORT, ModelType.INT, true) .setAllowExpression(true) .setValidator(new IntRangeValidator(0, 65535, true, true)) .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG) .build(); public static final SimpleAttributeDefinition HTTPS_PORT = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.SECURE_PORT, ModelType.INT, true) .setAllowExpression(true) .setValidator(new IntRangeValidator(0, 65535, true, true)) .addAccessConstraint(SensitiveTargetAccessConstraintDefinition.SOCKET_CONFIG) .build(); public static final SimpleAttributeDefinition CONSOLE_ENABLED = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.CONSOLE_ENABLED, ModelType.BOOLEAN, true) .setAllowExpression(true) .setXmlName(Attribute.CONSOLE_ENABLED.getLocalName()) .setDefaultValue(new ModelNode(true)) .build(); public static final SimpleAttributeDefinition HTTP_UPGRADE_ENABLED = new SimpleAttributeDefinitionBuilder( ModelDescriptionConstants.HTTP_UPGRADE_ENABLED, ModelType.BOOLEAN, true) .setAllowExpression(true) .setXmlName(Attribute.HTTP_UPGRADE_ENABLED.getLocalName()) .setDefaultValue(new ModelNode(false)) .build(); public static final AttributeDefinition[] ATTRIBUTE_DEFINITIONS = new AttributeDefinition[] { INTERFACE, HTTP_PORT, HTTPS_PORT, SECURITY_REALM, CONSOLE_ENABLED, HTTP_UPGRADE_ENABLED }; private final List<AccessConstraintDefinition> accessConstraints; public HttpManagementResourceDefinition( final LocalHostControllerInfoImpl hostControllerInfo, final HostControllerEnvironment environment) { super( RESOURCE_PATH, HostModelUtil.getResourceDescriptionResolver("core", "management", "http-interface"), new HttpManagementAddHandler(hostControllerInfo, environment), new HttpManagementRemoveHandler(hostControllerInfo, environment), OperationEntry.Flag.RESTART_NONE, OperationEntry.Flag.RESTART_NONE); this.hostControllerInfo = hostControllerInfo; this.environment = environment; this.accessConstraints = SensitiveTargetAccessConstraintDefinition.MANAGEMENT_INTERFACES.wrapAsList(); } @Override public void registerAttributes(ManagementResourceRegistration resourceRegistration) { final HttpManagementWriteAttributeHandler writeAttributeHandler = new HttpManagementWriteAttributeHandler(hostControllerInfo, environment); for (AttributeDefinition attr : ATTRIBUTE_DEFINITIONS) { resourceRegistration.registerReadWriteAttribute(attr, null, writeAttributeHandler); } } @Override public List<AccessConstraintDefinition> getAccessConstraints() { return accessConstraints; } }