Class DataKey<T>

  • Type Parameters:
    T - type of data held by the key
    All Implemented Interfaces:
    MutableDataValueSetter<T>
    Direct Known Subclasses:
    CollectionDataKey

    public class DataKey<T>
    extends DataKeyBase<T>
    NOTE: Constructors have changed in a breaking way from 0.50.x and prior implementations

    Previously you could provide:

    1. [T] defaultValue 2. DataValueFactory[T] 3. DataKey[T]

    Options 1. and 2. are not available separately and both have to be provided to the constructor to eliminate the need for handling null for DataHolder in the data value factory.

    Now you have the following choices:

    1. [T] defaultValue AND DataNotNullValueFactory 2. NotNullValueSupplier[T] 3. DataKey[T] from which default value will be taken on construction, and values will be retrieved if no value is set for this key

    Additional changes include separating NullableDataKey out so that DataKey values cannot be null. If you need a key with null result value then use NullableDataKey which is identical to DataKey but allows nulls to be used for values.

    • Constructor Detail

      • DataKey

        public DataKey​(@NotNull
                       java.lang.String name,
                       @NotNull
                       T defaultValue,
                       @NotNull
                       DataNotNullValueFactory<T> factory)
        Creates a DataKey with non-null data value and factory

        Use this constructor to ensure that factory is never called with null data holder value

        Parameters:
        name - See DataKeyBase.getName().
        defaultValue - default to use when data holder is null
        factory - data value factory for creating a new default value for the key for a non-null data holder
      • DataKey

        public DataKey​(@NotNull
                       java.lang.String name,
                       @NotNull
                       NotNullValueSupplier<T> supplier)
        Creates a DataKey with non-null data value and factory

        Use this constructor to ensure that factory is never called with null data holder value

        Parameters:
        name - See DataKeyBase.getName().
        supplier - data value factory for creating a new default value for the key not dependent on dataHolder
      • DataKey

        public DataKey​(@NotNull
                       java.lang.String name,
                       @NotNull
                       DataKey<T> defaultKey)
        Creates a DataKey with a dynamic default value taken from a value of another key

        does not cache the returned default value but will always delegate to another key until this key gets its own value set.

        Parameters:
        name - See DataKeyBase.getName().
        defaultKey - The NullableDataKey to take the default value from at time of construction.
      • DataKey

        public DataKey​(@NotNull
                       java.lang.String name,
                       @NotNull
                       T defaultValue)