Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.infinispan.commons.configuration.attributes;
  
AttributeDefinition. Defines the characteristics of a configuration attribute. It is used to construct an actual Attribute holder. An attribute definition has the following characteristics:
  • A name
  • A default value or a value initializer
  • A type, which needs to be specified if it cannot be inferred from the default value, i.e. when it is null
  • Whether an attribute is immutable or not, i.e. whether its value is constant after initialization or it can be changed
  • A validator which intercepts invalid values

Author(s):
Tristan Tarrant
Since:
7.2
 
 public final class AttributeDefinition<T> {
    private final String name;
    private final T defaultValue;
    private boolean immutable;
    private final AttributeCopier copier;
    private final AttributeInitializer<? extends T> initializer;
    private final AttributeValidator<? super T> validator;
    private final Class<?> type;
 
    AttributeDefinition(String name, T initialValueClass<T> typeboolean immutableAttributeCopier copierAttributeValidator<? super T> validatorAttributeInitializer<? extends T> initializer) {
       this. = name;
       this. = initialValue;
       this. = immutable;
       this. = copier;
       this. = initializer;
       this. = validator;
       this. = type;
    }
 
    public String name() {
       return ;
    }
 
    @SuppressWarnings("unchecked")
    public Class<T> getType() {
       return (Class<T>) ;
    }
 
    public T getDefaultValue() {
       return  != null ? initializer().initialize() : ;
    }
 
    public boolean isImmutable() {
       return ;
    }
 
    public AttributeCopier copier() {
       return ;
    }
 
    public AttributeInitializer<? extends T> initializer() {
       return ;
    }
 
    AttributeValidator<? super T> validator() {
       return ;
    }
 
    public Attribute<T> toAttribute() {
       return new Attribute<T>(this);
    }
 
    public void validate(T value) {
       if ( != null) {
          .validate(value);
       }
    }
 
    public static <T> Builder<T> builder(String name, T defaultValue) {
       if (defaultValue != null) {
          return new Builder(namedefaultValuedefaultValue.getClass());
       } else {
          throw new CacheConfigurationException("Must specify type when passing null for AttributeDefinition " + name);
       }
 
    }
 
    public static <T> Builder<T> builder(String name, T defaultValueClass<T> klass) {
       return new Builder<>(namedefaultValueklass);
    }
 
    public static final class Builder<T> {
       private final String name;
       private final T defaultValue;
       private final Class<?> type;
 
      private boolean immutable = false;
      private AttributeCopier copier = null;
      private AttributeInitializer<? extends T> initializer;
      private AttributeValidator<? super T> validator;
      private Builder(String name, T defaultValueClass<T> type) {
         this. = name;
         this. = defaultValue;
         this. = type;
      }
      public Builder<T> immutable() {
         this. = true;
         return this;
      }
      public Builder<T> copier(AttributeCopier copier) {
         this. = copier;
         return this;
      }
      public Builder<T> initializer(AttributeInitializer<? extends T> initializer) {
         this. = initializer;
         return this;
      }
      public Builder<T> validator(AttributeValidator<? super T> validator) {
         this. = validator;
         return this;
      }
      public AttributeDefinition<T> build() {
         return new AttributeDefinition();
      }
   }
New to GrepCode? Check out our FAQ X