Skip navigation links

Overview | Package | Class | Tree | Index | Help
| Oracle® Coherence Java API Reference Release 3.6.1.0 E18814-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.tangosol.io
Interface Evolvable

All Known Subinterfaces:
  EvolvablePortableObject

All Known Implementing Classes:
  AbstractEvolvable

      public interface Evolvable

The Evolvable interface is implemented by classes that require forwards- and backwards-compatibility of their serialized form. An Evolvable class has an integer version identifier `n`, where `n >= 0`. When the contents and/or semantics of the serialized form of the Evolvable class changes, the version identifier is increased. Two versions identifiers, `n1` and `n2`, indicate the same version iff `n1 == n2`; the version indicated by `n2` is newer than the version indicated by `n1` iff `n2 > n1`.

The Evolvable interface is designed to support the evolution of classes by the addition of data. Removal of data cannot be safely accomplished as long as a previous version of the class exists that relies on that data. Modifications to the structure or semantics of data from previous versions likewise cannot be safely accomplished as long as a previous version of the class exists that relies on the previous structure or semantics of the data. When an Evolvable object is deserialized, it retains any unknown data that has been added to newer versions of the class, and the version identifier for that data format. When the Evolvable object is subsequently serialized, it includes both that version identifier and the unknown future data. When an Evolvable object is deserialized from a data stream whose version identifier indicates an older version, it must default and/or calculate the values for any data fields and properties that have been added since that older version. When the Evolvable object is subsequently serialized, it includes its own version identifier and all of its data. Note that there will be no unknown future data in this case; future data can only exist when the version of the data stream is newer than the version of the Evolvable class.

Since:
  Coherence 3.2
Author:
  cp/jh 2006.07.14

Method Summary
`int` | `getDataVersion()` Obtain the version associated with the data stream from which this object was deserialized.
`Binary` | `getFutureData()` Return all the unknown remainder of the data stream from which this object was deserialized.
`int` | `getImplVersion()` Determine the serialization version supported by the implementing class.
`void` | `setDataVersion(int nVersion)` Set the version associated with the data stream with which this object is being deserialized.
`void` | `setFutureData(Binary binFuture)` Store the unknown remainder of the data stream from which this object is being deserialized.

Method Detail

### getImplVersion

    int getImplVersion()

  Determine the serialization version supported by the implementing class.
  Returns:
    the serialization version supported by this object

### getDataVersion

    int getDataVersion()

  Obtain the version associated with the data stream from which this object was deserialized. If the object was constructed (not deserialized), the data version is the same as the implementation version.
  Returns:
    the version of the data used to initialize this object, greater than or equal to zero

### setDataVersion

    void setDataVersion(int nVersion)

  Set the version associated with the data stream with which this object is being deserialized.
  Parameters:
    `nVersion` - the version of the data in the data stream that will be used to deserialize this object; greater than or equal to zero
  Throws:
    `java.lang.IllegalArgumentException` - if the specified version is negative
    `java.lang.IllegalStateException` - if the object is not in a state in which the version can be set, for example outside of deserialization

### getFutureData

    Binary getFutureData()

  Return all the unknown remainder of the data stream from which this object was deserialized. The remainder is unknown because it is data that was originally written by a future version of this object's class.
  Returns:
    future data in binary form

### setFutureData

    void setFutureData(Binary binFuture)

  Store the unknown remainder of the data stream from which this object is being deserialized. The remainder is unknown because it is data that was originally written by a future version of this object's class.
  Parameters:
    `binFuture` - future data in binary form
  Throws:
    `java.lang.IllegalStateException` - if the object is not in a state in which the data can be set, for example outside of deserialization

Skip navigation links

Overview | Package | Class | Tree | Index | Help
| Oracle® Coherence Java API Reference Release 3.6.1.0 E18814-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.