Bug 480454 - Corrupted ChangePackage resources in case of active change
package splitting

Cloning operations while retrieving complete change package from upload
adapter

Change-Id: I9faa0731ab81c9963cc64691ead37c3f022e0acb
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java
index ae467c5..b43bf8a 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java
@@ -19,6 +19,7 @@
 
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.emfstore.internal.common.model.util.FileUtil;
+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.FileBasedChangePackage;
 import org.eclipse.emf.emfstore.internal.server.model.versioning.VersioningFactory;
@@ -37,10 +38,8 @@
 public class ChangePackageFragmentUploadAdapter extends AdapterImpl {
 
 	// maps proxy ID to file-based change package
-	private final Map<String, FileBasedChangePackage> proxyIdToChangePackageFragments =
-		new LinkedHashMap<String, FileBasedChangePackage>();
-	private final Map<String, FileBasedChangePackage> proxyIdToCompletedChangePackages =
-		new LinkedHashMap<String, FileBasedChangePackage>();
+	private final Map<String, FileBasedChangePackage> proxyIdToChangePackageFragments = new LinkedHashMap<String, FileBasedChangePackage>();
+	private final Map<String, FileBasedChangePackage> proxyIdToCompletedChangePackages = new LinkedHashMap<String, FileBasedChangePackage>();
 
 	/**
 	 * Adds a single fragment.
@@ -110,7 +109,7 @@
 		final ChangePackage changePackage = VersioningFactory.eINSTANCE.createChangePackage();
 		try {
 			for (final AbstractOperation operation : operationsHandle.iterable()) {
-				changePackage.add(operation);
+				changePackage.add(ModelUtil.clone(operation));
 			}
 		} finally {
 			operationsHandle.close();