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

# Class DelegatingCDORevisionManager

java.lang.Object
org.eclipse.net4j.util.event.Notifier
org.eclipse.net4j.util.lifecycle.Lifecycle
org.eclipse.emf.cdo.spi.common.revision.DelegatingCDORevisionManager

All Implemented Interfaces:
  `CDORevisionCacheAdder`, `CDORevisionInterner`, `CDORevisionManager`, `InternalCDORevisionManager`, `org.eclipse.net4j.util.event.INotifier`, `org.eclipse.net4j.util.event.INotifier.INotifier2`, `org.eclipse.net4j.util.lifecycle.IDeactivateable`, `org.eclipse.net4j.util.lifecycle.ILifecycle`, `org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation`

public abstract class DelegatingCDORevisionManager extends org.eclipse.net4j.util.lifecycle.Lifecycle implements InternalCDORevisionManager
If the meaning of this type isn't clear, there really should be more of a description here...

Since:
  3.0
Author:
  Eike Stepper

## Nested Class Summary

## Nested classes/interfaces inherited from class org.eclipse.net4j.util.event.Notifier

`org.eclipse.net4j.util.event.Notifier.Cancelation`

## Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

`org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation`

## Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier

`org.eclipse.net4j.util.event.INotifier.INotifier2`

## Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager

`InternalCDORevisionManager.RevisionLoader, InternalCDORevisionManager.RevisionLoader2, InternalCDORevisionManager.RevisionLoader3, InternalCDORevisionManager.RevisionLocker`

## Field Summary

### Fields inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle

`USE_LABEL`

## Constructor Summary

Constructors
Constructor
Description
`DelegatingCDORevisionManager()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addRevision(CDORevision revision)`
Deprecated.
`boolean`
`containsRevision(CDOID id, CDOBranchPoint branchPoint)`
Returns `true` if the `revision cache` contains a `revision` with the given `ID` at the given `branch point` (branch + timestamp), `false` otherwise.
`boolean`
`containsRevisionByVersion(CDOID id, CDOBranchVersion branchVersion)`
Returns `true` if the `revision cache` contains a `revision` with the given `ID` at the given `branch version` (branch + version), `false` otherwise.
`protected void`
`doActivate()`
`protected void`
`doDeactivate()`
`InternalCDORevision`
`getBaseRevision(CDORevision revision, int referenceChunk, boolean loadOnDemand)`
`InternalCDORevisionCache`
`getCache()`
`protected abstract InternalCDORevisionManager`
`getDelegate()`
`CDORevisionFactory`
`getFactory()`
`CDOBranchPointRange`
`getObjectLifetime(CDOID id, CDOBranchPoint branchPoint)`
`EClass`
`getObjectType(CDOID id)`
Returns the `type` of an object if a revision for that object is in the revision cache, `null` otherwise.
`EClass`
`getObjectType(CDOID id, CDOBranchManager branchManagerForLoadOnDemand)`
Returns the `type` of an object.
`InternalCDORevision`
`getRevision(CDOID id, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand)`
Returns the `revision` with the given `ID` at the given `branch point` (branch + timestamp), optionally demand loading it if it is not already in the `cache`.
`InternalCDORevision`
`getRevision(CDOID id, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand, SyntheticCDORevision[] synthetics)`
`InternalCDORevision`
`getRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int referenceChunk, boolean loadOnDemand)`
Returns the `revision` with the given `ID` at the given `branch version` (branch + version), optionally demand loading it if it is not already in the `cache`.
`InternalCDORevisionManager.RevisionLoader`
`getRevisionLoader()`
`InternalCDORevisionManager.RevisionLocker`
`getRevisionLocker()`
`List<CDORevision>`
`getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand)`
Returns the `revisions` with the given `IDs` at the given `branch point` (branch + timestamp), optionally demand loading them if they are not already in the `cache`.
`List<CDORevision>`
`getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean prefetchLockStates, boolean loadOnDemand, SyntheticCDORevision[] synthetics)`
`List<CDORevision>`
`getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand, List<CDORevision> additionalRevisions)`
Returns the `revisions` with the given `IDs` at the given `branch point` (branch + timestamp), optionally demand loading them if they are not already in the `cache`.
`List<CDORevision>`
`getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand, SyntheticCDORevision[] synthetics)`
`void`
`handleRevisions(EClass eClass, CDOBranch branch, boolean exactBranch, long timeStamp, boolean exactTime, CDORevisionHandler handler)`
`CDORevision`
`internRevision(CDORevision revision)`
Interns the given revision and returns either the given revision or a revision with the same `key` that was interned previously.
`protected boolean`
`isDelegatingLifecycle()`
`boolean`
`isSupportingAudits()`
`boolean`
`isSupportingBranches()`
`void`
`prefetchRevisions(CDOID id, CDOBranchPoint branchPoint, int prefetchDepth, boolean prefetchLockStates, Consumer<CDORevision> consumer)`
`void`
`reviseLatest(CDOID id, CDOBranch branch)`
Called on client via postCommit when there is no version of detached objects available.
`void`
`reviseVersion(CDOID id, CDOBranchVersion branchVersion, long timeStamp)`
`void`
`setCache(CDORevisionCache cache)`
`void`
`setFactory(CDORevisionFactory factory)`
`void`
`setRevisionLoader(InternalCDORevisionManager.RevisionLoader revisionLoader)`
`void`
`setRevisionLocker(InternalCDORevisionManager.RevisionLocker revisionLocker)`
`void`
`setSupportingAudits(boolean on)`
`void`
`setSupportingBranches(boolean on)`

### Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle

`activate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doAfterActivate, doBeforeActivate, doBeforeDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString`

### Methods inherited from class org.eclipse.net4j.util.event.Notifier

`addListener, addUniqueListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListener`

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

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

### Methods inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

`activate, deactivate, getLifecycleState, isActive`

### Methods inherited from interface org.eclipse.net4j.util.event.INotifier

`addListener, getListeners, hasListeners, removeListener`

## Constructor Details

### DelegatingCDORevisionManager

public DelegatingCDORevisionManager()

## Method Details

### getCache

public InternalCDORevisionCache getCache()

Specified by:
  `getCache` in interface `InternalCDORevisionManager`

### setCache

public void setCache(CDORevisionCache cache)

Specified by:
  `setCache` in interface `InternalCDORevisionManager`
Since:
  4.0

### setFactory

public void setFactory(CDORevisionFactory factory)

Specified by:
  `setFactory` in interface `InternalCDORevisionManager`

### getFactory

public CDORevisionFactory getFactory()

Specified by:
  `getFactory` in interface `InternalCDORevisionManager`

### getRevisionLoader

public InternalCDORevisionManager.RevisionLoader getRevisionLoader()

Specified by:
  `getRevisionLoader` in interface `InternalCDORevisionManager`

### setRevisionLoader

public void setRevisionLoader(InternalCDORevisionManager.RevisionLoader revisionLoader)

Specified by:
  `setRevisionLoader` in interface `InternalCDORevisionManager`

### getRevisionLocker

public InternalCDORevisionManager.RevisionLocker getRevisionLocker()

Specified by:
  `getRevisionLocker` in interface `InternalCDORevisionManager`

### setRevisionLocker

public void setRevisionLocker(InternalCDORevisionManager.RevisionLocker revisionLocker)

Specified by:
  `setRevisionLocker` in interface `InternalCDORevisionManager`

### isSupportingAudits

public boolean isSupportingAudits()

Specified by:
  `isSupportingAudits` in interface `InternalCDORevisionManager`
Since:
  4.0

### setSupportingAudits

public void setSupportingAudits(boolean on)

Specified by:
  `setSupportingAudits` in interface `InternalCDORevisionManager`
Since:
  4.0

### isSupportingBranches

public boolean isSupportingBranches()

Specified by:
  `isSupportingBranches` in interface `InternalCDORevisionManager`

### setSupportingBranches

public void setSupportingBranches(boolean on)

Specified by:
  `setSupportingBranches` in interface `InternalCDORevisionManager`

### addRevision

@Deprecated public void addRevision(CDORevision revision)
Deprecated.
Description copied from interface: `CDORevisionCacheAdder`
Adds the given revision to this cache.

Specified by:
  `addRevision` in interface `CDORevisionCacheAdder`
Specified by:
  `addRevision` in interface `InternalCDORevisionManager`
Since:
  4.0

### internRevision

public CDORevision internRevision(CDORevision revision)
Description copied from interface: `CDORevisionInterner`
Interns the given revision and returns either the given revision or a revision with the same `key` that was interned previously.

The returned revision is only different from the passed revision if this interner contains a previously cached, different revision instance with an equal `revision key`.

Specified by:
  `internRevision` in interface `CDORevisionInterner`

### containsRevision

public boolean containsRevision(CDOID id, CDOBranchPoint branchPoint)
Description copied from interface: `CDORevisionManager`
Returns `true` if the `revision cache` contains a `revision` with the given `ID` at the given `branch point` (branch + timestamp), `false` otherwise.

Specified by:
  `containsRevision` in interface `CDORevisionManager`
See Also:
  - `CDORevisionManager.getRevision(CDOID, CDOBranchPoint, int, int, boolean)`
  - `CDORevisionManager.getRevisions(List, CDOBranchPoint, int, int, boolean)`

