From 59d66447678658c8a2dd2f431ed4830bc17eb7be Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Sat, 19 Feb 2011 11:26:06 +0000 Subject: [337152] [Mongo] Create a MongoDBStore https://bugs.eclipse.org/bugs/show_bug.cgi?id=337152 --- .../emf/cdo/server/internal/mongodb/Commits.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'plugins/org.eclipse.emf.cdo.server.mongodb/src') 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 docs = new ArrayList(); 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); -- cgit v1.2.3