Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java76
1 files changed, 39 insertions, 37 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
index c058e5ef8e..52c6ebc90e 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
@@ -14,6 +14,7 @@
*/
package org.eclipse.emf.cdo.server.internal.db;
+import org.eclipse.emf.cdo.common.CDOCommonRepository.IDGenerationLocation;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
@@ -197,7 +198,7 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
return (EClass)type.resolve(packageRegistry);
}
- throw new IllegalStateException("No type found for " + id);
+ return null;
}
public InternalCDORevision readRevision(CDOID id, CDOBranchPoint branchPoint, int listChunk,
@@ -211,20 +212,23 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
EClass eClass = getObjectType(id);
- InternalCDORevision revision = getStore().createRevision(eClass, id);
- revision.setBranchPoint(branchPoint);
-
- IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
- if (mapping.readRevision(this, revision, listChunk))
+ if (eClass != null)
{
- int version = revision.getVersion();
- if (version < CDOBranchVersion.FIRST_VERSION - 1)
+ InternalCDORevision revision = getStore().createRevision(eClass, id);
+ revision.setBranchPoint(branchPoint);
+
+ IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
+ if (mapping.readRevision(this, revision, listChunk))
{
- return new DetachedCDORevision(eClass, id, revision.getBranch(), -version, revision.getTimeStamp(),
- revision.getRevised());
- }
+ int version = revision.getVersion();
+ if (version < CDOBranchVersion.FIRST_VERSION - 1)
+ {
+ return new DetachedCDORevision(eClass, id, revision.getBranch(), -version, revision.getTimeStamp(),
+ revision.getRevised());
+ }
- return revision;
+ return revision;
+ }
}
// Reading failed - revision does not exist.
@@ -468,6 +472,10 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
{
super.applyIDMappings(context, monitor);
+ // Remember maxID because it may have to be adjusted if the repository is BACKUP or CLONE. See bug 325097.
+ boolean adjustMaxID = !context.getBranchPoint().getBranch().isLocal()
+ && getStore().getRepository().getIDGenerationLocation() == IDGenerationLocation.STORE;
+
IIDHandler idHandler = getStore().getIDHandler();
// Remember CDOIDs of new objects. They are cleared after writeRevisions()
@@ -476,13 +484,9 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
CDOID id = revision.getID();
newObjects.add(id);
- // Remember maxID because it may have to be adjusted if the repository is BACKUP or CLONE. See bug 325097.
- if (!context.getBranchPoint().getBranch().isLocal())
+ if (adjustMaxID && idHandler.compare(id, maxID) > 0)
{
- if (idHandler.compare(id, maxID) > 0)
- {
- maxID = id;
- }
+ maxID = id;
}
}
}
@@ -697,14 +701,12 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
async = monitor.forkAsync();
getConnection().commit();
- IIDHandler idHandler = getStore().getIDHandler();
- if (idHandler.compare(maxID, idHandler.getLastObjectID()) > 0)
+ if (maxID != CDOID.NULL)
{
// See bug 325097
- idHandler.setLastObjectID(maxID);
+ getStore().getIDHandler().adjustLastObjectID(maxID);
+ maxID = CDOID.NULL;
}
-
- maxID = CDOID.NULL;
}
finally
{
@@ -1226,12 +1228,7 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
}
writeRevision(revision, isFirstRevision, false, monitor);
-
- IIDHandler idHandler = getStore().getIDHandler();
- if (idHandler.compare(id, idHandler.getLastObjectID()) > 0)
- {
- idHandler.setLastObjectID(id);
- }
+ getStore().getIDHandler().adjustLastObjectID(id);
}
public void rawStore(byte[] id, long size, InputStream inputStream) throws IOException
@@ -1250,20 +1247,24 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
writeCommitInfo(branch, timeStamp, previousTimeStamp, userID, comment, monitor);
}
+ @Deprecated
public void rawDelete(CDOID id, int version, CDOBranch branch, EClass eClass, OMMonitor monitor)
{
- IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
- if (eClass == null)
- {
- eClass = getObjectType(id);
- }
-
- IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
- mapping.detachObject(this, id, version, branch, CDOBranchPoint.UNSPECIFIED_DATE, monitor.fork());
+ throw new UnsupportedOperationException();
+
+ // IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
+ // if (eClass == null)
+ // {
+ // eClass = getObjectType(id);
+ // }
+ //
+ // IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
+ // mapping.detachObject(this, id, version, branch, CDOBranchPoint.UNSPECIFIED_DATE, monitor);
}
public void rawCommit(double commitWork, OMMonitor monitor)
{
+ monitor.begin();
Async async = monitor.forkAsync();
try
@@ -1277,6 +1278,7 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor,
finally
{
async.stop();
+ monitor.done();
}
}

Back to the top