Package org.eclipse.emf.cdo.spi.common.revision

## Class SyntheticCDORevision

- java.lang.Object
- - org.eclipse.emf.cdo.spi.common.revision.AbstractCDORevision
  - - org.eclipse.emf.cdo.spi.common.revision.StubCDORevision
    - - org.eclipse.emf.cdo.spi.common.revision.SyntheticCDORevision

- All Implemented Interfaces:
    `CDOBranchPoint`, `CDOBranchProvider`, `CDOBranchVersion`, `CDOIdentifiable`, `CDOIDAndVersion`, `CDORevisable`, `CDORevision`, `CDORevisionData`, `CDORevisionKey`, `CDOTimeProvider`, `CDOVersionProvider`, `CDOBranchAdjustable`, `CDOReferenceAdjustable`, `InternalCDORevision`
  Direct Known Subclasses:
    `DetachedCDORevision`, `PointerCDORevision`

      public abstract class SyntheticCDORevision
      extends StubCDORevision

  A synthetic revision that represents the initial period of an object in a `branch` when the object is still associated with a revision from one of the baseline branches. It always has `version` `zero` and can only appear in branches below the `main` branch.

  Synthetic revisions are used for two slightly different purposes:

  1. For `cache` optimization.
  2. As a persistent "detach marker" indicating that the first modification of an object in a branch is its deletion.

  Instances of this marker revision are not supposed to be exposed outside of a revision `manager`. They are mainly used in the communication between a revision manager and its associated revision `loader`.

  Since:
    3.0
  Author:
    Eike Stepper

- - ### Field Summary

    - ### Fields inherited from interface org.eclipse.emf.cdo.common.branch.CDOBranchPoint

      `INVALID_DATE, UNSPECIFIED_DATE`

    - ### Fields inherited from interface org.eclipse.emf.cdo.common.branch.CDOBranchVersion

      `UNSPECIFIED_VERSION`

    - ### Fields inherited from interface org.eclipse.emf.cdo.common.revision.CDORevision

      `DEPTH_INFINITE, DEPTH_NONE, FIRST_VERSION, MAIN_BRANCH_ID, PERMISSION_PROVIDER, UNCHUNKED`

    - ### Fields inherited from interface org.eclipse.emf.cdo.common.revision.CDORevisionData

      `NIL`

    - ### Fields inherited from interface org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision

      `DO_NOT_CREATE_LIST`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SyntheticCDORevision​(EClass eClass, CDOID id, CDOBranch branch)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `freeze()` |
    `InternalCDOBranch` | `getBranch()` | Returns the branch of this branch version.
    `CDOID` | `getID()` |

    - ### Methods inherited from class org.eclipse.emf.cdo.spi.common.revision.StubCDORevision

      `add, adjustBranches, adjustReferences, bypassPermissionChecks, clear, clearValues, compare, compareTo, contains, convertEObjects, copy, get, getContainerID, getContainingFeatureID, getListOrNull, getOrCreateList, getOrCreateList, getPermission, getResourceID, getResourceNodeName, getRevised, getTimeStamp, getValue, getVersion, hashCode, indexOf, isEmpty, isFrozen, isListPreserving, isUnchunked, lastIndexOf, merge, move, read, readValues, remove, set, setBranchPoint, setContainerID, setContainingFeatureID, setID, setList, setListPreserving, setPermission, setResourceID, setRevised, setUnchunked, setValue, setVersion, size, toArray, toArray, unset, write, write, writeValues`

    - ### Methods inherited from class org.eclipse.emf.cdo.spi.common.revision.AbstractCDORevision

      `accept, accept, accept, adjustForCommit, data, equals, getAllPersistentFeatures, getClassInfo, getEClass, getFeatureIndex, getList, getList, getProperRevision, getRevisionForID, hashCode, initClassInfo, isHistorical, isReadable, isResource, isResourceFolder, isResourceNode, isValid, isValid, isWritable, revision, toString`

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

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

- - ### Constructor Detail

    - #### SyntheticCDORevision

          public SyntheticCDORevision​(EClass eClass,
                                      CDOID id,
                                      CDOBranch branch)

  - ### Method Detail

    - #### getID

          public CDOID getID()

      Specified by:
        `getID` in interface `CDOIdentifiable`
      Overrides:
        `getID` in class `StubCDORevision`

    - #### getBranch

          public InternalCDOBranch getBranch()

      Description copied from interface: `CDOBranchVersion`
      Returns the branch of this branch version.
      Specified by:
        `getBranch` in interface `CDOBranchPoint`
      Specified by:
        `getBranch` in interface `CDOBranchProvider`
      Specified by:
        `getBranch` in interface `CDOBranchVersion`
      Specified by:
        `getBranch` in interface `InternalCDORevision`
      Overrides:
        `getBranch` in class `StubCDORevision`

    - #### freeze

          public void freeze()

      Specified by:
        `freeze` in interface `InternalCDORevision`
      Overrides:
        `freeze` in class `StubCDORevision`