Skip to content

Commit

Permalink
Remove use of deprecated API EnumValidatorBuilder. Enum validator no …
Browse files Browse the repository at this point in the history
…longer needs a builder, as it doesn't need to configure itself.
  • Loading branch information
pferraro committed May 24, 2017
1 parent 389ecda commit a3802ad
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 185 deletions.
@@ -1,6 +1,6 @@
/* /*
* JBoss, Home of Professional Open Source. * JBoss, Home of Professional Open Source.
* Copyright 2015, Red Hat, Inc., and individual contributors * Copyright 2017, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the * as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors. * distribution for a full listing of individual contributors.
* *
Expand All @@ -22,33 +22,19 @@


package org.jboss.as.clustering.controller.validation; package org.jboss.as.clustering.controller.validation;


import java.lang.reflect.Array;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Set;

import org.jboss.as.controller.operations.validation.EnumValidator;
import org.jboss.as.controller.operations.validation.ParameterValidator;


/** /**
* Extension of {@link org.jboss.as.controller.operations.validation.EnumValidator} that additionally exposes
* a simple constructor for most common use case, i.e. where all enum values are accepted.
* @author Paul Ferraro * @author Paul Ferraro
*/ */
public class EnumValidatorBuilder<E extends Enum<E>> extends AbstractParameterValidatorBuilder { public class EnumValidator<E extends Enum<E>> extends org.jboss.as.controller.operations.validation.EnumValidator<E> {

public EnumValidator(Class<E> enumClass) {
private final Class<E> enumClass; super(enumClass, EnumSet.allOf(enumClass));
private final Set<E> allowed;

public EnumValidatorBuilder(Class<E> enumClass) {
this(enumClass, EnumSet.allOf(enumClass));
}

public EnumValidatorBuilder(Class<E> enumClass, Set<E> allowed) {
this.enumClass = enumClass;
this.allowed = allowed;
} }


@SuppressWarnings("unchecked") public EnumValidator(Class<E> enumClass, EnumSet<E> allowed) {
@Override super(enumClass, allowed);
public ParameterValidator build() {
return new EnumValidator<>(this.enumClass, this.allowsUndefined, this.allowsExpressions, this.allowed.toArray((E[]) Array.newInstance(this.enumClass, this.allowed.size())));
} }
} }
Expand Up @@ -22,6 +22,8 @@


package org.jboss.as.clustering.infinispan.subsystem; package org.jboss.as.clustering.infinispan.subsystem;


import java.util.function.UnaryOperator;

import org.infinispan.configuration.cache.BackupConfiguration.BackupStrategy; import org.infinispan.configuration.cache.BackupConfiguration.BackupStrategy;
import org.infinispan.configuration.cache.BackupFailurePolicy; import org.infinispan.configuration.cache.BackupFailurePolicy;
import org.infinispan.configuration.cache.SitesConfiguration; import org.infinispan.configuration.cache.SitesConfiguration;
Expand All @@ -31,8 +33,7 @@
import org.jboss.as.clustering.controller.ResourceDescriptor; import org.jboss.as.clustering.controller.ResourceDescriptor;
import org.jboss.as.clustering.controller.ResourceServiceBuilderFactory; import org.jboss.as.clustering.controller.ResourceServiceBuilderFactory;
import org.jboss.as.clustering.controller.RestartParentResourceRegistration; import org.jboss.as.clustering.controller.RestartParentResourceRegistration;
import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidator;
import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.PathElement; import org.jboss.as.controller.PathElement;
Expand All @@ -57,20 +58,15 @@ static PathElement pathElement(String name) {
} }


enum Attribute implements org.jboss.as.clustering.controller.Attribute { enum Attribute implements org.jboss.as.clustering.controller.Attribute {
ENABLED("enabled", ModelType.BOOLEAN, new ModelNode(true)), ENABLED("enabled", ModelType.BOOLEAN, new ModelNode(true), UnaryOperator.identity()),
FAILURE_POLICY("failure-policy", ModelType.STRING, new ModelNode(BackupFailurePolicy.WARN.name()), new EnumValidatorBuilder<>(BackupFailurePolicy.class)), 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()), new EnumValidatorBuilder<>(BackupStrategy.class)), STRATEGY("strategy", ModelType.STRING, new ModelNode(BackupStrategy.ASYNC.name()), builder -> builder.setValidator(new EnumValidator<>(BackupStrategy.class))),
TIMEOUT("timeout", ModelType.LONG, new ModelNode(10000L)), TIMEOUT("timeout", ModelType.LONG, new ModelNode(10000L), UnaryOperator.identity()),
; ;
private final AttributeDefinition definition; private final AttributeDefinition definition;


