diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BackupResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BackupResourceDefinition.java index a0f1abd18bf3..ec1fe07358ec 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BackupResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BackupResourceDefinition.java @@ -57,22 +57,37 @@ static PathElement pathElement(String name) { return PathElement.pathElement("backup", name); } - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - ENABLED("enabled", ModelType.BOOLEAN, new ModelNode(true), UnaryOperator.identity()), - FAILURE_POLICY("failure-policy", ModelType.STRING, new ModelNode(BackupFailurePolicy.WARN.name()), builder -> builder.setValidator(new EnumValidator<>(BackupFailurePolicy.class))), - STRATEGY("strategy", ModelType.STRING, new ModelNode(BackupStrategy.ASYNC.name()), builder -> builder.setValidator(new EnumValidator<>(BackupStrategy.class))), - TIMEOUT("timeout", ModelType.LONG, new ModelNode(10000L), UnaryOperator.identity()), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + ENABLED("enabled", ModelType.BOOLEAN, new ModelNode(true)), + FAILURE_POLICY("failure-policy", ModelType.STRING, new ModelNode(BackupFailurePolicy.WARN.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(BackupFailurePolicy.class)); + } + }, + STRATEGY("strategy", ModelType.STRING, new ModelNode(BackupStrategy.ASYNC.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(BackupStrategy.class)); + } + }, + TIMEOUT("timeout", ModelType.LONG, new ModelNode(10000L)), ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(createBuilder(name, type, defaultValue)).build(); + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = this.apply(createBuilder(name, type, defaultValue)).build(); } @Override public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } enum TakeOfflineAttribute implements org.jboss.as.clustering.controller.Attribute { diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryMemoryResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryMemoryResourceDefinition.java index d36609cf8902..d441c9937c0a 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryMemoryResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/BinaryMemoryResourceDefinition.java @@ -43,13 +43,18 @@ public class BinaryMemoryResourceDefinition extends MemoryResourceDefinition { static final PathElement PATH = pathElement("binary"); - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - EVICTION_TYPE("eviction-type", ModelType.STRING, new ModelNode(EvictionType.COUNT.name()), builder -> builder.setValidator(new EnumValidator<>(EvictionType.class))), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + EVICTION_TYPE("eviction-type", ModelType.STRING, new ModelNode(EvictionType.COUNT.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(EvictionType.class)); + } + }, ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue) diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheContainerResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheContainerResourceDefinition.java index 13f5a9f8d1ec..89fe6bc4acb4 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheContainerResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheContainerResourceDefinition.java @@ -125,16 +125,33 @@ public org.jboss.as.clustering.controller.Capability getCapability() { .setDeprecated(InfinispanModel.VERSION_3_0_0.getVersion()) .build(); - enum Attribute implements org.jboss.as.clustering.controller.Attribute { + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { ALIASES("aliases"), - DEFAULT_CACHE("default-cache", ModelType.STRING, builder -> builder.setAllowExpression(false).setCapabilityReference(new CapabilityReference(DEFAULT_CAPABILITIES.get(InfinispanCacheRequirement.CONFIGURATION), InfinispanCacheRequirement.CONFIGURATION))), - MODULE("module", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode("org.jboss.as.clustering.infinispan")).setValidator(new ModuleIdentifierValidatorBuilder().configure(builder).build())), - STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN, builder -> builder.setDefaultValue(new ModelNode(false))), + DEFAULT_CACHE("default-cache", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setAllowExpression(false).setCapabilityReference(new CapabilityReference(DEFAULT_CAPABILITIES.get(InfinispanCacheRequirement.CONFIGURATION), InfinispanCacheRequirement.CONFIGURATION)); + } + }, + MODULE("module", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode("org.jboss.as.clustering.infinispan")) + .setValidator(new ModuleIdentifierValidatorBuilder().configure(builder).build()) + ; + } + }, + STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(false)); + } + }, ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, UnaryOperator configurator) { - this.definition = configurator.apply(createBuilder(name, type)).build(); + Attribute(String name, ModelType type) { + this.definition = this.apply(createBuilder(name, type)).build(); } Attribute(String name) { @@ -148,6 +165,11 @@ enum Attribute implements org.jboss.as.clustering.controller.Attribute { public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } @Deprecated @@ -169,20 +191,32 @@ public AttributeDefinition getDefinition() { } @Deprecated - enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { - JNDI_NAME("jndi-name", ModelType.STRING, UnaryOperator.identity(), InfinispanModel.VERSION_6_0_0), - START("start", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode(StartMode.LAZY.name())).setValidator(new EnumValidator<>(StartMode.class)), InfinispanModel.VERSION_3_0_0), + enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + JNDI_NAME("jndi-name", ModelType.STRING, InfinispanModel.VERSION_6_0_0), + START("start", ModelType.STRING, InfinispanModel.VERSION_3_0_0) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(StartMode.LAZY.name())) + .setValidator(new EnumValidator<>(StartMode.class)) + ; + } + }, ; private final AttributeDefinition definition; - DeprecatedAttribute(String name, ModelType type, UnaryOperator configurator, InfinispanModel deprecation) { - this.definition = configurator.apply(createBuilder(name, type)).setDeprecated(deprecation.getVersion()).build(); + DeprecatedAttribute(String name, ModelType type, InfinispanModel deprecation) { + this.definition = this.apply(createBuilder(name, type)).setDeprecated(deprecation.getVersion()).build(); } @Override public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type) { diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java index 66ab6a57d527..0abd7650a394 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/CacheResourceDefinition.java @@ -41,7 +41,6 @@ import org.jboss.as.clustering.controller.SimpleResourceRegistration; import org.jboss.as.clustering.controller.validation.EnumValidator; import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder; -import org.jboss.as.controller.AbstractAttributeDefinitionBuilder; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.OperationFailedException; @@ -89,14 +88,24 @@ public org.jboss.as.clustering.controller.Capability getCapability() { } } - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - MODULE("module", ModelType.STRING, builder -> builder.setValidator(new ModuleIdentifierValidatorBuilder().configure(builder).build())), - STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN, builder -> builder.setDefaultValue(new ModelNode(false))), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + MODULE("module", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new ModuleIdentifierValidatorBuilder().configure(builder).build()); + } + }, + STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(false)); + } + }, ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, UnaryOperator configurator) { - this.definition = configurator.apply(createBuilder(name, type)).build(); + Attribute(String name, ModelType type) { + this.definition = this.apply(createBuilder(name, type)).build(); } @Override @@ -106,31 +115,54 @@ public AttributeDefinition getDefinition() { } @Deprecated - enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { - @Deprecated BATCHING("batching", ModelType.BOOLEAN, builder -> builder.setDefaultValue(new ModelNode(false)), InfinispanModel.VERSION_3_0_0), - @Deprecated INDEXING("indexing", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode(Index.NONE.name())).setValidator(new EnumValidator<>(Index.class)), InfinispanModel.VERSION_4_0_0), - @Deprecated INDEXING_PROPERTIES("indexing-properties", InfinispanModel.VERSION_4_0_0), - @Deprecated JNDI_NAME("jndi-name", ModelType.STRING, UnaryOperator.identity(), InfinispanModel.VERSION_6_0_0), - @Deprecated START("start", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode(StartMode.LAZY.name())).setValidator(new EnumValidator<>(StartMode.class)), InfinispanModel.VERSION_3_0_0), + enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + BATCHING("batching", ModelType.BOOLEAN, InfinispanModel.VERSION_3_0_0) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(false)); + } + }, + INDEXING("indexing", ModelType.STRING, InfinispanModel.VERSION_4_0_0) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(Index.NONE.name())) + .setValidator(new EnumValidator<>(Index.class)) + ; + } + }, + INDEXING_PROPERTIES("indexing-properties", InfinispanModel.VERSION_4_0_0), + JNDI_NAME("jndi-name", ModelType.STRING, InfinispanModel.VERSION_6_0_0), + START("start", ModelType.STRING, InfinispanModel.VERSION_3_0_0) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(StartMode.LAZY.name())) + .setValidator(new EnumValidator<>(StartMode.class)) + ; + } + }, ; private final AttributeDefinition definition; - DeprecatedAttribute(String name, ModelType type, UnaryOperator configurator, InfinispanModel deprecation) { - this(configurator.apply(createBuilder(name, type)), deprecation); + DeprecatedAttribute(String name, ModelType type, InfinispanModel deprecation) { + this.definition = this.apply(createBuilder(name, type)).setDeprecated(deprecation.getVersion()).build(); } DeprecatedAttribute(String name, InfinispanModel deprecation) { - this(new PropertiesAttributeDefinition.Builder(name).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES), deprecation); - } - - > DeprecatedAttribute(B builder, InfinispanModel deprecation) { - this.definition = builder.setDeprecated(deprecation.getVersion()).build(); + this.definition = new PropertiesAttributeDefinition.Builder(name) + .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) + .setDeprecated(deprecation.getVersion()) + .build(); } @Override public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type) { diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java index 55d92b2b983a..93c12b8d0056 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ClusteredCacheResourceDefinition.java @@ -72,12 +72,12 @@ public RuntimeCapability resolve(PathAddress address) { } enum Attribute implements org.jboss.as.clustering.controller.Attribute { - REMOTE_TIMEOUT("remote-timeout", ModelType.LONG, new ModelNode(10000L), UnaryOperator.identity()), + REMOTE_TIMEOUT("remote-timeout", ModelType.LONG, new ModelNode(10000L)), ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(createBuilder(name, type, defaultValue)).build(); + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = createBuilder(name, type, defaultValue).build(); } @Override @@ -87,26 +87,32 @@ public AttributeDefinition getDefinition() { } @Deprecated - enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { + enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { ASYNC_MARSHALLING("async-marshalling", ModelType.BOOLEAN, new ModelNode(false), InfinispanModel.VERSION_4_0_0), - MODE("mode", ModelType.STRING, new ModelNode(Mode.SYNC.name()), InfinispanModel.VERSION_6_0_0, builder -> builder.setValidator(new EnumValidator<>(Mode.class))), + MODE("mode", ModelType.STRING, new ModelNode(Mode.SYNC.name()), InfinispanModel.VERSION_6_0_0) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(Mode.class)); + } + }, QUEUE_FLUSH_INTERVAL("queue-flush-interval", ModelType.LONG, new ModelNode(10L), InfinispanModel.VERSION_4_1_0), QUEUE_SIZE("queue-size", ModelType.INT, new ModelNode(0), InfinispanModel.VERSION_4_1_0), ; private final AttributeDefinition definition; DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue, InfinispanModel deprecation) { - this(name, type, defaultValue, deprecation, UnaryOperator.identity()); - } - - DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue, InfinispanModel deprecation, UnaryOperator configurator) { - this.definition = createBuilder(name, type, defaultValue).setDeprecated(deprecation.getVersion()).build(); + this.definition = this.apply(createBuilder(name, type, defaultValue)).setDeprecated(deprecation.getVersion()).build(); } @Override public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type, ModelNode defaultValue) { diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java index beeda2da3b5d..bd4e96826367 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/FileStoreResourceDefinition.java @@ -49,18 +49,26 @@ public class FileStoreResourceDefinition extends StoreResourceDefinition { static final PathElement LEGACY_PATH = PathElement.pathElement("file-store", "FILE_STORE"); static final PathElement PATH = pathElement("file"); - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - RELATIVE_PATH("path", ModelType.STRING, builder -> builder.setAllowExpression(true)), - RELATIVE_TO("relative-to", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode(ServerEnvironment.SERVER_DATA_DIR)).setCapabilityReference(new CapabilityReference(Capability.PERSISTENCE, CommonUnaryRequirement.PATH))), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + RELATIVE_PATH("path", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setAllowExpression(true); + } + }, + RELATIVE_TO("relative-to", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDefaultValue(new ModelNode(ServerEnvironment.SERVER_DATA_DIR)) + .setCapabilityReference(new CapabilityReference(Capability.PERSISTENCE, CommonUnaryRequirement.PATH)) + ; + } + }, ; private final AttributeDefinition definition; Attribute(String name, ModelType type) { - this(name, type, UnaryOperator.identity()); - } - - Attribute(String name, ModelType type, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type).setRequired(false).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)).build(); + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type).setRequired(false).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)).build(); } @Override diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java index b3dd03b17535..b10c11af6795 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JDBCStoreResourceDefinition.java @@ -65,14 +65,32 @@ public abstract class JDBCStoreResourceDefinition extends StoreResourceDefinitio static final PathElement PATH = pathElement("jdbc"); - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - DATA_SOURCE("data-source", ModelType.STRING, builder -> builder.setRequired(true).setCapabilityReference(new CapabilityReference(Capability.PERSISTENCE, CommonUnaryRequirement.DATA_SOURCE)).setAlternatives(DeprecatedAttribute.DATASOURCE.getName())), - DIALECT("dialect", ModelType.STRING, builder -> builder.setAllowExpression(true).setRequired(false).setValidator(new EnumValidator<>(DatabaseType.class))), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + DATA_SOURCE("data-source", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setRequired(true) + .setCapabilityReference(new CapabilityReference(Capability.PERSISTENCE, CommonUnaryRequirement.DATA_SOURCE)) + .setAlternatives(DeprecatedAttribute.DATASOURCE.getName()) + ; + } + }, + DIALECT("dialect", ModelType.STRING) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setAllowExpression(true) + .setRequired(false) + .setValidator(new EnumValidator<>(DatabaseType.class)) + ; + } + }, ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)).build(); + Attribute(String name, ModelType type) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) + .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)) + .build(); } @Override @@ -81,13 +99,22 @@ public AttributeDefinition getDefinition() { } } - enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { - DATASOURCE("datasource", ModelType.STRING, builder -> builder.setAllowExpression(true).setRequired(false), InfinispanModel.VERSION_4_0_0), // Defines data source as JNDI name + enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + // Defines data source as JNDI name + DATASOURCE("datasource", ModelType.STRING, InfinispanModel.VERSION_4_0_0) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setAllowExpression(true).setRequired(false); + } + }, ; private final AttributeDefinition definition; - DeprecatedAttribute(String name, ModelType type, UnaryOperator configurator, InfinispanModel deprecation) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type).setDeprecated(deprecation.getVersion()).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)).build(); + DeprecatedAttribute(String name, ModelType type, InfinispanModel deprecation) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) + .setDeprecated(deprecation.getVersion()) + .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)) + .build(); } @Override diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java index cf66086389db..4caa9e9a8b2c 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/JGroupsTransportResourceDefinition.java @@ -23,6 +23,7 @@ package org.jboss.as.clustering.infinispan.subsystem; import java.util.Set; +import java.util.function.UnaryOperator; import org.jboss.as.clustering.controller.DefaultableCapabilityReference; import org.jboss.as.clustering.controller.SimpleAliasEntry; @@ -35,7 +36,6 @@ import org.jboss.as.clustering.jgroups.subsystem.ChannelResourceDefinition; import org.jboss.as.clustering.jgroups.subsystem.JGroupsSubsystemResourceDefinition; import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.CapabilityReferenceRecorder; import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.PathElement; @@ -107,27 +107,32 @@ public RuntimeCapability resolve(PathAddress address) { } } - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - CHANNEL("channel", ModelType.STRING, new DefaultableCapabilityReference(Capability.TRANSPORT_CHANNEL, JGroupsRequirement.CHANNEL_FACTORY)), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + CHANNEL("channel", ModelType.STRING, null) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setAllowExpression(false) + .setCapabilityReference(new DefaultableCapabilityReference(Capability.TRANSPORT_CHANNEL, JGroupsRequirement.CHANNEL_FACTORY)) + ; + } + }, LOCK_TIMEOUT("lock-timeout", ModelType.LONG, new ModelNode(240000L)), ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, CapabilityReferenceRecorder reference) { - this.definition = createBuilder(name, type, null) - .setAllowExpression(false) - .setCapabilityReference(reference) - .build(); - } - Attribute(String name, ModelType type, ModelNode defaultValue) { - this.definition = createBuilder(name, type, defaultValue).build(); + this.definition = this.apply(createBuilder(name, type, defaultValue)).build(); } @Override public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } @Deprecated diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LockingResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LockingResourceDefinition.java index fadeb695793d..ffe5a3c72056 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LockingResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/LockingResourceDefinition.java @@ -55,16 +55,26 @@ public class LockingResourceDefinition extends ComponentResourceDefinition { static final PathElement PATH = pathElement("locking"); static final PathElement LEGACY_PATH = PathElement.pathElement(PATH.getValue(), "LOCKING"); - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - ACQUIRE_TIMEOUT("acquire-timeout", ModelType.LONG, new ModelNode(15000L), builder -> builder.setMeasurementUnit(MeasurementUnit.MILLISECONDS)), - CONCURRENCY("concurrency-level", ModelType.INT, new ModelNode(1000), UnaryOperator.identity()), - ISOLATION("isolation", ModelType.STRING, new ModelNode(IsolationLevel.READ_COMMITTED.name()), builder -> builder.setValidator(new EnumValidator<>(IsolationLevel.class))), - STRIPING("striping", ModelType.BOOLEAN, new ModelNode(false), UnaryOperator.identity()), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + ACQUIRE_TIMEOUT("acquire-timeout", ModelType.LONG, new ModelNode(15000L)) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setMeasurementUnit(MeasurementUnit.MILLISECONDS); + } + }, + CONCURRENCY("concurrency-level", ModelType.INT, new ModelNode(1000)), + ISOLATION("isolation", ModelType.STRING, new ModelNode(IsolationLevel.READ_COMMITTED.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(IsolationLevel.class)); + } + }, + STRIPING("striping", ModelType.BOOLEAN, new ModelNode(false)), ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue) @@ -76,6 +86,11 @@ enum Attribute implements org.jboss.as.clustering.controller.Attribute { public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder parent) { diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MemoryResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MemoryResourceDefinition.java index d625e254129d..6bcc5581f466 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MemoryResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/MemoryResourceDefinition.java @@ -23,7 +23,6 @@ package org.jboss.as.clustering.infinispan.subsystem; import java.util.function.Consumer; -import java.util.function.UnaryOperator; import org.infinispan.configuration.cache.StorageType; import org.jboss.as.clustering.controller.ChildResourceDefinition; @@ -52,17 +51,17 @@ static PathElement pathElement(String value) { } enum Attribute implements org.jboss.as.clustering.controller.Attribute { - SIZE("size", ModelType.LONG, new ModelNode(-1L), UnaryOperator.identity()), + SIZE("size", ModelType.LONG, new ModelNode(-1L)), ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) - ).build(); + .build(); } @Override diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ObjectMemoryResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ObjectMemoryResourceDefinition.java index 3a17a06cd73a..d7dc7ea91b0b 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ObjectMemoryResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/ObjectMemoryResourceDefinition.java @@ -52,14 +52,19 @@ public class ObjectMemoryResourceDefinition extends MemoryResourceDefinition { static final PathElement EVICTION_PATH = ComponentResourceDefinition.pathElement("eviction"); static final PathElement LEGACY_PATH = PathElement.pathElement(EVICTION_PATH.getValue(), "EVICTION"); - enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { - STRATEGY("strategy", ModelType.STRING, new ModelNode(EvictionStrategy.NONE.name()), builder -> builder.setValidator(new EnumValidator<>(EvictionStrategy.class, EnumSet.complementOf(EnumSet.of(EvictionStrategy.MANUAL))))), - MAX_ENTRIES("max-entries", ModelType.LONG, new ModelNode(-1L), UnaryOperator.identity()), + enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + STRATEGY("strategy", ModelType.STRING, new ModelNode(EvictionStrategy.NONE.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(EvictionStrategy.class, EnumSet.complementOf(EnumSet.of(EvictionStrategy.MANUAL)))); + } + }, + MAX_ENTRIES("max-entries", ModelType.LONG, new ModelNode(-1L)), ; private final AttributeDefinition definition; - DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue) @@ -72,6 +77,11 @@ enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } @SuppressWarnings("deprecation") diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/OffHeapMemoryResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/OffHeapMemoryResourceDefinition.java index c5429549cce7..8b7f02a8803d 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/OffHeapMemoryResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/OffHeapMemoryResourceDefinition.java @@ -22,8 +22,6 @@ package org.jboss.as.clustering.infinispan.subsystem; -import java.util.function.UnaryOperator; - import org.infinispan.configuration.cache.StorageType; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.ModelVersion; @@ -42,17 +40,17 @@ public class OffHeapMemoryResourceDefinition extends MemoryResourceDefinition { static final PathElement PATH = pathElement("off-heap"); enum Attribute implements org.jboss.as.clustering.controller.Attribute { - CAPACITY("capacity", ModelType.INT, new ModelNode(1048576), UnaryOperator.identity()), + CAPACITY("capacity", ModelType.INT, new ModelNode(1048576)), ; private final AttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) - ).build(); + .build(); } @Override diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java index e7706571315d..78e209cc4ca4 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/StoreResourceDefinition.java @@ -92,24 +92,29 @@ public RuntimeCapability resolve(PathAddress address) { } } - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - FETCH_STATE("fetch-state", true, UnaryOperator.identity()), - MAX_BATCH_SIZE("max-batch-size", ModelType.INT, new ModelNode(100), UnaryOperator.identity()), - PASSIVATION("passivation", true, UnaryOperator.identity()), - PRELOAD("preload", false, UnaryOperator.identity()), - PURGE("purge", true, UnaryOperator.identity()), - SHARED("shared", false, UnaryOperator.identity()), - SINGLETON("singleton", false, builder -> builder.setDeprecated(InfinispanModel.VERSION_5_0_0.getVersion())), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + FETCH_STATE("fetch-state", true), + MAX_BATCH_SIZE("max-batch-size", ModelType.INT, new ModelNode(100)), + PASSIVATION("passivation", true), + PRELOAD("preload", false), + PURGE("purge", true), + SHARED("shared", false), + SINGLETON("singleton", false) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setDeprecated(InfinispanModel.VERSION_5_0_0.getVersion()); + } + }, PROPERTIES("properties"), ; private final AttributeDefinition definition; - Attribute(String name, boolean defaultValue, UnaryOperator configurator) { - this(name, ModelType.BOOLEAN, new ModelNode(defaultValue), configurator); + Attribute(String name, boolean defaultValue) { + this(name, ModelType.BOOLEAN, new ModelNode(defaultValue)); } - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue) @@ -128,6 +133,11 @@ enum Attribute implements org.jboss.as.clustering.controller.Attribute { public AttributeDefinition getDefinition() { return this.definition; } + + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder; + } } static void buildTransformation(ModelVersion version, ResourceTransformationDescriptionBuilder builder, PathElement path) { diff --git a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/TransactionResourceDefinition.java b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/TransactionResourceDefinition.java index ba1c62e2198e..49b3cc529df8 100644 --- a/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/TransactionResourceDefinition.java +++ b/clustering/infinispan/extension/src/main/java/org/jboss/as/clustering/infinispan/subsystem/TransactionResourceDefinition.java @@ -75,15 +75,30 @@ public class TransactionResourceDefinition extends ComponentResourceDefinition { static final PathElement PATH = pathElement("transaction"); static final PathElement LEGACY_PATH = PathElement.pathElement(PATH.getValue(), "TRANSACTION"); - enum Attribute implements org.jboss.as.clustering.controller.Attribute { - LOCKING("locking", ModelType.STRING, new ModelNode(LockingMode.PESSIMISTIC.name()), builder -> builder.setValidator(new EnumValidator<>(LockingMode.class))), - MODE("mode", ModelType.STRING, new ModelNode(TransactionMode.NONE.name()), builder -> builder.setValidator(new EnumValidator<>(TransactionMode.class))), - STOP_TIMEOUT("stop-timeout", ModelType.LONG, new ModelNode(10000L), builder -> builder.setMeasurementUnit(MeasurementUnit.MILLISECONDS)), + enum Attribute implements org.jboss.as.clustering.controller.Attribute, UnaryOperator { + LOCKING("locking", ModelType.STRING, new ModelNode(LockingMode.PESSIMISTIC.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(LockingMode.class)); + } + }, + MODE("mode", ModelType.STRING, new ModelNode(TransactionMode.NONE.name())) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setValidator(new EnumValidator<>(TransactionMode.class)); + } + }, + STOP_TIMEOUT("stop-timeout", ModelType.LONG, new ModelNode(10000L)) { + @Override + public SimpleAttributeDefinitionBuilder apply(SimpleAttributeDefinitionBuilder builder) { + return builder.setMeasurementUnit(MeasurementUnit.MILLISECONDS); + } + }, ; private final SimpleAttributeDefinition definition; - Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator configurator) { - this.definition = configurator.apply(new SimpleAttributeDefinitionBuilder(name, type) + Attribute(String name, ModelType type, ModelNode defaultValue) { + this.definition = this.apply(new SimpleAttributeDefinitionBuilder(name, type) .setAllowExpression(true) .setRequired(false) .setDefaultValue(defaultValue)