diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java | 24 |
1 files changed, 9 insertions, 15 deletions
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 a75d1b50e7..94ca1162a9 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 @@ -21,6 +21,7 @@ import org.eclipse.emf.cdo.internal.server.protocol.CDOServerProtocol; import org.eclipse.emf.cdo.internal.server.protocol.InvalidationNotification; import org.eclipse.emf.cdo.protocol.CDOID; import org.eclipse.emf.cdo.protocol.CDOProtocolConstants; +import org.eclipse.emf.cdo.protocol.model.CDOClass; import org.eclipse.emf.cdo.protocol.model.CDOClassRef; import org.eclipse.emf.cdo.server.ISession; import org.eclipse.emf.cdo.server.IView; @@ -34,7 +35,6 @@ import org.eclipse.net4j.util.event.IListener; import org.eclipse.net4j.util.lifecycle.ILifecycle; import java.text.MessageFormat; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -55,8 +55,6 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider private ConcurrentMap<Integer, View> views = new ConcurrentHashMap<Integer, View>(); - private Set<CDOID> knownTypes = new HashSet<CDOID>(); - private IListener protocolListener = new LifecycleEventAdapter() { @Override @@ -180,21 +178,17 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider return id; } - Repository repository = sessionManager.getRepository(); - if (repository.isRememberingKnownTypes()) - { - if (knownTypes.contains(id)) - { - return id; - } - - knownTypes.add(id); - } - - CDOClassRef type = repository.getTypeManager().getObjectType(StoreUtil.getReader(), id); + CDOClassRef type = getObjectTypeRef(id); return CDOIDImpl.create(id.getValue(), type); } + public CDOClassRef getObjectTypeRef(CDOID id) + { + RevisionManager revisionManager = sessionManager.getRepository().getRevisionManager(); + CDOClass cdoClass = revisionManager.getObjectType(id); + return cdoClass != null ? cdoClass.createClassRef() : StoreUtil.getReader().readObjectType(id); + } + /** * TODO I can't see how recursion is controlled/limited */ |