Attribute(String name, ModelType type, ModelNode defaultValue) { Attribute(String name, ModelType type, ModelNode defaultValue, UnaryOperator<SimpleAttributeDefinitionBuilder> configurator) {
this.definition = createBuilder(name, type, defaultValue).build(); this.definition = configurator.apply(createBuilder(name, type, defaultValue)).build();
}

Attribute(String name, ModelType type, ModelNode defaultValue, ParameterValidatorBuilder validator) {
SimpleAttributeDefinitionBuilder builder = createBuilder(name, type, defaultValue);
this.definition = builder.setValidator(validator.configure(builder).build()).build();
} }


@Override @Override
Expand Down
Expand Up @@ -24,6 +24,7 @@
import java.util.EnumMap; import java.util.EnumMap;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Map; import java.util.Map;
import java.util.function.UnaryOperator;


import org.jboss.as.clustering.controller.CapabilityProvider; import org.jboss.as.clustering.controller.CapabilityProvider;
import org.jboss.as.clustering.controller.CapabilityReference; import org.jboss.as.clustering.controller.CapabilityReference;
Expand All @@ -37,11 +38,9 @@
import org.jboss.as.clustering.controller.UnaryRequirementCapability; import org.jboss.as.clustering.controller.UnaryRequirementCapability;
import org.jboss.as.clustering.controller.transform.OperationTransformer; import org.jboss.as.clustering.controller.transform.OperationTransformer;
import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer; import org.jboss.as.clustering.controller.transform.SimpleOperationTransformer;
import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidator;
import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder; import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder;
import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.CapabilityReferenceRecorder;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationDefinition; import org.jboss.as.controller.OperationDefinition;
Expand Down Expand Up @@ -126,28 +125,15 @@ public org.jboss.as.clustering.controller.Capability getCapability() {


enum Attribute implements org.jboss.as.clustering.controller.Attribute { enum Attribute implements org.jboss.as.clustering.controller.Attribute {
ALIASES("aliases"), ALIASES("aliases"),
DEFAULT_CACHE("default-cache", ModelType.STRING, new CapabilityReference(DEFAULT_CAPABILITIES.get(InfinispanCacheRequirement.CONFIGURATION), InfinispanCacheRequirement.CONFIGURATION)), DEFAULT_CACHE("default-cache", ModelType.STRING, builder -> builder.setAllowExpression(false).setCapabilityReference(new CapabilityReference(DEFAULT_CAPABILITIES.get(InfinispanCacheRequirement.CONFIGURATION), InfinispanCacheRequirement.CONFIGURATION))),
MODULE("module", ModelType.STRING, new ModelNode("org.jboss.as.clustering.infinispan"), new ModuleIdentifierValidatorBuilder()), MODULE("module", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode("org.jboss.as.clustering.infinispan")).setValidator(new ModuleIdentifierValidatorBuilder().configure(builder).build())),
JNDI_NAME("jndi-name", ModelType.STRING), JNDI_NAME("jndi-name", ModelType.STRING, UnaryOperator.identity()),
STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN, new ModelNode(false)), STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN, builder -> builder.setDefaultValue(new ModelNode(false))),
; ;
private final AttributeDefinition definition; private final AttributeDefinition definition;


Attribute(String name, ModelType type) { Attribute(String name, ModelType type, UnaryOperator<SimpleAttributeDefinitionBuilder> configurator) {
this.definition = createBuilder(name, type, null).build(); this.definition = configurator.apply(createBuilder(name, type)).build();
}

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();
}

Attribute(String name, ModelType type, ModelNode defaultValue, ParameterValidatorBuilder validator) {
SimpleAttributeDefinitionBuilder builder = createBuilder(name, type, defaultValue);
this.definition = builder.setValidator(validator.configure(builder).build()).build();
} }


