Class Attribute<T>

  • 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 Detail

      • get

        public T get()
      • orElse

        public T orElse​(T other)
      • getInitialValue

        public T getInitialValue()
      • validate

        public void validate()
      • 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()
      • isNull

        public boolean isNull()
      • hashCode

        public int hashCode()
        hashCode 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​(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​(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)
      • reset

        public void reset()