Bug 509517 - CreateDeleteOperation does not need unique check in EObjectToID-Map
Change-Id: If4234594bf842635ab8eeb745664b52c2a3c07b0
Signed-off-by: Johannes Faltermeier <jfaltermeier@eclipsesource.com>
diff --git a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/impl/CreateDeleteOperationImpl.java b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/impl/CreateDeleteOperationImpl.java
index 07e1dde..f012c56 100644
--- a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/impl/CreateDeleteOperationImpl.java
+++ b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/impl/CreateDeleteOperationImpl.java
@@ -363,18 +363,22 @@
}
/**
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * <!-- begin-user-doc -->
*
- * @generated
+ * @return the {@link EObject} to {@link ModelElementId}-Map
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
*/
public EMap<EObject, ModelElementId> getEObjectToIdMap() {
if (eObjectToIdMap == null) {
- eObjectToIdMap = new EcoreEMap<EObject, ModelElementId>(
- OperationsPackage.Literals.EOBJECT_TO_MODEL_ELEMENT_ID_MAP, EObjectToModelElementIdMapImpl.class, this,
+ eObjectToIdMap = new CreateDeleteOperationEMap(OperationsPackage.Literals.EOBJECT_TO_MODEL_ELEMENT_ID_MAP,
+ EObjectToModelElementIdMapImpl.class, this,
OperationsPackage.CREATE_DELETE_OPERATION__EOBJECT_TO_ID_MAP);
}
return eObjectToIdMap;
}
+ // end of custom code
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -585,4 +589,38 @@
}
}
+ /**
+ * Custom {@link EcoreEMap} which avoids the unique checks.
+ */
+ private final class CreateDeleteOperationEMap extends EcoreEMap<EObject, ModelElementId> {
+
+ private static final long serialVersionUID = 4760475977383113249L;
+
+ CreateDeleteOperationEMap(EClass entryEClass, Class<?> entryClass, InternalEObject owner, int featureID) {
+ super(entryEClass, entryClass, owner, featureID);
+ delegateEList = new CreateDeleteOperationEList<Entry<EObject, ModelElementId>>(entryClass, owner,
+ featureID);
+ }
+
+ /**
+ * Custom EList for Map entries.
+ *
+ * @param <E> entry class
+ */
+ protected class CreateDeleteOperationEList<E extends Object & Entry<EObject, ModelElementId>>
+ extends DelegateEObjectContainmentEList<E> {
+
+ private static final long serialVersionUID = 636483596488471965L;
+
+ CreateDeleteOperationEList(Class<?> entryClass, InternalEObject owner, int featureID) {
+ super(entryClass, owner, featureID);
+ }
+
+ @Override
+ protected boolean isUnique() {
+ return false;
+ }
+ }
+ }
+
} // CreateDeleteOperationImpl
\ No newline at end of file