Attribute(String name) { Attribute(String name) {
Expand All @@ -172,7 +158,7 @@ enum ExecutorAttribute implements org.jboss.as.clustering.controller.Attribute {
private final AttributeDefinition definition; private final AttributeDefinition definition;


ExecutorAttribute(String name) { ExecutorAttribute(String name) {
this.definition = createBuilder(name, ModelType.STRING, null).setAllowExpression(false).setDeprecated(InfinispanModel.VERSION_3_0_0.getVersion()).build(); this.definition = createBuilder(name, ModelType.STRING).setAllowExpression(false).setDeprecated(InfinispanModel.VERSION_3_0_0.getVersion()).build();
} }


@Override @Override
Expand All @@ -183,13 +169,12 @@ public AttributeDefinition getDefinition() {


@Deprecated @Deprecated
enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute {
START("start", ModelType.STRING, new ModelNode(StartMode.LAZY.name()), new EnumValidatorBuilder<>(StartMode.class), InfinispanModel.VERSION_3_0_0), START("start", ModelType.STRING, builder -> builder.setDefaultValue(new ModelNode(StartMode.LAZY.name())).setValidator(new EnumValidator<>(StartMode.class)), InfinispanModel.VERSION_3_0_0),
; ;
private final AttributeDefinition definition; private final AttributeDefinition definition;


DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue, ParameterValidatorBuilder validator, InfinispanModel deprecation) { DeprecatedAttribute(String name, ModelType type, UnaryOperator<SimpleAttributeDefinitionBuilder> configurator, InfinispanModel deprecation) {
SimpleAttributeDefinitionBuilder builder = createBuilder(name, type, defaultValue).setDeprecated(deprecation.getVersion()); this.definition = configurator.apply(createBuilder(name, type)).setDeprecated(deprecation.getVersion()).build();
this.definition = builder.setValidator(validator.configure(builder).build()).build();
} }


@Override @Override
Expand All @@ -198,11 +183,10 @@ public AttributeDefinition getDefinition() {
} }
} }


static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type, ModelNode defaultValue) { static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type) {
return new SimpleAttributeDefinitionBuilder(name, type) return new SimpleAttributeDefinitionBuilder(name, type)
.setAllowExpression(true) .setAllowExpression(true)
.setRequired(false) .setRequired(false)
.setDefaultValue(defaultValue)
.setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)
; ;
} }
Expand Down
Expand Up @@ -27,6 +27,7 @@
import java.util.Map; import java.util.Map;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.UnaryOperator;


import org.infinispan.configuration.cache.Index; import org.infinispan.configuration.cache.Index;
import org.jboss.as.clustering.controller.BinaryRequirementCapability; import org.jboss.as.clustering.controller.BinaryRequirementCapability;
Expand All @@ -38,9 +39,8 @@
import org.jboss.as.clustering.controller.ResourceDescriptor; import org.jboss.as.clustering.controller.ResourceDescriptor;
import org.jboss.as.clustering.controller.ResourceServiceHandler; import org.jboss.as.clustering.controller.ResourceServiceHandler;
import org.jboss.as.clustering.controller.SimpleResourceRegistration; import org.jboss.as.clustering.controller.SimpleResourceRegistration;
import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidator;
import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder; import org.jboss.as.clustering.controller.validation.ModuleIdentifierValidatorBuilder;
import org.jboss.as.clustering.controller.validation.ParameterValidatorBuilder;
import org.jboss.as.controller.AbstractAttributeDefinitionBuilder; import org.jboss.as.controller.AbstractAttributeDefinitionBuilder;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
Expand Down Expand Up @@ -90,19 +90,14 @@ public org.jboss.as.clustering.controller.Capability getCapability() {
} }


