added lock flag to prevent clearing caches in project
diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/controller/RevertCommitController.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/controller/RevertCommitController.java
index d2195f1..6c366cb 100644
--- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/controller/RevertCommitController.java
+++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/controller/RevertCommitController.java
@@ -6,7 +6,7 @@
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
- * Contributors:
+ * Contributors:
* ovonwesen
* emueller
******************************************************************************/
@@ -18,6 +18,7 @@
import org.eclipse.emf.emfstore.internal.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.ServerCall;
import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESLocalProjectImpl;
+import org.eclipse.emf.emfstore.internal.common.model.impl.IdEObjectCollectionImpl;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
import org.eclipse.emf.emfstore.internal.server.model.versioning.ChangePackage;
import org.eclipse.emf.emfstore.internal.server.model.versioning.PrimaryVersionSpec;
@@ -74,9 +75,14 @@
Collections.reverse(changes);
+ // TODO: find out why applying the reversed changes causes IDs to get lost
+ ((IdEObjectCollectionImpl) revertSpace.toInternalAPI().getProject()).lockAllocation();
for (ChangePackage changePackage : changes) {
changePackage.reverse().apply(revertSpace.toInternalAPI().getProject(), true);
}
+ ((IdEObjectCollectionImpl) revertSpace.toInternalAPI().getProject()).unlockAllocation();
+ ((IdEObjectCollectionImpl) revertSpace.toInternalAPI().getProject()).clearAllocatedCaches();
+
}
/**
diff --git a/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/impl/IdEObjectCollectionImpl.java b/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/impl/IdEObjectCollectionImpl.java
index b982474..f4ffe49 100644
--- a/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/impl/IdEObjectCollectionImpl.java
+++ b/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/impl/IdEObjectCollectionImpl.java
@@ -74,6 +74,8 @@
*/
private ESModelElementIdGenerator modelElementIdGenerator;
+ private boolean lock;
+
/**
* Constructor.
*/
@@ -772,6 +774,9 @@
* @see org.eclipse.emf.emfstore.internal.common.model.IdEObjectCollection#forceClearAllocatedCaches()
*/
public void clearAllocatedCaches() {
+ if (lock) {
+ return;
+ }
allocatedEObjectToIdMap.clear();
allocatedIdToEObjectMap.clear();
}
@@ -849,4 +854,18 @@
public void removeModelElement(EObject modelElement) {
getModelElements().remove(modelElement);
}
+
+ /**
+ *
+ */
+ public void lockAllocation() {
+ lock = true;
+ }
+
+ /**
+ *
+ */
+ public void unlockAllocation() {
+ lock = false;
+ }
}
\ No newline at end of file