Interface CDORevisionManager

  • All Superinterfaces:
    org.eclipse.net4j.util.event.INotifier
    All Known Subinterfaces:
    InternalCDORevisionManager
    All Known Implementing Classes:
    DelegatingCDORevisionManager

    public interface CDORevisionManager
    extends org.eclipse.net4j.util.event.INotifier
    Provides access to revisions in a CDO repository by demand loading and caching them.

    Revisions are generally queried by:

    • their object ID and
    • their branch plus either:
      • a timestamp or
      • a version

    If querying by timestamp it's also possible to ask for multiple revisions (identified by a list of object IDs) in one round trip (to the server if this revision manager is contained by a session or to the backend store if it is contained by a repository.

    Since:
    3.0
    Author:
    Eike Stepper
    No Implement
    This interface is not intended to be implemented by clients.
    No Extend
    This interface is not intended to be extended by clients.
    • Method Detail

      • getObjectType

        org.eclipse.emf.ecore.EClass getObjectType​(CDOID id,
                                                   CDOBranchManager branchManagerForLoadOnDemand)
        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.

        Since:
        4.1
        See Also:
        EObject.eClass(), getObjectType(CDOID)
      • getRevision

        CDORevision 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.
        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:
        getRevisions(List, CDOBranchPoint, int, int, boolean), getRevisionByVersion(CDOID, CDOBranchVersion, int, boolean)
      • getRevisions

        java.util.List<CDORevision> getRevisions​(java.util.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.
        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:
        getRevision(CDOID, CDOBranchPoint, int, int, boolean)
      • getRevisions

        java.util.List<CDORevision> getRevisions​(java.util.List<CDOID> ids,
                                                 CDOBranchPoint branchPoint,
                                                 int referenceChunk,
                                                 int prefetchDepth,
                                                 boolean loadOnDemand,
                                                 java.util.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.
        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:
        getRevision(CDOID, CDOBranchPoint, int, int, boolean)
      • getRevisionByVersion

        CDORevision 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.

        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.

        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:
        getRevision(CDOID, CDOBranchPoint, int, int, boolean)
      • handleRevisions

        void handleRevisions​(org.eclipse.emf.ecore.EClass eClass,
                             CDOBranch branch,
                             boolean exactBranch,
                             long timeStamp,
                             boolean exactTime,
                             CDORevisionHandler handler)
        Since:
        4.3