enum Attribute implements org.jboss.as.clustering.controller.Attribute { enum Attribute implements org.jboss.as.clustering.controller.Attribute {
MODULE("module", ModelType.STRING, null, new ModuleIdentifierValidatorBuilder()), MODULE("module", ModelType.STRING, builder -> builder.setValidator(new ModuleIdentifierValidatorBuilder().configure(builder).build())),
JNDI_NAME("jndi-name", ModelType.STRING, null), JNDI_NAME("jndi-name", ModelType.STRING, UnaryOperator.identity()),
STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN, new ModelNode(false)), STATISTICS_ENABLED("statistics-enabled", ModelType.BOOLEAN, builder -> builder.setDefaultValue(new ModelNode(false))),
; ;
private final AttributeDefinition definition; private final AttributeDefinition definition;


Attribute(String name, ModelType type, ModelNode defaultValue) { Attribute(String name, ModelType type, UnaryOperator<SimpleAttributeDefinitionBuilder> configurator) {
this.definition = createBuilder(name, type, defaultValue).build(); this.definition = configurator.apply(createBuilder(name, type)).build();
}

Attribute(String name, ModelType type, ModelNode defaultValue, ParameterValidatorBuilder validator) {
SimpleAttributeDefinitionBuilder builder = createBuilder(name, type, defaultValue);
this.definition = builder.setValidator(validator.configure(builder).build()).build();
} }


@Override @Override
Expand All @@ -113,30 +108,22 @@ public AttributeDefinition getDefinition() {


@Deprecated @Deprecated
enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute { enum DeprecatedAttribute implements org.jboss.as.clustering.controller.Attribute {
@Deprecated BATCHING("batching", ModelType.BOOLEAN, new ModelNode(false), InfinispanModel.VERSION_3_0_0), @Deprecated BATCHING("batching", ModelType.BOOLEAN, builder -> builder.setDefaultValue(new ModelNode(false)), InfinispanModel.VERSION_3_0_0),
@Deprecated INDEXING("indexing", ModelType.STRING, new ModelNode(Index.NONE.name()), new EnumValidatorBuilder<>(Index.class), InfinispanModel.VERSION_4_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 INDEXING_PROPERTIES("indexing-properties", InfinispanModel.VERSION_4_0_0),
@Deprecated START("start", ModelType.STRING, new ModelNode(StartMode.LAZY.name()), new EnumValidatorBuilder<>(StartMode.class), InfinispanModel.VERSION_3_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),
; ;
private final AttributeDefinition definition; private final AttributeDefinition definition;


DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue, InfinispanModel deprecation) { DeprecatedAttribute(String name, ModelType type, UnaryOperator<SimpleAttributeDefinitionBuilder> configurator, InfinispanModel deprecation) {
this(createBuilder(name, type, defaultValue), deprecation); this(configurator.apply(createBuilder(name, type)), deprecation);
}

DeprecatedAttribute(String name, ModelType type, ModelNode defaultValue, ParameterValidatorBuilder validator, InfinispanModel deprecation) {
this(createBuilder(name, type, defaultValue), validator, deprecation);
} }


DeprecatedAttribute(String name, InfinispanModel deprecation) { DeprecatedAttribute(String name, InfinispanModel deprecation) {
this(new PropertiesAttributeDefinition.Builder(name).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES), deprecation); this(new PropertiesAttributeDefinition.Builder(name).setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES), deprecation);
} }


DeprecatedAttribute(AbstractAttributeDefinitionBuilder<?, ?> builder, ParameterValidatorBuilder validator, InfinispanModel deprecation) { <A extends AttributeDefinition, B extends AbstractAttributeDefinitionBuilder<B, A>> DeprecatedAttribute(B builder, InfinispanModel deprecation) {
this(builder.setValidator(validator.configure(builder).build()), deprecation);
}

DeprecatedAttribute(AbstractAttributeDefinitionBuilder<?, ?> builder, InfinispanModel deprecation) {
this.definition = builder.setDeprecated(deprecation.getVersion()).build(); this.definition = builder.setDeprecated(deprecation.getVersion()).build();
} }


Expand All @@ -146,11 +133,10 @@ public AttributeDefinition getDefinition() {
} }
} }


static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type, ModelNode defaultValue) { static SimpleAttributeDefinitionBuilder createBuilder(String name, ModelType type) {
return new SimpleAttributeDefinitionBuilder(name, type) return new SimpleAttributeDefinitionBuilder(name, type)
.setAllowExpression(true) .setAllowExpression(true)
.setRequired(false) .setRequired(false)
.setDefaultValue(defaultValue)
.setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES) .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)
; ;
} }
Expand Down
Expand Up @@ -29,7 +29,7 @@
import org.jboss.as.clustering.controller.ManagementResourceRegistration; import org.jboss.as.clustering.controller.ManagementResourceRegistration;
import org.jboss.as.clustering.controller.MetricHandler; import org.jboss.as.clustering.controller.MetricHandler;
import org.jboss.as.clustering.controller.ResourceDescriptor; import org.jboss.as.clustering.controller.ResourceDescriptor;
import org.jboss.as.clustering.controller.validation.EnumValidatorBuilder; import org.jboss.as.clustering.controller.validation.EnumValidator;
import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.PathAddress;
Expand Down Expand Up @@ -71,7 +71,7 @@ public RuntimeCapability<?> resolve(PathAddress address) {
} }


enum Attribute implements org.jboss.as.clustering.controller.Attribute { enum Attribute implements org.jboss.as.clustering.controller.Attribute {
MODE("mode", ModelType.STRING, new ModelNode(Mode.SYNC.name()), builder -> builder.setValidator(new EnumValidatorBuilder<>(Mode.class).configure(builder).build())), MODE("mode", ModelType.STRING, new ModelNode(Mode.SYNC.name()), builder -> builder.setValidator(new EnumValidator<>(Mode.class))),
REMOTE_TIMEOUT("remote-timeout", ModelType.LONG, new ModelNode(10000L), UnaryOperator.identity()), REMOTE_TIMEOUT("remote-timeout", ModelType.LONG, new ModelNode(10000L), UnaryOperator.identity()),
; ;
private final AttributeDefinition definition; private final AttributeDefinition definition;
Expand Down

0 comments on commit a3802ad

Please sign in to comment.