org.eclipse.emf.cdo.server
Interface IStoreAccessor

All Superinterfaces:
InternalCDOBranchManager.BranchLoader, InternalCDOCommitInfoManager.CommitInfoLoader, IQueryHandlerProvider
All Known Subinterfaces:
IDBStoreAccessor, IHibernateStoreAccessor, IMongoDBStoreAccessor, IObjectivityStoreAccessor, IStoreAccessor.Raw
All Known Implementing Classes:
LongIDStoreAccessor, StoreAccessor, StoreAccessorBase

public interface IStoreAccessor
extends IQueryHandlerProvider, InternalCDOBranchManager.BranchLoader, InternalCDOCommitInfoManager.CommitInfoLoader

Represents a connection to a physical data storage back-end.


Nested Class Summary
static interface IStoreAccessor.CommitContext
          Represents the state of a single, logical commit operation which is driven through multiple calls to several methods on the IStoreAccessor API.
static interface IStoreAccessor.DurableLocking
          An extension interface for store accessors that support durable locking.
static interface IStoreAccessor.DurableLocking2
          An extension interface for store accessors that support durable locking.
static interface IStoreAccessor.QueryResourcesContext
          Represents the query execution state of a resources query.
static interface IStoreAccessor.QueryXRefsContext
          Represents the query execution state of a XRefs query.
static interface IStoreAccessor.Raw
          An extension interface for store accessors that support raw data access as needed by repository synchronizers or server importers.
 
Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader
InternalCDOBranchManager.BranchLoader.BranchInfo, InternalCDOBranchManager.BranchLoader.SubBranchInfo
 
Field Summary
 
Fields inherited from interface org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader
NEW_BRANCH, NEW_LOCAL_BRANCH
 
Method Summary
 void commit(OMMonitor monitor)
          Flushes to the back-end and makes available the data for others.
 IStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature)
           
 InternalSession getSession()
          Returns the session this accessor is associated with.
 IStore getStore()
          Returns the store this accessor is associated with.
 ITransaction getTransaction()
          Returns the transaction this accessor is associated with if isReader() returns false, null otherwise.
 void handleLobs(long fromTime, long toTime, CDOLobHandler handler)
           
 void handleRevisions(EClass eClass, CDOBranch branch, long timeStamp, boolean exactTime, CDORevisionHandler handler)
          Passes all revisions of the store to the handler if all of the following conditions are met: The eClass parameter is null or equal to revision.getEClass().
 boolean isReader()
          Returns true if this accessor has been configured for read-only access to the back-end, false otherwise.
 void loadLob(byte[] id, OutputStream out)
          Serializes the content of the large object identified by the given ID to the given stream.
 EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
          Demand loads a given package proxy that has been created on startup of the repository.
 void queryLobs(List<byte[]> ids)
          Determines which of the large objects identified by the given IDs are known in the backend represented by this IStoreAccessor by removing the unknown IDs from the passed collection.
 void queryResources(IStoreAccessor.QueryResourcesContext context)
           
 void queryXRefs(IStoreAccessor.QueryXRefsContext context)
           
 Set<CDOID> readChangeSet(OMMonitor monitor, CDOChangeSetSegment... segments)
          Returns a set of CDOIDs that have at least one revision in any of the passed branches and time ranges.
 Collection<InternalCDOPackageUnit> readPackageUnits()
           
 CDOID readResourceID(CDOID folderID, String name, CDOBranchPoint branchPoint)
          Returns the CDOID of the resource node with the given folderID and name if a resource with this folderID and name exists in the store, null otherwise.
 InternalCDORevision readRevision(CDOID id, CDOBranchPoint branchPoint, int listChunk, CDORevisionCacheAdder cache)
          Reads a revision from the back-end that was valid at the given timeStamp in the given branch.
 InternalCDORevision readRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int listChunk, CDORevisionCacheAdder cache)
          Reads a revision with the given version in the given branch from the back-end.
 void release()
           
 void rollback()
          Note: write(InternalCommitContext, OMMonitor) and rollback() could be called from different threads.
 void write(InternalCommitContext context, OMMonitor monitor)
          Called before committing.
 void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
           
 
Methods inherited from interface org.eclipse.emf.cdo.server.IQueryHandlerProvider
getQueryHandler
 
Methods inherited from interface org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader
createBranch, loadBranch, loadBranches, loadSubBranches
 
Methods inherited from interface org.eclipse.emf.cdo.spi.common.commit.InternalCDOCommitInfoManager.CommitInfoLoader
loadCommitData, loadCommitInfos
 

Method Detail

getStore

