Package org.apache.cayenne

## Interface ValueHolder<E>

- All Superinterfaces:
    `Serializable`
  All Known Implementing Classes:
    `IndexPropertyList`, `PersistentObjectHolder`, `PersistentObjectList`, `PersistentObjectMap`, `PersistentObjectSet`, `ToManyList`, `ToManySet`

      public interface ValueHolder<E>
      extends Serializable

  Provides a level of indirection for property value access, most often used for deferred faulting of to-one relationships. A ValueHolder abstracts how a property value is obtained (fetched from DB, etc.), thus simplifying design of an object that uses it.

  Here is an example of a bean property implemented using ValueHolder:

       protected ValueHolder someProperty;

       public SomeClass getSomeProperty() {
           return (SomeClass) somePropertyHolder.getValue(SomeClass.class);
       }

       public void setSomeProperty(SomeClass newValue) {
           somePropertyHolder.setValue(SomeClass.class, newValue);
       }

  Since:
    1.2

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `E` | `getValue()` | Returns an object stored by this ValueHolder.
    `E` | `getValueDirectly()` | Retrieves ValueHolder value without triggering fault resolution.
    `void` | `invalidate()` | Turns a ValueHolder into a fault.
    `boolean` | `isFault()` | Returns true if the internal value is not yet resolved.
    `E` | `setValue​(E value)` | Sets an object stored by this ValueHolder.
    `E` | `setValueDirectly​(E value)` | Sets ValueHolder vaue without triggering fault resolution.

- - ### Method Detail

    - #### getValue

          E getValue()
              throws CayenneRuntimeException

      Returns an object stored by this ValueHolder.
      Throws:
        `CayenneRuntimeException`

    - #### getValueDirectly

          E getValueDirectly()
                      throws CayenneRuntimeException

      Retrieves ValueHolder value without triggering fault resolution.
      Throws:
        `CayenneRuntimeException`

    - #### setValue

          E setValue​(E value)
              throws CayenneRuntimeException

      Sets an object stored by this ValueHolder.
      Parameters:
        `value` - a new value of the ValueHolder.
      Returns:
        a previous value saved in the ValueHolder.
      Throws:
        `CayenneRuntimeException`

    - #### setValueDirectly

          E setValueDirectly​(E value)
                      throws CayenneRuntimeException

      Sets ValueHolder vaue without triggering fault resolution.
      Throws:
        `CayenneRuntimeException`

    - #### isFault

          boolean isFault()

      Returns true if the internal value is not yet resolved.

    - #### invalidate

          void invalidate()

      Turns a ValueHolder into a fault.