/** * Attributes used in setting up ModeShape configurations. To mark an attribute as required, mark it * as not allowing null. */ public class ModelAttributes { private static final ParameterValidator ROLE_NAME_VALIDATOR = new StringSetValidator( false, false, "", ModeShapeRoles.ADMIN, ModeShapeRoles.READONLY, ModeShapeRoles.READWRITE); private static final ParameterValidator WORKSPACE_NAME_VALIDATOR = new ModelTypeValidator(ModelType.STRING, false, false, true); private static final ParameterValidator NODE_TYPE_VALIDATOR = new ModelTypeValidator(ModelType.STRING, false, false, true); private static final ParameterValidator INITIAL_CONTENT_VALIDATOR = new ModelTypeValidator(ModelType.PROPERTY, false, false, true); private static final ParameterValidator DEFAULT_INITIAL_CONTENT_VALIDATOR = new ModelTypeValidator(ModelType.STRING, true, false, true); private static final ParameterValidator PATH_EXPRESSION_VALIDATOR = new PathExpressionValidator(false); private static final ParameterValidator PROJECTION_VALIDATOR = new ProjectionValidator(false); private static final ParameterValidator COLUMNS_VALIDATOR = new IndexColumnsValidator(false); private static final ParameterValidator INDEX_KIND_VALIDATOR = new StringSetValidator( true, true, RepositoryConfiguration.FieldValue.KIND_ENUMERATED, RepositoryConfiguration.FieldValue.KIND_NODE_TYPE, RepositoryConfiguration.FieldValue.KIND_TEXT, RepositoryConfiguration.FieldValue.KIND_UNIQUE, RepositoryConfiguration.FieldValue.KIND_VALUE); private static final ParameterValidator REINDEXING_MODE_VALIDATOR = new StringSetValidator( true, true, RepositoryConfiguration.ReindexingMode.IF_MISSING.name(), RepositoryConfiguration.ReindexingMode.INCREMENTAL.name()); private static final ParameterValidator MIME_TYPE_DETECTION_VALIDATOR = new StringSetValidator( true, true, RepositoryConfiguration.FieldValue.MIMETYPE_DETECTION_CONTENT, RepositoryConfiguration.FieldValue.MIMETYPE_DETECTION_NAME, RepositoryConfiguration.FieldValue.MIMETYPE_DETECTION_NONE); public static final SimpleAttributeDefinition ALLOW_WORKSPACE_CREATION = new MappedAttributeDefinitionBuilder(ModelKeys.ALLOW_WORKSPACE_CREATION, ModelType.BOOLEAN) .setXmlName(Attribute.ALLOW_WORKSPACE_CREATION.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(true)) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration(FieldName.WORKSPACES, FieldName.ALLOW_CREATION) .build(); public static final SimpleAttributeDefinition WORKSPACES_CACHE_SIZE = new MappedAttributeDefinitionBuilder(ModelKeys.WORKSPACES_CACHE_SIZE, ModelType.INT) .setXmlName(Attribute.CACHE_SIZE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setValidator(new IntRangeValidator(1)) .build(); public static final ListAttributeDefinition ANONYMOUS_ROLES = MappedListAttributeDefinition.Builder.of( ModelKeys.ANONYMOUS_ROLES, new MappedAttributeDefinitionBuilder(ModelKeys.ANONYMOUS_ROLE, ModelType.STRING) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue( new ModelNode().add(new ModelNode().set(ModeShapeRoles.READONLY))) .setValidator(ROLE_NAME_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setAccessConstraints( SensitiveTargetAccessConstraintDefinition.SECURITY_DOMAIN_REF) .build()) .setAllowNull(true) .setMinSize(0) .setMaxSize(100) .setFieldPathInRepositoryConfiguration( FieldName.SECURITY, FieldName.ANONYMOUS, FieldName.ANONYMOUS_ROLES) .setAccessConstraints(SensitiveTargetAccessConstraintDefinition.SECURITY_DOMAIN_REF) .build(); public static final SimpleAttributeDefinition ANONYMOUS_USERNAME = new MappedAttributeDefinitionBuilder(ModelKeys.ANONYMOUS_USERNAME, ModelType.STRING) .setXmlName(Attribute.ANONYMOUS_USERNAME.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("<anonymous>")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setAccessConstraints(SensitiveTargetAccessConstraintDefinition.SECURITY_DOMAIN_REF) .setFieldPathInRepositoryConfiguration( FieldName.SECURITY, FieldName.ANONYMOUS, FieldName.ANONYMOUS_USERNAME) .build(); public static final SimpleAttributeDefinition AUTHENTICATOR_CLASSNAME = new MappedAttributeDefinitionBuilder(ModelKeys.AUTHENTICATOR_CLASSNAME, ModelType.STRING) .setXmlName(Attribute.CLASSNAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.SECURITY, FieldName.PROVIDERS, FieldName.CLASSNAME) .build(); public static final SimpleAttributeDefinition CACHE_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.CACHE_NAME, ModelType.STRING) .setXmlName(Attribute.CACHE_NAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition CACHE_CONFIG = new MappedAttributeDefinitionBuilder(ModelKeys.CACHE_CONFIG, ModelType.STRING) .setXmlName(Attribute.CACHE_CONFIG.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition CONFIG_RELATIVE_TO = new MappedAttributeDefinitionBuilder(ModelKeys.CONFIG_RELATIVE_TO, ModelType.STRING) .setXmlName(Attribute.CONFIG_RELATIVE_TO.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setDefaultValue(new ModelNode().set(ModeShapeExtension.JBOSS_CONFIG_DIR_VARIABLE)) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition CLASSNAME = new MappedAttributeDefinitionBuilder(ModelKeys.CLASSNAME, ModelType.STRING) .setXmlName(Attribute.CLASSNAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition DATA_SOURCE_JNDI_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.DATA_SOURCE_JNDI_NAME, ModelType.STRING) .setXmlName(Attribute.DATA_SOURCE_JNDI_NAME.getLocalName()) .setAllowExpression(true) .setAllowNull(false) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition DEFAULT_WORKSPACE = new MappedAttributeDefinitionBuilder(ModelKeys.DEFAULT_WORKSPACE, ModelType.STRING) .setXmlName(Attribute.DEFAULT_WORKSPACE.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("default")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration(FieldName.WORKSPACES, FieldName.DEFAULT) .build(); public static final SimpleAttributeDefinition ENABLE_MONITORING = new MappedAttributeDefinitionBuilder(ModelKeys.ENABLE_MONITORING, ModelType.BOOLEAN) .setXmlName(Attribute.ENABLE_MONITORING.getLocalName()) .setAllowNull(true) .setAllowExpression(true) .setDefaultValue(new ModelNode().set(true)) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration(FieldName.MONITORING, FieldName.MONITORING_ENABLED) .build(); public static final SimpleAttributeDefinition GARBAGE_COLLECTION_THREAD_POOL = new MappedAttributeDefinitionBuilder( ModelKeys.GARBAGE_COLLECTION_THREAD_POOL, ModelType.STRING) .setXmlName(Attribute.GARBAGE_COLLECTION_THREAD_POOL.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("modeshape-gc")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.GARBAGE_COLLECTION, FieldName.THREAD_POOL) .build(); public static final SimpleAttributeDefinition GARBAGE_COLLECTION_INITIAL_TIME = new MappedAttributeDefinitionBuilder( ModelKeys.GARBAGE_COLLECTION_INITIAL_TIME, ModelType.STRING) .setXmlName(Attribute.GARBAGE_COLLECTION_INITIAL_TIME.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("00:00")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.GARBAGE_COLLECTION, FieldName.INITIAL_TIME) .build(); public static final SimpleAttributeDefinition GARBAGE_COLLECTION_INTERVAL = new MappedAttributeDefinitionBuilder(ModelKeys.GARBAGE_COLLECTION_INTERVAL, ModelType.INT) .setXmlName(Attribute.GARBAGE_COLLECTION_INTERVAL.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(24)) .setMeasurementUnit(MeasurementUnit.HOURS) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.GARBAGE_COLLECTION, FieldName.INTERVAL_IN_HOURS) .build(); public static final SimpleAttributeDefinition DOCUMENT_OPTIMIZATION_THREAD_POOL = new MappedAttributeDefinitionBuilder( ModelKeys.DOCUMENT_OPTIMIZATION_THREAD_POOL, ModelType.STRING) .setXmlName(Attribute.DOCUMENT_OPTIMIZATION_THREAD_POOL.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("modeshape-opt")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.DOCUMENT_OPTIMIZATION, FieldName.THREAD_POOL) .build(); public static final SimpleAttributeDefinition DOCUMENT_OPTIMIZATION_INITIAL_TIME = new MappedAttributeDefinitionBuilder( ModelKeys.DOCUMENT_OPTIMIZATION_INITIAL_TIME, ModelType.STRING) .setXmlName(Attribute.DOCUMENT_OPTIMIZATION_INITIAL_TIME.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("00:00")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.DOCUMENT_OPTIMIZATION, FieldName.INITIAL_TIME) .build(); public static final SimpleAttributeDefinition DOCUMENT_OPTIMIZATION_INTERVAL = new MappedAttributeDefinitionBuilder(ModelKeys.DOCUMENT_OPTIMIZATION_INTERVAL, ModelType.INT) .setXmlName(Attribute.DOCUMENT_OPTIMIZATION_INTERVAL.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(24)) .setMeasurementUnit(MeasurementUnit.HOURS) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.DOCUMENT_OPTIMIZATION, FieldName.INTERVAL_IN_HOURS) .build(); public static final SimpleAttributeDefinition DOCUMENT_OPTIMIZATION_CHILD_COUNT_TARGET = new MappedAttributeDefinitionBuilder( ModelKeys.DOCUMENT_OPTIMIZATION_CHILD_COUNT_TARGET, ModelType.INT) .setXmlName(Attribute.DOCUMENT_OPTIMIZATION_CHILD_COUNT_TARGET.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.DOCUMENT_OPTIMIZATION, FieldName.OPTIMIZATION_CHILD_COUNT_TARGET) .build(); public static final SimpleAttributeDefinition DOCUMENT_OPTIMIZATION_CHILD_COUNT_TOLERANCE = new MappedAttributeDefinitionBuilder( ModelKeys.DOCUMENT_OPTIMIZATION_CHILD_COUNT_TOLERANCE, ModelType.INT) .setXmlName(Attribute.DOCUMENT_OPTIMIZATION_CHILD_COUNT_TOLERANCE.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.DOCUMENT_OPTIMIZATION, FieldName.OPTIMIZATION_CHILD_COUNT_TOLERANCE) .build(); public static final SimpleAttributeDefinition EVENT_BUS_SIZE = new MappedAttributeDefinitionBuilder(ModelKeys.EVENT_BUS_SIZE, ModelType.INT) .setXmlName(Attribute.EVENT_BUS_SIZE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration(FieldName.EVENT_BUS_SIZE) .build(); public static final SimpleAttributeDefinition REINDEXING_ASYNC = new MappedAttributeDefinitionBuilder(ModelKeys.REINDEXING_ASYNC, ModelType.BOOLEAN) .setXmlName(Attribute.REINDEXING_ASNC.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFieldPathInRepositoryConfiguration(FieldName.REINDEXING, FieldName.REINDEXING_ASYNC) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition REINDEXING_MODE = new MappedAttributeDefinitionBuilder(ModelKeys.REINDEXING_MODE, ModelType.STRING) .setXmlName(Attribute.REINDEXING_MODE.getLocalName()) .setAllowExpression(false) .setValidator(REINDEXING_MODE_VALIDATOR) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFieldPathInRepositoryConfiguration(FieldName.REINDEXING, FieldName.REINDEXING_MODE) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition INDEX_KIND = new MappedAttributeDefinitionBuilder(ModelKeys.INDEX_KIND, ModelType.STRING) .setXmlName(Attribute.INDEX_KIND.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(IndexKind.VALUE.toString())) .setValidator(INDEX_KIND_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition SYNCHRONOUS = new MappedAttributeDefinitionBuilder(ModelKeys.SYNCHRONOUS, ModelType.BOOLEAN) .setXmlName(Attribute.SYNCHRONOUS.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(Boolean.TRUE)) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition JNDI_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.JNDI_NAME, ModelType.STRING) .setXmlName(Attribute.JNDI_NAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition MINIMUM_BINARY_SIZE = new MappedAttributeDefinitionBuilder(ModelKeys.MINIMUM_BINARY_SIZE, ModelType.INT) .setXmlName(Attribute.MIN_VALUE_SIZE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.BYTES) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.BINARY_STORAGE, FieldName.MINIMUM_BINARY_SIZE_IN_BYTES) .build(); public static final SimpleAttributeDefinition MINIMUM_STRING_SIZE = new MappedAttributeDefinitionBuilder(ModelKeys.MINIMUM_STRING_SIZE, ModelType.INT) .setXmlName(Attribute.MIN_STRING_SIZE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.BINARY_STORAGE, FieldName.MINIMUM_STRING_SIZE) .build(); public static final SimpleAttributeDefinition MIME_TYPE_DETECTION = new MappedAttributeDefinitionBuilder(ModelKeys.MIME_TYPE_DETECTION, ModelType.STRING) .setXmlName(Attribute.MIME_TYPE_DETECTION.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setMeasurementUnit(MeasurementUnit.NONE) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setValidator(MIME_TYPE_DETECTION_VALIDATOR) .setFieldPathInRepositoryConfiguration( FieldName.STORAGE, FieldName.BINARY_STORAGE, FieldName.MIMETYPE_DETECTION) .build(); public static final SimpleAttributeDefinition MODULE = new MappedAttributeDefinitionBuilder(ModelKeys.MODULE, ModelType.STRING) .setXmlName(Attribute.MODULE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition NAME = new MappedAttributeDefinitionBuilder(ModelKeys.NAME, ModelType.STRING) .setXmlName(Attribute.NAME.getLocalName()) .setAllowExpression(false) .setAllowNull(false) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition NODE_TYPE_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.NODE_TYPE_NAME, ModelType.STRING) .setXmlName(Attribute.NODE_TYPE.getLocalName()) .setAllowExpression(true) .setAllowNull(false) .setValidator(NODE_TYPE_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition INDEX_COLUMNS = new MappedAttributeDefinitionBuilder(ModelKeys.INDEX_COLUMNS, ModelType.STRING) .setXmlName(Attribute.COLUMNS.getLocalName()) .setAllowExpression(true) .setAllowNull(false) .setValidator(COLUMNS_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition PROVIDER_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.PROVIDER_NAME, ModelType.STRING) .setXmlName(Attribute.PROVIDER_NAME.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition PATH = new MappedAttributeDefinitionBuilder(ModelKeys.PATH, ModelType.STRING) .setXmlName(Attribute.PATH.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition TRASH = new MappedAttributeDefinitionBuilder(ModelKeys.TRASH, ModelType.STRING) .setXmlName(Attribute.TRASH.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final ListAttributeDefinition PATH_EXPRESSIONS = MappedListAttributeDefinition.Builder.of( ModelKeys.PATH_EXPRESSIONS, new MappedAttributeDefinitionBuilder(ModelKeys.PATH_EXPRESSION, ModelType.STRING) .setAllowExpression(true) .setAllowNull(false) .setValidator(PATH_EXPRESSION_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build()) .setAllowNull(true) .setMinSize(0) .setFieldPathInRepositoryConfiguration( FieldName.SEQUENCING, FieldName.SEQUENCERS, FieldName.PATH_EXPRESSIONS) .build(); public static final ListAttributeDefinition PROJECTIONS = MappedListAttributeDefinition.Builder.of( ModelKeys.PROJECTIONS, new MappedAttributeDefinitionBuilder(ModelKeys.PROJECTION, ModelType.STRING) .setAllowExpression(true) .setAllowNull(false) .setValidator(PROJECTION_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build()) .setAllowNull(true) .setMinSize(1) .build(); public static final SimpleAttributeDefinition CONNECTOR_CLASSNAME = new MappedAttributeDefinitionBuilder(ModelKeys.CONNECTOR_CLASSNAME, ModelType.STRING) .setXmlName(Attribute.CLASSNAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition CACHEABLE = new MappedAttributeDefinitionBuilder(ModelKeys.CACHEABLE, ModelType.BOOLEAN) .setXmlName(Attribute.CACHEABLE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition QUERYABLE = new MappedAttributeDefinitionBuilder(ModelKeys.QUERYABLE, ModelType.BOOLEAN) .setXmlName(Attribute.QUERYABLE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition READONLY = new MappedAttributeDefinitionBuilder(ModelKeys.READONLY, ModelType.BOOLEAN) .setXmlName(Attribute.READONLY.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setDefaultValue(new ModelNode(false)) .build(); public static final SimpleAttributeDefinition EXPOSE_AS_WORKSPACE = new MappedAttributeDefinitionBuilder(ModelKeys.EXPOSE_AS_WORKSPACE, ModelType.STRING) .setXmlName(Attribute.EXPOSE_AS_WORKSPACE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setDefaultValue(new ModelNode(false)) .build(); public static final ListAttributeDefinition PREDEFINED_WORKSPACE_NAMES = MappedListAttributeDefinition.Builder.of( ModelKeys.PREDEFINED_WORKSPACE_NAMES, new MappedAttributeDefinitionBuilder( ModelKeys.PREDEFINED_WORKSPACE_NAME, ModelType.STRING) .setAllowExpression(true) .setAllowNull(false) .setValidator(WORKSPACE_NAME_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build()) .setAllowNull(true) .setMinSize(0) .setFieldPathInRepositoryConfiguration(FieldName.WORKSPACES, FieldName.PREDEFINED) .build(); public static final SimpleAttributeDefinition DEFAULT_INITIAL_CONTENT = new MappedAttributeDefinitionBuilder(ModelKeys.DEFAULT_INITIAL_CONTENT, ModelType.STRING) .setAllowExpression(false) .setAllowNull(true) .setValidator(DEFAULT_INITIAL_CONTENT_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final ListAttributeDefinition WORKSPACES_INITIAL_CONTENT = MappedListAttributeDefinition.Builder.of( ModelKeys.WORKSPACES_INITIAL_CONTENT, new MappedAttributeDefinitionBuilder(ModelKeys.INITIAL_CONTENT, ModelType.PROPERTY) .setAllowNull(false) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setValidator(INITIAL_CONTENT_VALIDATOR) .build()) .setAllowNull(true) .setMinSize(0) .build(); public static final ListAttributeDefinition NODE_TYPES = MappedListAttributeDefinition.Builder.of( ModelKeys.NODE_TYPES, new MappedAttributeDefinitionBuilder(ModelKeys.NODE_TYPE, ModelType.STRING) .setAllowExpression(true) .setAllowNull(false) .setValidator(NODE_TYPE_VALIDATOR) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build()) .setAllowNull(true) .setMinSize(0) .build(); public static final SimpleAttributeDefinition PROPERTY = new SimpleAttributeDefinition(ModelKeys.PROPERTY, ModelType.PROPERTY, true); public static final SimpleListAttributeDefinition PROPERTIES = SimpleListAttributeDefinition.Builder.of(ModelKeys.PROPERTIES, PROPERTY) .setAllowNull(true) .build(); public static final SimpleAttributeDefinition RELATIVE_TO = new MappedAttributeDefinitionBuilder(ModelKeys.RELATIVE_TO, ModelType.STRING) .setXmlName(Attribute.RELATIVE_TO.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(JBOSS_DATA_DIR_VARIABLE)) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition SEQUENCER_CLASSNAME = new MappedAttributeDefinitionBuilder(ModelKeys.SEQUENCER_CLASSNAME, ModelType.STRING) .setXmlName(Attribute.CLASSNAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.SEQUENCING, FieldName.SEQUENCERS, FieldName.CLASSNAME) .build(); public static final SimpleAttributeDefinition SEQUENCER_THREAD_POOL_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.SEQUENCERS_THREAD_POOL_NAME, ModelType.STRING) .setXmlName(Attribute.THREAD_POOL_NAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setDefaultValue(new ModelNode().set(RepositoryConfiguration.Default.SEQUENCING_POOL)) .setFieldPathInRepositoryConfiguration( FieldName.SEQUENCING, FieldName.SEQUENCERS, FieldName.THREAD_POOL) .build(); public static final SimpleAttributeDefinition SEQUENCER_MAX_POOL_SIZE = new MappedAttributeDefinitionBuilder(ModelKeys.SEQUENCERS_MAX_POOL_SIZE, ModelType.STRING) .setXmlName(Attribute.MAX_POOL_SIZE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setDefaultValue( new ModelNode().set(RepositoryConfiguration.Default.SEQUENCING_MAX_POOL_SIZE)) .setFieldPathInRepositoryConfiguration( FieldName.SEQUENCING, FieldName.SEQUENCERS, FieldName.MAX_POOL_SIZE) .build(); public static final SimpleAttributeDefinition STORE_NAME = new MappedAttributeDefinitionBuilder(ModelKeys.STORE_NAME, ModelType.STRING) .setXmlName(Attribute.STORE_NAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final ListAttributeDefinition NESTED_STORES = MappedListAttributeDefinition.Builder.of( ModelKeys.NESTED_STORES, new MappedAttributeDefinitionBuilder(ModelKeys.STORE_NAME, ModelType.STRING) .setAllowExpression(false) .setAllowNull(false) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build()) .setAllowNull(false) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition TEXT_EXTRACTOR_CLASSNAME = new MappedAttributeDefinitionBuilder(ModelKeys.TEXT_EXTRACTOR_CLASSNAME, ModelType.STRING) .setXmlName(Attribute.CLASSNAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setFieldPathInRepositoryConfiguration( FieldName.TEXT_EXTRACTION, FieldName.EXTRACTORS, FieldName.CLASSNAME) .build(); public static final SimpleAttributeDefinition TEXT_EXTRACTOR_THREAD_POOL_NAME = new MappedAttributeDefinitionBuilder( ModelKeys.TEXT_EXTRACTORS_THREAD_POOL_NAME, ModelType.STRING) .setXmlName(Attribute.THREAD_POOL_NAME.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setDefaultValue( new ModelNode().set(RepositoryConfiguration.Default.TEXT_EXTRACTION_POOL)) .setFieldPathInRepositoryConfiguration( FieldName.TEXT_EXTRACTION, FieldName.EXTRACTORS, FieldName.THREAD_POOL) .build(); public static final SimpleAttributeDefinition TEXT_EXTRACTOR_MAX_POOL_SIZE = new MappedAttributeDefinitionBuilder( ModelKeys.TEXT_EXTRACTORS_MAX_POOL_SIZE, ModelType.STRING) .setXmlName(Attribute.MAX_POOL_SIZE.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setDefaultValue( new ModelNode().set(RepositoryConfiguration.Default.TEXT_EXTRACTION_MAX_POOL_SIZE)) .setFieldPathInRepositoryConfiguration( FieldName.TEXT_EXTRACTION, FieldName.EXTRACTORS, FieldName.MAX_POOL_SIZE) .build(); public static final SimpleAttributeDefinition SECURITY_DOMAIN = new MappedAttributeDefinitionBuilder(ModelKeys.SECURITY_DOMAIN, ModelType.STRING) .setXmlName(Attribute.SECURITY_DOMAIN.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("modeshape-security")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setAccessConstraints(SensitiveTargetAccessConstraintDefinition.SECURITY_DOMAIN_REF) .setFieldPathInRepositoryConfiguration( FieldName.SECURITY, FieldName.JAAS, FieldName.JAAS_POLICY_NAME) .build(); public static final SimpleAttributeDefinition USE_ANONYMOUS_IF_AUTH_FAILED = new MappedAttributeDefinitionBuilder( ModelKeys.USE_ANONYMOUS_IF_AUTH_FAILED, ModelType.BOOLEAN) .setXmlName(Attribute.USE_ANONYMOUS_IF_AUTH_FAILED.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set(false)) .setFlags(AttributeAccess.Flag.RESTART_NONE) .setAccessConstraints(SensitiveTargetAccessConstraintDefinition.SECURITY_DOMAIN_REF) .setFieldPathInRepositoryConfiguration( FieldName.SECURITY, FieldName.ANONYMOUS, FieldName.USE_ANONYMOUS_ON_FAILED_LOGINS) .build(); public static final SimpleAttributeDefinition EXPLODED = new MappedAttributeDefinitionBuilder(ModelKeys.EXPLODED, ModelType.BOOLEAN) .setXmlName(Attribute.EXPLODED.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setDefaultValue(new ModelNode().set(false)) .build(); public static final SimpleAttributeDefinition JOURNALING = new MappedAttributeDefinitionBuilder(ModelKeys.JOURNALING, ModelType.BOOLEAN) .setXmlName(Attribute.JOURNALING.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setDefaultValue(new ModelNode(false)) .build(); public static final SimpleAttributeDefinition JOURNAL_PATH = new MappedAttributeDefinitionBuilder(ModelKeys.JOURNAL_PATH, ModelType.STRING) .setXmlName(Attribute.JOURNAL_PATH.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition JOURNAL_RELATIVE_TO = new MappedAttributeDefinitionBuilder(ModelKeys.JOURNAL_RELATIVE_TO, ModelType.STRING) .setXmlName(Attribute.JOURNAL_RELATIVE_TO.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition MAX_DAYS_TO_KEEP_RECORDS = new MappedAttributeDefinitionBuilder(ModelKeys.MAX_DAYS_TO_KEEP_RECORDS, ModelType.INT) .setXmlName(Attribute.MAX_DAYS_TO_KEEP_RECORDS.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setDefaultValue(new ModelNode(-1)) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition ASYNC_WRITES = new MappedAttributeDefinitionBuilder(ModelKeys.ASYNC_WRITES, ModelType.BOOLEAN) .setXmlName(Attribute.ASYNC_WRITES.getLocalName()) .setAllowExpression(false) .setAllowNull(true) .setDefaultValue(new ModelNode(false)) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .build(); public static final SimpleAttributeDefinition JOURNAL_GC_THREAD_POOL = new MappedAttributeDefinitionBuilder(ModelKeys.JOURNAL_GC_THREAD_POOL, ModelType.STRING) .setXmlName(Attribute.JOURNAL_GC_THREAD_POOL.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("modeshape-journaling-gc")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final SimpleAttributeDefinition JOURNAL_GC_INITIAL_TIME = new MappedAttributeDefinitionBuilder(ModelKeys.JOURNAL_GC_INITIAL_TIME, ModelType.STRING) .setXmlName(Attribute.JOURNAL_GC_INITIAL_TIME.getLocalName()) .setAllowExpression(true) .setAllowNull(true) .setDefaultValue(new ModelNode().set("00:00")) .setFlags(AttributeAccess.Flag.RESTART_NONE) .build(); public static final AttributeDefinition[] SUBSYSTEM_ATTRIBUTES = {}; public static final AttributeDefinition[] WEBAPP_ATTRIBUTES = {EXPLODED}; public static final AttributeDefinition[] REPOSITORY_ATTRIBUTES = { CACHE_NAME, CACHE_CONFIG, CONFIG_RELATIVE_TO, JNDI_NAME, ENABLE_MONITORING, SECURITY_DOMAIN, ANONYMOUS_ROLES, ANONYMOUS_USERNAME, USE_ANONYMOUS_IF_AUTH_FAILED, NODE_TYPES, DEFAULT_WORKSPACE, PREDEFINED_WORKSPACE_NAMES, ALLOW_WORKSPACE_CREATION, WORKSPACES_CACHE_SIZE, DEFAULT_INITIAL_CONTENT, WORKSPACES_INITIAL_CONTENT, GARBAGE_COLLECTION_THREAD_POOL, GARBAGE_COLLECTION_INITIAL_TIME, GARBAGE_COLLECTION_INTERVAL, DOCUMENT_OPTIMIZATION_THREAD_POOL, DOCUMENT_OPTIMIZATION_INITIAL_TIME, DOCUMENT_OPTIMIZATION_INTERVAL, DOCUMENT_OPTIMIZATION_CHILD_COUNT_TARGET, DOCUMENT_OPTIMIZATION_CHILD_COUNT_TOLERANCE, JOURNAL_PATH, JOURNAL_RELATIVE_TO, MAX_DAYS_TO_KEEP_RECORDS, JOURNAL_GC_INITIAL_TIME, JOURNAL_GC_THREAD_POOL, ASYNC_WRITES, JOURNALING, SEQUENCER_THREAD_POOL_NAME, SEQUENCER_MAX_POOL_SIZE, TEXT_EXTRACTOR_THREAD_POOL_NAME, TEXT_EXTRACTOR_MAX_POOL_SIZE, EVENT_BUS_SIZE, REINDEXING_ASYNC, REINDEXING_MODE }; public static final AttributeDefinition[] TRANSIENT_BINARY_STORAGE_ATTRIBUTES = { MINIMUM_BINARY_SIZE, MINIMUM_STRING_SIZE, MIME_TYPE_DETECTION }; public static final AttributeDefinition[] FILE_BINARY_STORAGE_ATTRIBUTES = { MINIMUM_BINARY_SIZE, MINIMUM_STRING_SIZE, PATH, TRASH, RELATIVE_TO, STORE_NAME, MIME_TYPE_DETECTION }; public static final AttributeDefinition[] DATABASE_BINARY_STORAGE_ATTRIBUTES = { MINIMUM_BINARY_SIZE, MINIMUM_STRING_SIZE, DATA_SOURCE_JNDI_NAME, STORE_NAME, MIME_TYPE_DETECTION }; public static final AttributeDefinition[] COMPOSITE_BINARY_STORAGE_ATTRIBUTES = { MINIMUM_BINARY_SIZE, MINIMUM_STRING_SIZE, NESTED_STORES, MIME_TYPE_DETECTION }; public static final AttributeDefinition[] CUSTOM_BINARY_STORAGE_ATTRIBUTES = { MINIMUM_BINARY_SIZE, MINIMUM_STRING_SIZE, CLASSNAME, MODULE, STORE_NAME, MIME_TYPE_DETECTION }; public static final AttributeDefinition[] INDEX_DEFINITION_ATTRIBUTES = { INDEX_KIND, PROVIDER_NAME, NODE_TYPE_NAME, SYNCHRONOUS, INDEX_COLUMNS, PROPERTIES }; public static final AttributeDefinition[] INDEX_PROVIDER_ATTRIBUTES = { CLASSNAME, MODULE, RELATIVE_TO, PATH, PROPERTIES }; public static final AttributeDefinition[] SEQUENCER_ATTRIBUTES = { PATH_EXPRESSIONS, SEQUENCER_CLASSNAME, MODULE, PROPERTIES }; public static final AttributeDefinition[] SOURCE_ATTRIBUTES = { PROJECTIONS, CONNECTOR_CLASSNAME, READONLY, CACHEABLE, QUERYABLE, MODULE, PROPERTIES, EXPOSE_AS_WORKSPACE }; public static final AttributeDefinition[] TEXT_EXTRACTOR_ATTRIBUTES = { TEXT_EXTRACTOR_CLASSNAME, MODULE, PROPERTIES }; public static final AttributeDefinition[] AUTHENTICATOR_ATTRIBUTES = { AUTHENTICATOR_CLASSNAME, MODULE, PROPERTIES }; }
/** * Resource description for the addressable resource /subsystem=infinispan/cache-container=X * * @author Richard Achmatowicz (c) 2011 Red Hat Inc. */ public class CacheContainerResourceDefinition extends SimpleResourceDefinition { public static final PathElement CONTAINER_PATH = PathElement.pathElement(ModelKeys.CACHE_CONTAINER); // attributes static final AttributeDefinition ALIAS = new SimpleAttributeDefinitionBuilder(ModelKeys.ALIAS, ModelType.STRING, true) .setXmlName(Attribute.NAME.getLocalName()) .setAllowExpression(false) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleListAttributeDefinition ALIASES = SimpleListAttributeDefinition.Builder.of(ModelKeys.ALIASES, ALIAS) .setAllowNull(true) .setAttributeMarshaller(AttributeMarshallerFactory.createSimpleListAttributeMarshaller()) .build(); static final SimpleAttributeDefinition MODULE = new SimpleAttributeDefinitionBuilder(ModelKeys.MODULE, ModelType.STRING, true) .setXmlName(Attribute.MODULE.getLocalName()) .setAllowExpression(true) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .setValidator(new ModuleIdentifierValidator(true)) .setDefaultValue(new ModelNode().set("org.jboss.as.clustering.infinispan")) .build(); // make default-cache non required (AS7-3488) static final SimpleAttributeDefinition DEFAULT_CACHE = new SimpleAttributeDefinitionBuilder(ModelKeys.DEFAULT_CACHE, ModelType.STRING, true) .setXmlName(Attribute.DEFAULT_CACHE.getLocalName()) .setAllowExpression(true) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleAttributeDefinition EVICTION_EXECUTOR = new SimpleAttributeDefinitionBuilder(ModelKeys.EVICTION_EXECUTOR, ModelType.STRING, true) .setXmlName(Attribute.EVICTION_EXECUTOR.getLocalName()) .setAllowExpression(false) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleAttributeDefinition JNDI_NAME = new SimpleAttributeDefinitionBuilder(ModelKeys.JNDI_NAME, ModelType.STRING, true) .setXmlName(Attribute.JNDI_NAME.getLocalName()) .setAllowExpression(true) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleAttributeDefinition LISTENER_EXECUTOR = new SimpleAttributeDefinitionBuilder(ModelKeys.LISTENER_EXECUTOR, ModelType.STRING, true) .setXmlName(Attribute.LISTENER_EXECUTOR.getLocalName()) .setAllowExpression(false) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleAttributeDefinition NAME = new SimpleAttributeDefinitionBuilder(ModelKeys.NAME, ModelType.STRING, true) .setXmlName(Attribute.NAME.getLocalName()) .setAllowExpression(false) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleAttributeDefinition REPLICATION_QUEUE_EXECUTOR = new SimpleAttributeDefinitionBuilder( ModelKeys.REPLICATION_QUEUE_EXECUTOR, ModelType.STRING, true) .setXmlName(Attribute.REPLICATION_QUEUE_EXECUTOR.getLocalName()) .setAllowExpression(false) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .build(); static final SimpleAttributeDefinition START = new SimpleAttributeDefinitionBuilder(ModelKeys.START, ModelType.STRING, true) .setXmlName(Attribute.START.getLocalName()) .setAllowExpression(true) .setFlags(AttributeAccess.Flag.RESTART_ALL_SERVICES) .setValidator(new EnumValidator<>(StartMode.class, true, false)) .setDefaultValue(new ModelNode().set(StartMode.LAZY.name())) .build(); static final SimpleAttributeDefinition STATISTICS_ENABLED = new SimpleAttributeDefinitionBuilder(ModelKeys.STATISTICS_ENABLED, ModelType.BOOLEAN, true) .setXmlName(Attribute.STATISTICS_ENABLED.getLocalName()) .setAllowExpression(true) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .setDefaultValue(new ModelNode().set(false)) .build(); static final AttributeDefinition[] CACHE_CONTAINER_ATTRIBUTES = { DEFAULT_CACHE, ALIASES, JNDI_NAME, START, LISTENER_EXECUTOR, EVICTION_EXECUTOR, REPLICATION_QUEUE_EXECUTOR, MODULE, STATISTICS_ENABLED }; // operations static final OperationDefinition ALIAS_ADD = new SimpleOperationDefinitionBuilder( "add-alias", InfinispanExtension.getResourceDescriptionResolver("cache-container.alias")) .setParameters(NAME) .build(); static final OperationDefinition ALIAS_REMOVE = new SimpleOperationDefinitionBuilder( "remove-alias", InfinispanExtension.getResourceDescriptionResolver("cache-container.alias")) .setParameters(NAME) .build(); // metrics static final AttributeDefinition CACHE_MANAGER_STATUS = new SimpleAttributeDefinitionBuilder(MetricKeys.CACHE_MANAGER_STATUS, ModelType.STRING, true) .setStorageRuntime() .build(); static final AttributeDefinition CLUSTER_NAME = new SimpleAttributeDefinitionBuilder(MetricKeys.CLUSTER_NAME, ModelType.STRING, true) .setStorageRuntime() .build(); static final AttributeDefinition COORDINATOR_ADDRESS = new SimpleAttributeDefinitionBuilder(MetricKeys.COORDINATOR_ADDRESS, ModelType.STRING, true) .setStorageRuntime() .build(); static final AttributeDefinition IS_COORDINATOR = new SimpleAttributeDefinitionBuilder(MetricKeys.IS_COORDINATOR, ModelType.BOOLEAN, true) .setStorageRuntime() .build(); static final AttributeDefinition LOCAL_ADDRESS = new SimpleAttributeDefinitionBuilder(MetricKeys.LOCAL_ADDRESS, ModelType.STRING, true) .setStorageRuntime() .build(); static final AttributeDefinition[] CACHE_CONTAINER_METRICS = { CACHE_MANAGER_STATUS, CLUSTER_NAME, COORDINATOR_ADDRESS, IS_COORDINATOR, LOCAL_ADDRESS }; private final ResolvePathHandler resolvePathHandler; private final boolean runtimeRegistration; public CacheContainerResourceDefinition( final ResolvePathHandler resolvePathHandler, final boolean runtimeRegistration) { super( CONTAINER_PATH, InfinispanExtension.getResourceDescriptionResolver(ModelKeys.CACHE_CONTAINER), CacheContainerAdd.INSTANCE, CacheContainerRemove.INSTANCE); this.resolvePathHandler = resolvePathHandler; this.runtimeRegistration = runtimeRegistration; } @Override public void registerAttributes(ManagementResourceRegistration resourceRegistration) { // the handlers need to take account of alias final OperationStepHandler writeHandler = new CacheContainerWriteAttributeHandler(CACHE_CONTAINER_ATTRIBUTES); for (AttributeDefinition attr : CACHE_CONTAINER_ATTRIBUTES) { resourceRegistration.registerReadWriteAttribute( attr, CacheContainerReadAttributeHandler.INSTANCE, writeHandler); } for (AttributeDefinition attr : CACHE_CONTAINER_METRICS) { resourceRegistration.registerMetric(attr, CacheContainerMetricsHandler.INSTANCE); } } @Override public void registerOperations(ManagementResourceRegistration resourceRegistration) { super.registerOperations(resourceRegistration); // register add-alias and remove-alias resourceRegistration.registerOperationHandler( CacheContainerResourceDefinition.ALIAS_ADD, AddAliasCommand.INSTANCE); resourceRegistration.registerOperationHandler( CacheContainerResourceDefinition.ALIAS_REMOVE, RemoveAliasCommand.INSTANCE); } @Override public void registerChildren(ManagementResourceRegistration resourceRegistration) { // child resources resourceRegistration.registerSubModel(new TransportResourceDefinition()); resourceRegistration.registerSubModel( new LocalCacheResourceDefinition(this.resolvePathHandler, this.runtimeRegistration)); resourceRegistration.registerSubModel( new InvalidationCacheResourceDefinition(this.resolvePathHandler, this.runtimeRegistration)); resourceRegistration.registerSubModel( new ReplicatedCacheResourceDefinition(this.resolvePathHandler, this.runtimeRegistration)); resourceRegistration.registerSubModel( new DistributedCacheResourceDefinition(this.resolvePathHandler, this.runtimeRegistration)); } }