diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java index e8e790e4bf..94c511380e 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/RevisionManager.java @@ -15,14 +15,14 @@ package org.eclipse.emf.cdo.internal.server; import org.eclipse.emf.cdo.internal.protocol.model.CDOClassImpl; import org.eclipse.emf.cdo.internal.protocol.model.CDOFeatureImpl; import org.eclipse.emf.cdo.internal.protocol.model.resource.CDOPathFeatureImpl; -import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl; import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionResolverImpl; -import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl.MoveableList; +import org.eclipse.emf.cdo.internal.protocol.revision.InternalCDORevision; import org.eclipse.emf.cdo.internal.protocol.revision.delta.CDORevisionDeltaImpl; import org.eclipse.emf.cdo.protocol.CDOID; import org.eclipse.emf.cdo.protocol.model.CDOFeature; import org.eclipse.emf.cdo.protocol.revision.CDOReferenceProxy; import org.eclipse.emf.cdo.protocol.revision.CDORevision; +import org.eclipse.emf.cdo.protocol.revision.CDORevisionUtil; import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.IRevisionManager; import org.eclipse.emf.cdo.server.IStoreChunkReader; @@ -30,6 +30,7 @@ import org.eclipse.emf.cdo.server.IStoreReader; import org.eclipse.emf.cdo.server.IStoreWriter; import org.eclipse.emf.cdo.server.IStoreChunkReader.Chunk; +import org.eclipse.net4j.util.collection.MoveableList; import org.eclipse.net4j.util.transaction.ITransaction; import org.eclipse.net4j.util.transaction.ITransactionalOperation; @@ -57,7 +58,7 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio return repository; } - public void addRevision(ITransaction<IStoreWriter> storeTransaction, CDORevisionImpl revision) + public void addRevision(ITransaction<IStoreWriter> storeTransaction, InternalCDORevision revision) { storeTransaction.execute(new AddRevisionOperation(revision)); } @@ -79,51 +80,51 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio } @Override - protected CDORevisionImpl verifyRevision(CDORevisionImpl revision, int referenceChunk) + protected InternalCDORevision verifyRevision(InternalCDORevision revision, int referenceChunk) { IStoreReader storeReader = null; revision = super.verifyRevision(revision, referenceChunk); if (repository.isVerifyingRevisions()) { storeReader = StoreUtil.getReader(); - revision = storeReader.verifyRevision(revision); + revision = (InternalCDORevision)storeReader.verifyRevision(revision); } ensureChunks(revision, referenceChunk, storeReader); return revision; } - protected void ensureChunks(CDORevisionImpl revision, int referenceChunk, IStoreReader storeReader) + protected void ensureChunks(InternalCDORevision revision, int referenceChunk, IStoreReader storeReader) { - CDOClassImpl cdoClass = revision.getCDOClass(); + CDOClassImpl cdoClass = (CDOClassImpl)revision.getCDOClass(); CDOFeatureImpl[] features = cdoClass.getAllFeatures(); for (int i = 0; i < features.length; i++) { CDOFeatureImpl feature = features[i]; if (feature.isReference() && feature.isMany()) { - MoveableList list = revision.getList(feature); + MoveableList<Object> list = revision.getList(feature); int chunkEnd = Math.min(referenceChunk, list.size()); storeReader = ensureChunk(revision, feature, storeReader, list, 0, chunkEnd); } } } - public IStoreReader ensureChunk(CDORevisionImpl revision, CDOFeature feature, int chunkStart, int chunkEnd) + public IStoreReader ensureChunk(InternalCDORevision revision, CDOFeature feature, int chunkStart, int chunkEnd) { - MoveableList list = revision.getList(feature); + MoveableList<Object> list = revision.getList(feature); chunkEnd = Math.min(chunkEnd, list.size()); return ensureChunk(revision, feature, StoreUtil.getReader(), list, chunkStart, chunkEnd); } - protected IStoreReader ensureChunk(CDORevisionImpl revision, CDOFeature feature, IStoreReader storeReader, - MoveableList list, int chunkStart, int chunkEnd) + protected IStoreReader ensureChunk(InternalCDORevision revision, CDOFeature feature, IStoreReader storeReader, + MoveableList<Object> list, int chunkStart, int chunkEnd) { IStoreChunkReader chunkReader = null; int fromIndex = -1; for (int j = chunkStart; j < chunkEnd; j++) { - if (list.get(j) == CDORevisionImpl.UNINITIALIZED) + if (list.get(j) == InternalCDORevision.UNINITIALIZED) { if (fromIndex == -1) { @@ -201,34 +202,34 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio } @Override - protected CDORevisionImpl loadRevision(CDOID id, int referenceChunk) + protected InternalCDORevision loadRevision(CDOID id, int referenceChunk) { IStoreReader storeReader = StoreUtil.getReader(); - return (CDORevisionImpl)storeReader.readRevision(id, referenceChunk); + return (InternalCDORevision)storeReader.readRevision(id, referenceChunk); } @Override - protected CDORevisionImpl loadRevisionByTime(CDOID id, int referenceChunk, long timeStamp) + protected InternalCDORevision loadRevisionByTime(CDOID id, int referenceChunk, long timeStamp) { IStoreReader storeReader = StoreUtil.getReader(); - return (CDORevisionImpl)storeReader.readRevisionByTime(id, referenceChunk, timeStamp); + return (InternalCDORevision)storeReader.readRevisionByTime(id, referenceChunk, timeStamp); } @Override - protected CDORevisionImpl loadRevisionByVersion(CDOID id, int referenceChunk, int version) + protected InternalCDORevision loadRevisionByVersion(CDOID id, int referenceChunk, int version) { IStoreReader storeReader = StoreUtil.getReader(); - return (CDORevisionImpl)storeReader.readRevisionByVersion(id, referenceChunk, version); + return (InternalCDORevision)storeReader.readRevisionByVersion(id, referenceChunk, version); } @Override - protected List<CDORevisionImpl> loadRevisions(Collection<CDOID> ids, int referenceChunk) + protected List<InternalCDORevision> loadRevisions(Collection<CDOID> ids, int referenceChunk) { IStoreReader storeReader = StoreUtil.getReader(); - List<CDORevisionImpl> revisions = new ArrayList<CDORevisionImpl>(); + List<InternalCDORevision> revisions = new ArrayList<InternalCDORevision>(); for (CDOID id : ids) { - CDORevisionImpl revision = (CDORevisionImpl)storeReader.readRevision(id, referenceChunk); + InternalCDORevision revision = (InternalCDORevision)storeReader.readRevision(id, referenceChunk); revisions.add(revision); } @@ -236,13 +237,13 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio } @Override - protected List<CDORevisionImpl> loadRevisionsByTime(Collection<CDOID> ids, int referenceChunk, long timeStamp) + protected List<InternalCDORevision> loadRevisionsByTime(Collection<CDOID> ids, int referenceChunk, long timeStamp) { IStoreReader storeReader = StoreUtil.getReader(); - List<CDORevisionImpl> revisions = new ArrayList<CDORevisionImpl>(); + List<InternalCDORevision> revisions = new ArrayList<InternalCDORevision>(); for (CDOID id : ids) { - CDORevisionImpl revision = (CDORevisionImpl)storeReader.readRevisionByTime(id, referenceChunk, timeStamp); + InternalCDORevision revision = (InternalCDORevision)storeReader.readRevisionByTime(id, referenceChunk, timeStamp); revisions.add(revision); } @@ -268,9 +269,9 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio */ private final class AddRevisionOperation implements ITransactionalOperation<IStoreWriter> { - private CDORevisionImpl revision; + private InternalCDORevision revision; - private AddRevisionOperation(CDORevisionImpl revision) + private AddRevisionOperation(InternalCDORevision revision) { this.revision = revision; } @@ -303,7 +304,7 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio { private CDORevisionDeltaImpl revisionDelta; - private CDORevisionImpl dirtyRevision = null; + private InternalCDORevision dirtyRevision = null; private AddRevisionDeltaOperation(CDORevisionDeltaImpl revisionDelta) { @@ -319,14 +320,14 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio } else { - CDORevisionImpl oldRevision = getRevisionByVersion(revisionDelta.getID(), CDORevision.UNCHUNKED, revisionDelta - .getOriginVersion(), true); + InternalCDORevision oldRevision = getRevisionByVersion(revisionDelta.getID(), CDORevision.UNCHUNKED, + revisionDelta.getOriginVersion(), true); if (oldRevision == null) { throw new IllegalStateException("Can not retrieve origin revision"); } - dirtyRevision = new CDORevisionImpl(oldRevision); + dirtyRevision = (InternalCDORevision)CDORevisionUtil.copy(oldRevision); revisionDelta.apply(dirtyRevision); // Can throw an exception if duplicate |