diff options
3 files changed, 26 insertions, 6 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 195f3e8345..ec7da52ba8 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 @@ -38,6 +38,8 @@ public class Repository extends Container<IRepositoryElement> implements IReposi public static final String PROP_VERIFYING_REVISIONS = "verifyingRevisions"; + public static final String PROP_REMEMBERING_KNOWN_TYPES = "rememberingKnownTypes"; + private static final long INITIAL_OID_VALUE = 2; private static final long INITIAL_META_ID_VALUE = 1; @@ -54,6 +56,8 @@ public class Repository extends Container<IRepositoryElement> implements IReposi private Boolean verifyingRevisions; + private Boolean rememberingKnownTypes; + private TypeManager typeManager = createTypeManager(); private PackageManager packageManager = createPackageManager(); @@ -142,6 +146,17 @@ public class Repository extends Container<IRepositoryElement> implements IReposi return verifyingRevisions; } + public boolean isRememberingKnownTypes() + { + if (rememberingKnownTypes == null) + { + String value = getProperties().get(PROP_REMEMBERING_KNOWN_TYPES); + rememberingKnownTypes = value == null ? false : Boolean.valueOf(value); + } + + return rememberingKnownTypes; + } + public TypeManager getTypeManager() { return typeManager; 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 d15c89933d..5024f49bad 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 @@ -52,7 +52,7 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider private ConcurrentMap<Integer, View> views = new ConcurrentHashMap<Integer, View>(); - private Set<CDOID> knownObjects = new HashSet<CDOID>(); + private Set<CDOID> knownTypes = new HashSet<CDOID>(); private IListener protocolListener = new LifecycleEventAdapter() { @@ -171,14 +171,18 @@ public class Session extends Container<IView> implements ISession, CDOIDProvider return id; } - if (knownObjects.contains(id)) + Repository repository = sessionManager.getRepository(); + if (repository.isRememberingKnownTypes()) { - // TODO On client-side add a check if the id is really known! - return id; + if (knownTypes.contains(id)) + { + // TODO On client-side add a check if the id is really known! + return id; + } + + knownTypes.add(id); } - knownObjects.add(id); - Repository repository = sessionManager.getRepository(); CDOClassRef type = repository.getTypeManager().getObjectType(StoreUtil.getReader(), id); return CDOIDImpl.create(id.getValue(), type); } diff --git a/plugins/org.eclipse.emf.cdo.ui/config/cdo.server.xml b/plugins/org.eclipse.emf.cdo.ui/config/cdo.server.xml index affa21748c..3f21313231 100644 --- a/plugins/org.eclipse.emf.cdo.ui/config/cdo.server.xml +++ b/plugins/org.eclipse.emf.cdo.ui/config/cdo.server.xml @@ -5,6 +5,7 @@ <property name="overrideUUID" value="1ff5d226-b1f0-40fb-aba2-0c31b38c764f"/> <property name="supportingAudits" value="true"/> <property name="verifyingRevisions" value="false"/> + <property name="rememberingKnownTypes" value="false"/> <store type="db"> <!-- mode: OFF | EXPRESS | NORMAL | GUARANTEED --> |