Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2011-02-19 11:26:06 +0000
committerEike Stepper2011-02-19 11:26:06 +0000
commit59d66447678658c8a2dd2f431ed4830bc17eb7be (patch)
treea9568c369175232cbd236d257c01ea30adb21e79 /plugins/org.eclipse.emf.cdo.server.mongodb/src
parentfbdfbdaa150be99b62848d8149b7d3c42ec84358 (diff)
downloadcdo-59d66447678658c8a2dd2f431ed4830bc17eb7be.tar.gz
cdo-59d66447678658c8a2dd2f431ed4830bc17eb7be.tar.xz
cdo-59d66447678658c8a2dd2f431ed4830bc17eb7be.zip
[337152] [Mongo] Create a MongoDBStore
https://bugs.eclipse.org/bugs/show_bug.cgi?id=337152
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.mongodb/src')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.mongodb/src/org/eclipse/emf/cdo/server/internal/mongodb/Commits.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.mongodb/src/org/eclipse/emf/cdo/server/internal/mongodb/Commits.java b/plugins/org.eclipse.emf.cdo.server.mongodb/src/org/eclipse/emf/cdo/server/internal/mongodb/Commits.java
index a48f857ead..0032082e39 100644
--- a/plugins/org.eclipse.emf.cdo.server.mongodb/src/org/eclipse/emf/cdo/server/internal/mongodb/Commits.java
+++ b/plugins/org.eclipse.emf.cdo.server.mongodb/src/org/eclipse/emf/cdo/server/internal/mongodb/Commits.java
@@ -26,6 +26,7 @@ import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.server.InternalCommitContext;
@@ -259,6 +260,13 @@ public class Commits extends Coll
List<DBObject> docs = new ArrayList<DBObject>();
marshalRevisions(docs, context.getNewObjects());
marshalRevisions(docs, context.getDirtyObjects());
+
+ for (CDOID id : context.getDetachedObjects())
+ {
+ BasicDBObject detached = new BasicDBObject();
+ // detached.put();
+ }
+
if (!docs.isEmpty())
{
doc.put(REVISIONS, docs);
@@ -303,7 +311,7 @@ public class Commits extends Coll
int featureID = revision.getContainingFeatureID();
doc.put(REVISIONS_FEATURE, featureID);
- CDOClassInfo classInfo = CDOModelUtil.getClassInfo(eClass); // TODO Cache id-->classInfo
+ CDOClassInfo classInfo = revision.getClassInfo();
for (EStructuralFeature feature : classInfo.getAllPersistentFeatures())
{
Object value = revision.getValue(feature);
@@ -496,17 +504,22 @@ public class Commits extends Coll
long revisionTime = (Long)doc.get(COMMITS_ID);
+ InternalCDOBranchManager branchManager = store.getRepository().getBranchManager();
+ CDOBranchPoint revisionBranchPoint = branchManager.getBranch(revisionBranch).getPoint(revisionTime);
+
int classID = (Integer)revision.get(REVISIONS_CLASS);
EClass eClass = store.getClasses().getClass(classID);
int version = (Integer)revision.get(REVISIONS_VERSION);
+ if (version < 0)
+ {
+ return new DetachedCDORevision(eClass, id, revisionBranchPoint.getBranch(), version, revisionTime);
+ }
+
CDOID resourceID = idHandler.read(revision, REVISIONS_RESOURCE);
CDOID containerID = idHandler.read(revision, REVISIONS_CONTAINER);
int featureID = (Integer)revision.get(REVISIONS_FEATURE);
- InternalCDOBranchManager branchManager = store.getRepository().getBranchManager();
- CDOBranchPoint revisionBranchPoint = branchManager.getBranch(revisionBranch).getPoint(revisionTime);
-
InternalCDORevision result = store.createRevision(eClass, id);
result.setBranchPoint(revisionBranchPoint);
result.setVersion(version);

Back to the top