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