From d5425b6b911709f42f4c1b630400032d1385ae4c Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Fri, 3 Aug 2007 15:40:40 +0000 Subject: *** empty log message *** --- .../src/org/eclipse/emf/cdo/internal/server/Repository.java | 13 +++++++++---- .../eclipse/emf/cdo/internal/server/RevisionManager.java | 9 +++++++-- .../src/org/eclipse/emf/cdo/internal/server/Session.java | 2 +- .../org/eclipse/emf/cdo/internal/server/store/Store.java | 3 ++- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java index 912c7f4c20..98bbc2f5d4 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java @@ -21,9 +21,9 @@ import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.net4j.internal.util.lifecycle.Lifecycle; import org.eclipse.net4j.util.ImplementationError; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; /** * @author Eike Stepper @@ -52,7 +52,7 @@ public class Repository extends Lifecycle implements IRepository private long nextMetaIDValue = INITIAL_META_ID_VALUE; - private Map types = new HashMap(); + private ConcurrentMap types = new ConcurrentHashMap(); public Repository(String name, Store store) { @@ -119,7 +119,7 @@ public class Repository extends Lifecycle implements IRepository return id; } - public CDOClassRef getType(CDOID id) + public CDOClassRef getObjectType(CDOID id) { CDOClassRef type = types.get(id); if (type == null) @@ -135,4 +135,9 @@ public class Repository extends Lifecycle implements IRepository return type; } + + public void setObjectType(CDOID id, CDOClassRef type) + { + types.putIfAbsent(id, type); + } } 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 31455a8585..81869445e4 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 @@ -39,6 +39,7 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio @Override public void addRevision(CDORevisionImpl revision) { + repository.setObjectType(revision.getID(), revision.getCDOClass().createClassRef()); repository.getStore().addRevision(this, revision); if (revision.isResource()) { @@ -55,12 +56,16 @@ public class RevisionManager extends CDORevisionResolverImpl implements IRevisio @Override protected CDORevisionImpl loadRevision(CDOID id) { - return repository.getStore().loadRevision(id); + CDORevisionImpl revision = repository.getStore().loadRevision(id); + repository.setObjectType(revision.getID(), revision.getCDOClass().createClassRef()); + return revision; } @Override protected CDORevisionImpl loadRevision(CDOID id, long timeStamp) { - return repository.getStore().loadHistoricalRevision(id, timeStamp); + CDORevisionImpl revision = repository.getStore().loadHistoricalRevision(id, timeStamp); + repository.setObjectType(revision.getID(), revision.getCDOClass().createClassRef()); + return revision; } } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java index f193c661b4..22baaad51e 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java @@ -79,7 +79,7 @@ public class Session implements ISession, CDOIDProvider } knownObjects.add(id); - CDOClassRef type = sessionManager.getRepository().getType(id); + CDOClassRef type = sessionManager.getRepository().getObjectType(id); return CDOIDImpl.create(id.getValue(), type); } } diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/store/Store.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/store/Store.java index a527c9d206..aa83b9f37e 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/store/Store.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/store/Store.java @@ -82,7 +82,8 @@ public abstract class Store implements IStore public CDOClassRef queryObjectType(CDOID id) { - return null; + // TODO Implement method Store.queryObjectType() + throw new UnsupportedOperationException("Not yet implemented"); } protected abstract RegisterResourceOperation createRegisterResourceOperation(CDOID id, String path, -- cgit v1.2.3