diff options
author | Eike Stepper | 2011-02-19 11:26:06 +0000 |
---|---|---|
committer | Eike Stepper | 2011-02-19 11:26:06 +0000 |
commit | 59d66447678658c8a2dd2f431ed4830bc17eb7be (patch) | |
tree | a9568c369175232cbd236d257c01ea30adb21e79 /plugins/org.eclipse.emf.cdo.server.mongodb/src | |
parent | fbdfbdaa150be99b62848d8149b7d3c42ec84358 (diff) | |
download | cdo-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.java | 21 |
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);
|