Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.infinispan.commons.configuration.attributes;
  
  import java.util.List;
  
Attribute. This class implements a configuration attribute value holder. A configuration attribute is defined by an AttributeDefinition. An attribute contains an optional value (or defers to its AttributeDefinition for the default value). It is possible to determine whether a value has been changed with respect to its initial value. An Attribute remains modifiable until it is protected. At which point it can only be modified if its AttributeDefinition allows it to be mutable. Additionally it is possible to register listeners when values change so that code can react to these changes.

Author(s):
Tristan Tarrant
Since:
7.2
 
 public final class Attribute<T> implements Cloneable {
    private final AttributeDefinition<T> definition;
    protected T value;
    private boolean protect;
    private boolean modified;
    private List<AttributeListener<T>> listeners;
 
    Attribute(AttributeDefinition<T> definition) {
       this. = definition;
       this. = definition.getDefaultValue();
    }
 
    public String name() {
       return .name();
    }
 
    public T get() {
       return ;
    }
 
    public T getInitialValue() {
       return .getDefaultValue();
    }
 
    public void validate() {
       .validate();
    }
 
    public Attribute<T> protect() {
       if (! && .isImmutable()) {
          this. = true;
       }
       return this;
    }
 
    public void set(T value) {
       if () {
          throw new IllegalStateException();
       }
       T oldValue = this.;
       this. = value;
       this. = true;
       this.fireValueChanged(oldValue);
    }
 
    public boolean isImmutable() {
       return .isImmutable();
    }
 
    public boolean isModified() {
       return ;
    }
 
    public <K> K asObject() {
       return (K) ;
    }
 
    public void addListener(AttributeListener<T> listener) {
       if (isImmutable()) {
          throw new UnsupportedOperationException();
       }
       if ( == null) {
           = new ArrayList<>();
       }
       .add(listener);
    }
 
    T getValue() {
       return ;
    }
 
    void setValue(T value) {
       this. = value;
    }
 
    public boolean isNull() {
       return  == null;
    }
 
    boolean isProtect() {
       return ;
    }
   void setProtect(boolean protect) {
      this. = protect;
   }
      return ;
   }
   void setModified(boolean modified) {
      this. = modified;
   }
   private void fireValueChanged(T oldValue) {
      if ( != null) {
         for (AttributeListener<T> listener : ) {
            listener.attributeChanged(thisoldValue);
         }
      }
   }
   @SuppressWarnings("unchecked")
   protected Attribute<T> clone() {
      Attribute<T> clone;
      try {
         clone = (Attribute<T>) super.clone();
         clone.modified = this.;
         clone.listeners = null;
         clone.protect = false;
         return clone;
      } catch (CloneNotSupportedException e) {
         throw new CacheException(e);
      }
   }
   public void read(Attribute<T> other) {
      AttributeCopier<T> copier = .copier();
      if (copier == null) {
         Attribute<T> clone = other.clone();
         this. = clone.value;
      } else {
         this. = copier.copyAttribute(other.value);
      }
      this. = other.modified;
   }
   public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = prime * result + (( == null) ? 0 : .hashCode());
      result = prime * result + ( ? 1231 : 1237);
      result = prime * result + (( == null) ? 0 : .hashCode());
      return result;
   }
   public boolean equals(Object obj) {
      if (this == obj)
         return true;
      if (obj == null)
         return false;
      if (getClass() != obj.getClass())
         return false;
      Attribute other = (Attributeobj;
      if ( == null) {
         if (other.definition != null)
            return false;
      } else if (!.equals(other.definition))
         return false;
      if ( == null) {
         if (other.value != null)
            return false;
      } else if (!.equals(other.value))
         return false;
      return true;
   }
   public String toString() {
      return .name() + "=" + ;
   }
   public void reset() {
      if () {
         throw new IllegalStateException("Cannot reset a protected Attribute");
      }
       = false;
   }
New to GrepCode? Check out our FAQ X