org.apache.geode.cache

## Class ExpirationAttributes

- java.lang.Object
- - org.apache.geode.cache.ExpirationAttributes

- All Implemented Interfaces:
    java.io.Serializable, DataSerializable

      public class ExpirationAttributes
      extends java.lang.Object
      implements DataSerializable

  Immutable parameter object for accessing and setting the attributes associated with `timeToLive` and `idleTimeout`. If the expiration action is not specified, it defaults to `ExpirationAction.INVALIDATE`. If the timeout is not specified, it defaults to zero (which means to never timeout).
  Since:
    GemFire 3.0
  See Also:
    `AttributesFactory`, `RegionAttributes`, `AttributesMutator`, Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.geode.DataSerializable

      `DataSerializable.Replaceable`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static ExpirationAttributes` | `DEFAULT` convenience constant for a default instance

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExpirationAttributes()` Constructs a default `ExpirationAttributes`, which indicates no expiration will take place.
    `ExpirationAttributes(int expirationTime)` Constructs an `ExpirationAttributes` with the specified expiration time and the default expiration action `ExpirationAction.INVALIDATE`.
    `ExpirationAttributes(int expirationTime, ExpirationAction expirationAction)` Constructs an `ExpirationAttributes` with the specified expiration time and expiration action.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static ExpirationAttributes` | `createFromData(java.io.DataInput in)`
    `boolean` | `equals(java.lang.Object obj)`
    `void` | `fromData(java.io.DataInput in)` Reads the state of this object as primitive data from the given `DataInput`.
    `ExpirationAction` | `getAction()` Returns the action that should take place when this value or region expires.
    `int` | `getTimeout()` Returns the number of seconds before a region or value expires.
    `int` | `hashCode()`
    `void` | `toData(java.io.DataOutput out)` Writes the state of this object as primitive data to the given `DataOutput`.
    `java.lang.String` | `toString()` Returns a string representation of this `ExpirationAttributes`.

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT

          public static final ExpirationAttributes DEFAULT

      convenience constant for a default instance

  - ### Constructor Detail

    - #### ExpirationAttributes

          public ExpirationAttributes()

      Constructs a default `ExpirationAttributes`, which indicates no expiration will take place.

    - #### ExpirationAttributes

          public ExpirationAttributes(int expirationTime)

      Constructs an `ExpirationAttributes` with the specified expiration time and the default expiration action `ExpirationAction.INVALIDATE`.
      Parameters:
        `expirationTime` - The number of seconds before expiration
      Throws:
        `java.lang.IllegalArgumentException` - if expirationTime is nonpositive

    - #### ExpirationAttributes

          public ExpirationAttributes(int expirationTime,
                                      ExpirationAction expirationAction)

      Constructs an `ExpirationAttributes` with the specified expiration time and expiration action.
      Parameters:
        `expirationTime` - The number of seconds for a value to live before it expires. If this parameter is negative, the expiration time will be set to 0, indicating no expiration.
        `expirationAction` - the action to take when the value expires

  - ### Method Detail

    - #### getTimeout

          public int getTimeout()

      Returns the number of seconds before a region or value expires.
      Returns:
        the relative number of seconds before a region or value expires or zero if it will never expire

    - #### getAction

          public ExpirationAction getAction()

      Returns the action that should take place when this value or region expires.
      Returns:
        the action to take when expiring

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Returns a string representation of this `ExpirationAttributes`. If the timeout is zero, returns `"NO EXPIRATION"`.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        the String representation of this expiration attribute

    - #### createFromData

          public static ExpirationAttributes createFromData(java.io.DataInput in)
                                                     throws java.io.IOException,
                                                            java.lang.ClassNotFoundException

      Throws:
        `java.io.IOException`
        `java.lang.ClassNotFoundException`

    - #### fromData

          public void fromData(java.io.DataInput in)
                        throws java.io.IOException,
                               java.lang.ClassNotFoundException

      Description copied from interface: `DataSerializable`
      Reads the state of this object as primitive data from the given `DataInput`.
      Specified by:
        `fromData` in interface `DataSerializable`
      Throws:
        `java.io.IOException` - A problem occurs while reading from `in`
        `java.lang.ClassNotFoundException` - A class could not be loaded while reading from `in`

    - #### toData

          public void toData(java.io.DataOutput out)
                      throws java.io.IOException

      Description copied from interface: `DataSerializable`
      Writes the state of this object as primitive data to the given `DataOutput`.

      Since 5.7 it is possible for any method call to the specified `DataOutput` to throw `GemFireRethrowable`. It should not be caught by user code. If it is it must be rethrown.

      Specified by:
        `toData` in interface `DataSerializable`
      Throws:
        `java.io.IOException` - A problem occurs while writing to `out`