All Implemented Interfaces:
Cloneable, Matchable<Attribute<?>>, Updatable<Attribute<T>>

public final class Attribute<T> extends Object implements Cloneable, Matchable<Attribute<?>>, Updatable<Attribute<T>>
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.
Tristan Tarrant
  • Method Details

    • name

      public String name()
    • get

      public T get()
    • orElse

      public T orElse(T other)
    • getInitialValue

      public T getInitialValue()
    • validate

      public void validate()
    • protect

      public Attribute<T> protect()
    • set

      public void set(T value)
    • setImplied

      public void setImplied(T value)
    • fromString

      public void fromString(String value)
    • computeIfAbsent

      public T computeIfAbsent(Supplier<T> supplier)
    • isImmutable

      public boolean isImmutable()
    • isPersistent

      public boolean isPersistent()
    • isModified

      public boolean isModified()
    • isRepeated

      public boolean isRepeated()
    • addListener

      public void addListener(AttributeListener<T> listener)
    • removeListener

      public void removeListener(AttributeListener<T> listener)
    • isNull

      public boolean isNull()
    • getAttributeDefinition

      public AttributeDefinition<T> getAttributeDefinition()
    • clone

      protected Attribute<T> clone()
      clone in class Object
    • read

      public void read(Attribute<T> other)
    • merge

      public void merge(Attribute<T> other)
    • hashCode

      public int hashCode()
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      equals in class Object
    • matches

      public boolean matches(Attribute<?> other)
      Compares this attribute to another attribute taking into account the AttributeDefinition.isGlobal() flag. If the attribute is global, then this method will return true only if the values are identical. If the attribute is local, then this method will return true even if the values don't match. Essentially, this method only ensures that the attribute definitions are equals.
      Specified by:
      matches in interface Matchable<T>
      other -
    • update

      public void update(String elementName, Attribute<T> other)
      Updates this attribute with the value of the other attribute only if the attribute is mutable and the other has been modified from its default value
      Specified by:
      update in interface Updatable<T>
      other -
    • validateUpdate

      public void validateUpdate(String parentName, Attribute<T> other)
      Description copied from interface: Updatable
      Verifies that updating the mutable part of this instance with the values of the other instance is possible
      Specified by:
      validateUpdate in interface Updatable<T>
    • apply

      public void apply(Consumer<T> consumer)
    • toString

      public String toString()
      toString in class Object
    • reset

      public void reset()