### containsRevisionByVersion

public boolean containsRevisionByVersion(CDOID id, CDOBranchVersion branchVersion)
Description copied from interface: `CDORevisionManager`
Returns `true` if the `revision cache` contains a `revision` with the given `ID` at the given `branch version` (branch + version), `false` otherwise.

Specified by:
  `containsRevisionByVersion` in interface `CDORevisionManager`
See Also:
  - `CDORevisionManager.getRevisionByVersion(CDOID, CDOBranchVersion, int, boolean)`

### getObjectType

public EClass getObjectType(CDOID id)
Description copied from interface: `CDORevisionManager`
Returns the `type` of an object if a revision for that object is in the revision cache, `null` otherwise.

Same as calling `getObjectType(id, null)`.

Specified by:
  `getObjectType` in interface `CDORevisionManager`
See Also:
  - `EObject.eClass()`
  - `CDORevisionManager.getObjectType(CDOID, CDOBranchManager)`

### getObjectType

public EClass getObjectType(CDOID id, CDOBranchManager branchManagerForLoadOnDemand)
Description copied from interface: `CDORevisionManager`
Returns the `type` of an object.

If no revision for that object is found in the revision cache the following is tried:

1. If `branchManagerForLoadOnDemand` is not `null` the first revision of the object in the main branch is loaded from the server and its type is returned.
2. Otherwise (i.e., if `branchManagerForLoadOnDemand` is `null` or the object does not exist) `null` is returned.

A `branch manager` is required instead of just a boolean value to specify whether to demand-load or not because this revision manager must be able to access the `main branch` while demand-loading.

Specified by:
  `getObjectType` in interface `CDORevisionManager`
See Also:
  - `EObject.eClass()`
  - `CDORevisionManager.getObjectType(CDOID)`

### getObjectLifetime

public CDOBranchPointRange getObjectLifetime(CDOID id, CDOBranchPoint branchPoint)

Specified by:
  `getObjectLifetime` in interface `CDORevisionManager`

### getBaseRevision

public InternalCDORevision getBaseRevision(CDORevision revision, int referenceChunk, boolean loadOnDemand)

Specified by:
  `getBaseRevision` in interface `InternalCDORevisionManager`

### getRevisionByVersion

public InternalCDORevision getRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int referenceChunk, boolean loadOnDemand)
Description copied from interface: `CDORevisionManager`
Returns the `revision` with the given `ID` at the given `branch version` (branch + version), optionally demand loading it if it is not already in the `cache`.

Prefetching of nested containment levels is not support by this method because the version of a particular revision can not serve as a reasonable baseline criterium for a consistent graph of multiple revisions.

Specified by:
  `getRevisionByVersion` in interface `CDORevisionManager`
Specified by:
  `getRevisionByVersion` in interface `InternalCDORevisionManager`
Parameters:
  `referenceChunk` - The number of target `IDs` to load for each many-valued reference in the returned revision, or `CDORevision.UNCHUNKED` for all such list elements (IDs).
  `loadOnDemand` - If the requested revision is not contained in the revision cache it depends on this parameter's value whether the revision is loaded from the server or `null` is returned.
See Also:
  - `CDORevisionManager.getRevision(CDOID, CDOBranchPoint, int, int, boolean)`

### getRevision

public InternalCDORevision getRevision(CDOID id, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand)
Description copied from interface: `CDORevisionManager`
Returns the `revision` with the given `ID` at the given `branch point` (branch + timestamp), optionally demand loading it if it is not already in the `cache`.

Specified by:
  `getRevision` in interface `CDORevisionManager`
Specified by:
  `getRevision` in interface `InternalCDORevisionManager`
Parameters:
  `referenceChunk` - The number of target `IDs` to load for each many-valued reference in the returned revision, or `CDORevision.UNCHUNKED` for all such list elements (IDs).
  `prefetchDepth` - The number of nested containment levels to load revisions for in one round trip. Use the symbolic constants `CDORevision.DEPTH_INFINITE` to prefetch all contained revisions or `CDORevision.DEPTH_NONE` to not prefetch anything. Only the explicitly requested revision is returned by this method. If additional revisions are prefetched they are placed in the revision cache to speed up subsequent calls to this method.
  `loadOnDemand` - If the requested revision is not contained in the revision cache it depends on this parameter's value whether the revision is loaded from the server or `null` is returned.
See Also:
  - `CDORevisionManager.getRevisions(List, CDOBranchPoint, int, int, boolean)`
  - `CDORevisionManager.getRevisionByVersion(CDOID, CDOBranchVersion, int, boolean)`

### getRevision

