org.apache.tamaya.inject.api

## Class BaseDynamicValue<T>

- java.lang.Object
- - org.apache.tamaya.inject.api.BaseDynamicValue<T>

- Type Parameters:
    `T` - The type of the value.
  All Implemented Interfaces:
    Serializable, DynamicValue<T>

      public abstract class BaseDynamicValue<T>
      extends Object
      implements DynamicValue<T>, Serializable

  A accessor for a single configured value. This can be used to support values that may change during runtime, reconfigured or final. Hereby external code (could be Tamaya configuration listners or client code), can set a new value. Depending on the `UpdatePolicy` the new value is immedeately active or it requires an active commit by client code. Similarly an instance also can ignore all later changes to the value.

  Types of this interface can be used as injection targets in injected beans or as template resiult on configuration templates.

  ### Implementation Specification

  Implementation of this interface must be
  - Serializable, when also the item stored is serializable
  - Thread safe
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BaseDynamicValue()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `T` | `commitAndGet()` Performs a commit, if necessary, and returns the current value.
    `boolean` | `isPresent()` Return `true` if there is a value present, otherwise `false`.
    `T` | `orElse(T other)` Return the value if present, otherwise return `other`.
    `T` | `orElseGet(ConfiguredItemSupplier<? extends T> other)` Return the value if present, otherwise invoke `other` and return the result of that invocation.
    `<X extends Throwable> T` | `orElseThrow(ConfiguredItemSupplier<? extends X> exceptionSupplier)` Return the contained value, if present, otherwise throw an exception to be created by the provided supplier.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.tamaya.inject.api.DynamicValue

      `addListener, commit, evaluateValue, get, getNewValue, getUpdatePolicy, removeListener, setUpdatePolicy, updateValue`

- - ### Constructor Detail

    - #### BaseDynamicValue

          public BaseDynamicValue()

  - ### Method Detail

    - #### commitAndGet

          public T commitAndGet()

      Performs a commit, if necessary, and returns the current value.
      Specified by:
        `commitAndGet` in interface `DynamicValue<T>`
      Returns:
        the non-null value held by this `DynamicValue`
      Throws:
        `org.apache.tamaya.ConfigException` - if there is no value present
      See Also:
        `DynamicValue.isPresent()`

    - #### isPresent

          public boolean isPresent()

      Return `true` if there is a value present, otherwise `false`.
      Specified by:
        `isPresent` in interface `DynamicValue<T>`
      Returns:
        `true` if there is a value present, otherwise `false`

    - #### orElse

          public T orElse(T other)

      Return the value if present, otherwise return `other`.
      Specified by:
        `orElse` in interface `DynamicValue<T>`
      Parameters:
        `other` - the value to be returned if there is no value present, may be null
      Returns:
        the value, if present, otherwise `other`

    - #### orElseGet

          public T orElseGet(ConfiguredItemSupplier<? extends T> other)

      Return the value if present, otherwise invoke `other` and return the result of that invocation.
      Specified by:
        `orElseGet` in interface `DynamicValue<T>`
      Parameters:
        `other` - a `ConfiguredItemSupplier` whose result is returned if no value is present
      Returns:
        the value if present otherwise the result of `other.get()`
      Throws:
        `NullPointerException` - if value is not present and `other` is null

    - #### orElseThrow

          public <X extends Throwable> T orElseThrow(ConfiguredItemSupplier<? extends X> exceptionSupplier)
                        throws X extends Throwable

      Return the contained value, if present, otherwise throw an exception to be created by the provided supplier.

      NOTE A method reference to the exception constructor with an empty argument list can be used as the supplier. For example, `IllegalStateException::new`

      Specified by:
        `orElseThrow` in interface `DynamicValue<T>`
      Type Parameters:
        `X` - Type of the exception to be thrown
      Parameters:
        `exceptionSupplier` - The supplier which will return the exception to be thrown
      Returns:
        the present value
      Throws:
        `X` - if there is no value present
        `NullPointerException` - if no value is present and `exceptionSupplier` is null
        `X extends Throwable`

Copyright © 2014–2016 Apache Software Foundation. All rights reserved.