IStore getStore()
Returns the store this accessor is associated with.


getSession

InternalSession getSession()
Returns the session this accessor is associated with.

Since:
3.0

getTransaction

ITransaction getTransaction()
Returns the transaction this accessor is associated with if isReader() returns false, null otherwise.

Since:
2.0

isReader

boolean isReader()
Returns true if this accessor has been configured for read-only access to the back-end, false otherwise.

Since:
2.0

createChunkReader

IStoreChunkReader createChunkReader(InternalCDORevision revision,
                                    EStructuralFeature feature)
Since:
2.0

readPackageUnits

Collection<InternalCDOPackageUnit> readPackageUnits()
Since:
2.0

loadPackageUnit

EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
Demand loads a given package proxy that has been created on startup of the repository.

This method must only load the given package, not possible contained packages.

Since:
2.0

readRevision

InternalCDORevision readRevision(CDOID id,
                                 CDOBranchPoint branchPoint,
                                 int listChunk,
                                 CDORevisionCacheAdder cache)
Reads a revision from the back-end that was valid at the given timeStamp in the given branch.

Since:
4.0

readRevisionByVersion

InternalCDORevision readRevisionByVersion(CDOID id,
                                          CDOBranchVersion branchVersion,
                                          int listChunk,
                                          CDORevisionCacheAdder cache)
Reads a revision with the given version in the given branch from the back-end.

Since:
4.0

handleRevisions

void handleRevisions(EClass eClass,
                     CDOBranch branch,
                     long timeStamp,
                     boolean exactTime,
                     CDORevisionHandler handler)
Passes all revisions of the store to the handler if all of the following conditions are met:

Since:
4.0

readChangeSet

Set<CDOID> readChangeSet(OMMonitor monitor,
                         CDOChangeSetSegment... segments)
Returns a set of CDOIDs that have at least one revision in any of the passed branches and time ranges. DetachedCDORevisions must also be considered!

Since:
4.0

readResourceID

CDOID readResourceID(CDOID folderID,
                     String name,
                     CDOBranchPoint branchPoint)
Returns the CDOID of the resource node with the given folderID and name if a resource with this folderID and name exists in the store, null otherwise.

Since:
3.0

queryResources

void queryResources(IStoreAccessor.QueryResourcesContext context)
Since:
2.0

queryXRefs

void queryXRefs(IStoreAccessor.QueryXRefsContext context)
Since:
3.0

queryLobs

void queryLobs(List<byte[]> ids)
Determines which of the large objects identified by the given IDs are known in the backend represented by this IStoreAccessor by removing the unknown IDs from the passed collection.

The identifier of a large object is the SHA-1 digest of the content of this large object.

Usage context: This method is only called in the context of a commit operation of a client transaction if that transaction contains additions of or changes to large objects.

Parameters:
ids - the collection of large object IDs that the unknown IDs are supposed to be removed from.
Since:
4.0

loadLob

void loadLob(byte[] id,
             OutputStream out)
             throws IOException
Serializes the content of the large object identified by the given ID to the given stream.

The identifier of a large object is the SHA-1 digest of the content of this large object.

Parameters:
id - the ID of the large object whose content is to be written to the stream.
Throws:
IOException - if the stream could not be written to.
Since:
4.0

handleLobs

void handleLobs(long fromTime,
                long toTime,
                CDOLobHandler handler)
                throws IOException
Throws:
IOException
Since:
4.0

writePackageUnits

void writePackageUnits(InternalCDOPackageUnit[] packageUnits,
                       OMMonitor monitor)
Since:
2.0

write

void write(InternalCommitContext context,
           OMMonitor monitor)
Called before committing. An instance of this accessor represents an instance of a back-end transaction. Could be called multiple times before commit it called. commit(OMMonitor) or rollback() will be called after any numbers of write(InternalCommitContext, OMMonitor).

Note: write(InternalCommitContext, OMMonitor) and commit(OMMonitor) could be called from different threads.

Since:
3.0

commit

void commit(OMMonitor monitor)
Flushes to the back-end and makes available the data for others.

Note: write(InternalCommitContext, OMMonitor) and commit(OMMonitor) could be called from different threads.

Note: Implementors should detect if dirty write occurred. In this case it should throw an exception.

 if (revision.getVersion() != revisionDelta.getOriginVersion())
 {
   throw new ConcurrentModificationException("Trying to update object " + revisionDelta.getID()
       + " that was already modified");
 }
 

Since:
2.0

rollback

void rollback()
Note: write(InternalCommitContext, OMMonitor) and rollback() could be called from different threads.

Since:
2.0

release

void release()


Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.