public InternalCDORevision getRevision(CDOID id, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand, SyntheticCDORevision[] synthetics)

Specified by:
  `getRevision` in interface `InternalCDORevisionManager`

### getRevisions

public List<CDORevision> getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand)
Description copied from interface: `CDORevisionManager`
Returns the `revisions` with the given `IDs` at the given `branch point` (branch + timestamp), optionally demand loading them if they are not already in the `cache`.

Specified by:
  `getRevisions` in interface `CDORevisionManager`
Parameters:
  `referenceChunk` - The number of target `IDs` to load for each many-valued reference in the returned revisions, or `CDORevision.UNCHUNKED` for all such list elements (IDs).
  `prefetchDepth` - The number of nested containment levels to load revisions for in one round trip. Use the symbolic constants `CDORevision.DEPTH_INFINITE` to prefetch all contained revisions or `CDORevision.DEPTH_NONE` to not prefetch anything. Only the explicitly requested revisions are returned by this method. If additional revisions are prefetched they are placed in the revision cache to speed up subsequent calls to this method.
  `loadOnDemand` - If one or more of the requested revisions is/are not contained in the revision cache it depends on this parameter's value whether the revision(s) is/are loaded from the server or `null` is placed in the list that is returned.
See Also:
  - `CDORevisionManager.getRevision(CDOID, CDOBranchPoint, int, int, boolean)`

### getRevisions

public List<CDORevision> getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand, SyntheticCDORevision[] synthetics)

Specified by:
  `getRevisions` in interface `InternalCDORevisionManager`

### getRevisions

public List<CDORevision> getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean prefetchLockStates, boolean loadOnDemand, SyntheticCDORevision[] synthetics)

Specified by:
  `getRevisions` in interface `InternalCDORevisionManager`

### getRevisions

public List<CDORevision> getRevisions(List<CDOID> ids, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth, boolean loadOnDemand, List<CDORevision> additionalRevisions)
Description copied from interface: `CDORevisionManager`
Returns the `revisions` with the given `IDs` at the given `branch point` (branch + timestamp), optionally demand loading them if they are not already in the `cache`.

Specified by:
  `getRevisions` in interface `CDORevisionManager`
Parameters:
  `referenceChunk` - The number of target `IDs` to load for each many-valued reference in the returned revisions, or `CDORevision.UNCHUNKED` for all such list elements (IDs).
  `prefetchDepth` - The number of nested containment levels to load revisions for in one round trip. Use the symbolic constants `CDORevision.DEPTH_INFINITE` to prefetch all contained revisions or `CDORevision.DEPTH_NONE` to not prefetch anything. Only the explicitly requested revisions are returned by this method. If additional revisions are prefetched they are placed in the revision cache to speed up subsequent calls to this method.
  `loadOnDemand` - If one or more of the requested revisions is/are not contained in the revision cache it depends on this parameter's value whether the revision(s) is/are loaded from the server or `null` is placed in the list that is returned.
  `additionalRevisions` - If non-`null`, a list to add additionally prefetched revisions to.
Since:
  4.15
See Also:
  - `CDORevisionManager.getRevision(CDOID, CDOBranchPoint, int, int, boolean)`

### prefetchRevisions

public void prefetchRevisions(CDOID id, CDOBranchPoint branchPoint, int prefetchDepth, boolean prefetchLockStates, Consumer<CDORevision> consumer)

Specified by:
  `prefetchRevisions` in interface `InternalCDORevisionManager`

### handleRevisions

public void handleRevisions(EClass eClass, CDOBranch branch, boolean exactBranch, long timeStamp, boolean exactTime, CDORevisionHandler handler)

Specified by:
  `handleRevisions` in interface `CDORevisionManager`

### reviseLatest

public void reviseLatest(CDOID id, CDOBranch branch)
Description copied from interface: `InternalCDORevisionManager`
Called on client via postCommit when there is no version of detached objects available.

Specified by:
  `reviseLatest` in interface `InternalCDORevisionManager`

### reviseVersion

public void reviseVersion(CDOID id, CDOBranchVersion branchVersion, long timeStamp)

Specified by:
  `reviseVersion` in interface `InternalCDORevisionManager`

### doActivate

protected void doActivate() throws Exception

Overrides:
  `doActivate` in class `org.eclipse.net4j.util.lifecycle.Lifecycle`
Throws:
  `Exception`

### doDeactivate

protected void doDeactivate() throws Exception

Overrides:
  `doDeactivate` in class `org.eclipse.net4j.util.lifecycle.Lifecycle`
Throws:
  `Exception`

### isDelegatingLifecycle

protected boolean isDelegatingLifecycle()

### getDelegate

protected abstract InternalCDORevisionManager getDelegate()