Bug 501971 - Cut Element Handling
Change-Id: Ie67f9526d1ca389094e688415471019cceb56377
Signed-off-by: Johannes Faltermeier <jfaltermeier@eclipsesource.com>
diff --git a/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/util/EObjectChangeNotifier.java b/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/util/EObjectChangeNotifier.java
index 5078065..8c5e44f 100644
--- a/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/util/EObjectChangeNotifier.java
+++ b/bundles/org.eclipse.emf.emfstore.common.model/src/org/eclipse/emf/emfstore/internal/common/model/util/EObjectChangeNotifier.java
@@ -22,6 +22,7 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.emfstore.internal.common.model.IdEObjectCollection;
import org.eclipse.emf.emfstore.internal.common.model.impl.NotifiableIdEObjectCollectionImpl;
/**
@@ -247,7 +248,7 @@
final EObject eObject = (EObject) obj;
if (!collection.contains(eObject)) {
- collection.addCutElement(eObject);
+ collection.addCutElement(getCutElement(eObject));
}
}
}
@@ -257,10 +258,32 @@
if (ModelUtil.isSingleton(newEObject)) {
return;
}
- collection.addCutElement(newEObject);
+ collection.addCutElement(getCutElement(newEObject));
}
}
+ private EObject getCutElement(EObject eObject) {
+ final EObject referenceElement = eObject;
+ /* find topmost parent */
+ while (eObject.eContainer() != null) {
+ /*
+ * Bug 501971
+ * if we are contained in a different IdEObjectCollection (e.g. a second EMFStore project) simply add the
+ * used element from the reference as a cut element (default before 501971)
+ */
+ if (IdEObjectCollection.class.isInstance(eObject)) {
+ return referenceElement;
+ }
+ eObject = eObject.eContainer();
+ }
+
+ /*
+ * Bug 501971
+ * otherwise move the full containment tree
+ */
+ return eObject;
+ }
+
/**
* @param notification
*/
diff --git a/tests/org.eclipse.emf.emfstore.client.api.test/AllAPITests.launch b/tests/org.eclipse.emf.emfstore.client.api.test/AllAPITests.launch
index 615de5b..cb91b42 100644
--- a/tests/org.eclipse.emf.emfstore.client.api.test/AllAPITests.launch
+++ b/tests/org.eclipse.emf.emfstore.client.api.test/AllAPITests.launch
@@ -3,7 +3,7 @@
<booleanAttribute key="append.args" value="true"/>
<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
<booleanAttribute key="automaticValidate" value="false"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="[NONE]"/>
@@ -12,8 +12,7 @@
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
<booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.emf.emfstore.branding,org.eclipse.emf.emfstore.client.example.test,org.eclipse.emf.emfstore.client.test.alltests,org.eclipse.emf.emfstore.client.test.ui,org.eclipse.emf.emfstore.client.transaction,org.eclipse.emf.emfstore.client.ui,org.eclipse.emf.emfstore.client.ui.historybrowsercomparator,org.eclipse.emf.emfstore.client.ui.rap,org.eclipse.emf.emfstore.client.ui.rcp,org.eclipse.emf.emfstore.ecore,org.eclipse.emf.emfstore.example.helloworld,org.eclipse.emf.emfstore.example.installer,org.eclipse.emf.emfstore.example.merging,org.eclipse.emf.emfstore.example.sessionprovider,org.eclipse.emf.emfstore.examplemodel.edit,org.eclipse.emf.emfstore.fuzzy.emf.edit,org.eclipse.emf.emfstore.fuzzy.emf.editor,org.eclipse.emf.emfstore.fuzzy.emf.example,org.eclipse.emf.emfstore.mongodb,org.eclipse.emf.emfstore.mongodb.client,org.eclipse.emf.emfstore.mongodb.server"/>
-<booleanAttribute key="includeOptional" value="true"/>
+<booleanAttribute key="includeOptional" value="false"/>
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/org.eclipse.emf.emfstore.client.api.test/src/org/eclipse/emf/emfstore/client/api/test/AllAPITests.java"/>
@@ -33,8 +32,8 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.emf.cdo.server.product.tcp_h2"/>
<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,javax.annotation*1.0.0.v20101115-0725@default:default,javax.annotation*1.2.0.v201401042248@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec*1.3.0.v201101211617@default:default,org.apache.commons.codec*1.6.0.v201305230611@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.osgi*3.8.2.v20130124-134944@-1:true,org.eclipse.osgi.services@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.w3c.css.sac@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="com.eclipsesource.makeithappen.model.edit@default:default,com.eclipsesource.makeithappen.model@default:default,org.eclipse.b3.aggregator.edit@default:default,org.eclipse.b3.aggregator.editor@default:default,org.eclipse.b3.aggregator.engine.maven@default:default,org.eclipse.b3.aggregator.engine@default:default,org.eclipse.b3.aggregator.legacy.ui@default:default,org.eclipse.b3.aggregator.legacy@default:default,org.eclipse.b3.aggregator@default:default,org.eclipse.b3.backend@default:default,org.eclipse.b3.beelang.generator@default:default,org.eclipse.b3.beelang.junit@default:default,org.eclipse.b3.beelang.tests@default:default,org.eclipse.b3.beelang.ui.experiments@default:default,org.eclipse.b3.beelang.ui@default:default,org.eclipse.b3.beelang@default:default,org.eclipse.b3.build.ui.idefragment@default:false,org.eclipse.b3.build.ui@default:default,org.eclipse.b3.build@default:default,org.eclipse.b3.cli@default:default,org.eclipse.b3.core@default:default,org.eclipse.b3.p2.edit@default:default,org.eclipse.b3.p2.maven.indexer@default:default,org.eclipse.b3.p2.maven@default:default,org.eclipse.b3.p2.tests@default:default,org.eclipse.b3.p2@default:default,org.eclipse.b3.util@default:default,org.eclipse.emf.ecp.makeithappen.model.edit@default:default,org.eclipse.emf.ecp.makeithappen.model.viewmodel@default:default,org.eclipse.emf.ecp.makeithappen.model@default:default,org.eclipse.emf.emfstore.client.api.test@default:false,org.eclipse.emf.emfstore.client.changetracking.test@default:false,org.eclipse.emf.emfstore.client.conflictdetection.test@default:false,org.eclipse.emf.emfstore.client.model.edit@default:default,org.eclipse.emf.emfstore.client.recording.test@default:false,org.eclipse.emf.emfstore.client.test@default:default,org.eclipse.emf.emfstore.client.ui.test@default:false,org.eclipse.emf.emfstore.client.ui.transaction@default:default,org.eclipse.emf.emfstore.client.ws.test@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model.edit@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.fuzzy.emf.diff.test@default:default,org.eclipse.emf.emfstore.fuzzy.emf.test@default:default,org.eclipse.emf.emfstore.fuzzy.emf@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.modelmutator.test@default:default,org.eclipse.emf.emfstore.modelmutator@default:default,org.eclipse.emf.emfstore.performance.test@default:default,org.eclipse.emf.emfstore.server.model.edit@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server.test@default:false,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.emfstore.test.common@default:default,org.eclipse.emf.emfstore.test.model.edit@default:default,org.eclipse.emf.emfstore.test.model@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,javax.inject@default:default,javax.xml@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.osgi*3.11.0.v20160603-1336@-1:true,org.eclipse.osgi.compatibility.state@default:default,org.eclipse.osgi.services*3.5.100.v20160504-1419@default:default,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.emfstore.client.api.test@default:false,org.eclipse.emf.emfstore.client.changetracking.test@default:false,org.eclipse.emf.emfstore.client.conflictdetection.test@default:false,org.eclipse.emf.emfstore.client.recording.test@default:false,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.modelmutator@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server.test@default:false,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.emfstore.test.common@default:default,org.eclipse.emf.emfstore.test.model.edit@default:default,org.eclipse.emf.emfstore.test.model@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
diff --git a/tests/org.eclipse.emf.emfstore.client.recording.test/AllRecordingTests.launch b/tests/org.eclipse.emf.emfstore.client.recording.test/AllRecordingTests.launch
index bb9e687..3a0a7e2 100644
--- a/tests/org.eclipse.emf.emfstore.client.recording.test/AllRecordingTests.launch
+++ b/tests/org.eclipse.emf.emfstore.client.recording.test/AllRecordingTests.launch
@@ -3,7 +3,7 @@
<booleanAttribute key="append.args" value="true"/>
<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticAdd" value="false"/>
<booleanAttribute key="automaticValidate" value="false"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="[NONE]"/>
@@ -12,8 +12,7 @@
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
<booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="com.eclipsesource.makeithappen.model,com.eclipsesource.makeithappen.model.edit,org.eclipse.b3.aggregator,org.eclipse.b3.aggregator.edit,org.eclipse.b3.aggregator.editor,org.eclipse.b3.aggregator.engine,org.eclipse.b3.aggregator.engine.maven,org.eclipse.b3.aggregator.legacy,org.eclipse.b3.aggregator.legacy.ui,org.eclipse.b3.backend,org.eclipse.b3.beelang,org.eclipse.b3.beelang.generator,org.eclipse.b3.beelang.junit,org.eclipse.b3.beelang.tests,org.eclipse.b3.beelang.ui,org.eclipse.b3.beelang.ui.experiments,org.eclipse.b3.build,org.eclipse.b3.build.ui,org.eclipse.b3.build.ui.idefragment,org.eclipse.b3.cli,org.eclipse.b3.core,org.eclipse.b3.p2,org.eclipse.b3.p2.edit,org.eclipse.b3.p2.maven,org.eclipse.b3.p2.maven.indexer,org.eclipse.b3.p2.tests,org.eclipse.b3.util,org.eclipse.emf.ecp.makeithappen.model,org.eclipse.emf.ecp.makeithappen.model.edit,org.eclipse.emf.ecp.makeithappen.model.viewmodel,org.eclipse.emf.emfstore.branding,org.eclipse.emf.emfstore.client.example.test,org.eclipse.emf.emfstore.client.model.edit,org.eclipse.emf.emfstore.client.test,org.eclipse.emf.emfstore.client.test.alltests,org.eclipse.emf.emfstore.client.test.ui,org.eclipse.emf.emfstore.client.transaction,org.eclipse.emf.emfstore.client.ui,org.eclipse.emf.emfstore.client.ui.historybrowsercomparator,org.eclipse.emf.emfstore.client.ui.rap,org.eclipse.emf.emfstore.client.ui.rcp,org.eclipse.emf.emfstore.client.ws.test,org.eclipse.emf.emfstore.common.model.edit,org.eclipse.emf.emfstore.ecore,org.eclipse.emf.emfstore.example.helloworld,org.eclipse.emf.emfstore.example.installer,org.eclipse.emf.emfstore.example.merging,org.eclipse.emf.emfstore.example.sessionprovider,org.eclipse.emf.emfstore.examplemodel.edit,org.eclipse.emf.emfstore.fuzzy.emf,org.eclipse.emf.emfstore.fuzzy.emf.diff.test,org.eclipse.emf.emfstore.fuzzy.emf.edit,org.eclipse.emf.emfstore.fuzzy.emf.editor,org.eclipse.emf.emfstore.fuzzy.emf.example,org.eclipse.emf.emfstore.fuzzy.emf.test,org.eclipse.emf.emfstore.modelmutator.test,org.eclipse.emf.emfstore.mongodb,org.eclipse.emf.emfstore.mongodb.client,org.eclipse.emf.emfstore.mongodb.server,org.eclipse.emf.emfstore.performance.test,org.eclipse.emf.emfstore.server.model.edit"/>
-<booleanAttribute key="includeOptional" value="true"/>
+<booleanAttribute key="includeOptional" value="false"/>
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/org.eclipse.emf.emfstore.client.recording.test/src/org/eclipse/emf/emfstore/client/recording/test/AllRecordingTests.java"/>
@@ -33,7 +32,7 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.emf.cdo.server.product.tcp_h2"/>
<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.guava@default:default,javax.inject@default:default,javax.servlet@default:default,org.apache.commons.codec*1.6.0.v201305230611@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.osgi*3.8.2.v20130124-134944@-1:true,org.eclipse.osgi.services@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.slf4j.api@default:default,org.slf4j.jcl@default:default"/>
+<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,javax.inject@default:default,javax.xml@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.swt.gtk@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.osgi*3.11.0.v20160603-1336@-1:true,org.eclipse.osgi.compatibility.state@default:default,org.eclipse.osgi.services*3.5.100.v20160504-1419@default:default,org.eclipse.swt.gtk.linux.x86_64@default:default,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil*1.0.1.v200903091627@default:default,org.w3c.dom.svg@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.emfstore.client.api.test@default:false,org.eclipse.emf.emfstore.client.changetracking.test@default:false,org.eclipse.emf.emfstore.client.conflictdetection.test@default:false,org.eclipse.emf.emfstore.client.recording.test@default:false,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.modelmutator@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server.test@default:false,org.eclipse.emf.emfstore.server@default:default,org.eclipse.emf.emfstore.test.common@default:default,org.eclipse.emf.emfstore.test.model.edit@default:default,org.eclipse.emf.emfstore.test.model@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<booleanAttribute key="tracing" value="false"/>
diff --git a/tests/org.eclipse.emf.emfstore.client.recording.test/src/org/eclipse/emf/emfstore/client/recording/test/CreateDeleteOperationTest.java b/tests/org.eclipse.emf.emfstore.client.recording.test/src/org/eclipse/emf/emfstore/client/recording/test/CreateDeleteOperationTest.java
index 0a55c9d..efc34ed 100644
--- a/tests/org.eclipse.emf.emfstore.client.recording.test/src/org/eclipse/emf/emfstore/client/recording/test/CreateDeleteOperationTest.java
+++ b/tests/org.eclipse.emf.emfstore.client.recording.test/src/org/eclipse/emf/emfstore/client/recording/test/CreateDeleteOperationTest.java
@@ -15,6 +15,7 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@@ -50,6 +51,7 @@
import org.eclipse.emf.emfstore.internal.common.model.impl.ProjectImpl;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.AbstractOperation;
+import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.CompositeOperation;
import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.CreateDeleteOperation;
import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.MultiReferenceOperation;
import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.ReferenceOperation;
@@ -947,14 +949,15 @@
assertEquals(getProject(), ModelUtil.getProject(parentTestElement));
assertTrue(getProject().contains(testElement));
assertEquals(getProject(), ModelUtil.getProject(testElement));
- assertFalse(getProject().contains(newTestElement));
- assertFalse(getProject().contains(newChildElement1));
- assertFalse(getProject().contains(newChildElement2));
+ assertTrue(getProject().contains(newTestElement));
+ assertTrue(getProject().contains(newChildElement1));
+ assertTrue(getProject().contains(newChildElement2));
assertTrue(getProject().contains(newChildElement3));
- assertEquals(2, newTestElement.getContainedElements().size());
+ assertEquals(3, newTestElement.getContainedElements().size());
assertEquals(newChildElement1, newTestElement.getContainedElements().get(0));
assertEquals(newChildElement2, newTestElement.getContainedElements().get(1));
+ assertEquals(newChildElement3, newTestElement.getContainedElements().get(2));
assertEquals(newTestElement, newChildElement1.getReferences().get(0));
assertEquals(newChildElement1, newChildElement2.getReferences().get(0));
@@ -984,9 +987,10 @@
assertTrue(getProject().contains(newChildElement2));
assertTrue(getProject().contains(newChildElement3));
- assertEquals(2, newTestElement.getContainedElements().size());
+ assertEquals(3, newTestElement.getContainedElements().size());
assertEquals(newChildElement1, newTestElement.getContainedElements().get(0));
assertEquals(newChildElement2, newTestElement.getContainedElements().get(1));
+ assertEquals(newChildElement3, newTestElement.getContainedElements().get(2));
assertEquals(newTestElement, newChildElement1.getReferences().get(0));
assertEquals(newChildElement1, newChildElement2.getReferences().get(0));
@@ -994,49 +998,20 @@
assertEquals(newChildElement3, testElement.getReferences().get(0));
final List<AbstractOperation> operations = forceGetOperations();
- assertEquals(2, operations.size());
- final AbstractOperation operation = operations.get(0);
- assertTrue(operation instanceof CreateDeleteOperation);
- final CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation;
-
- final ModelElementId newTestElementId = ModelUtil.getProject(newTestElement).getModelElementId(newTestElement);
- final TestElement copiedNewTestElement = (TestElement) createDeleteOperation.getModelElement();
- final TestElement copiedNewChildElement1 = copiedNewTestElement.getContainedElements().get(0);
- final TestElement copiedNewChildElement2 = copiedNewTestElement.getContainedElements().get(1);
-
- assertEquals(2, copiedNewTestElement.getContainedElements().size());
- assertEquals(copiedNewTestElement, copiedNewChildElement1.getReferences().get(0));
- assertEquals(copiedNewChildElement1, copiedNewChildElement2.getReferences().get(0));
- assertEquals(1, copiedNewChildElement2.getReferences().size());
-
- assertEquals(newTestElementId, createDeleteOperation.getModelElementId());
- assertEquals(1, createDeleteOperation.getSubOperations().size());
- assertFalse(createDeleteOperation.isDelete());
- assertTrue(CommonUtil.isSelfContained(createDeleteOperation, true));
-
- // check sub-operations of 1st operation
- final MultiReferenceOperation subOperation1 = (MultiReferenceOperation) createDeleteOperation
- .getSubOperations().get(
- 0);
-
- // sub-operation 1
- assertEquals(newChildElement2, getProject().getModelElement(subOperation1.getModelElementId()));
- assertEquals(REFERENCES, subOperation1.getFeatureName());
- assertEquals(testElement, getProject().getModelElement(subOperation1.getReferencedModelElements().get(0)));
+ assertEquals(1, operations.size());
// check 2nd operation
- final MultiReferenceOperation operation2 = (MultiReferenceOperation) operations.get(1);
+ final CompositeOperation operation1 = (CompositeOperation) operations.get(0);
+
+ final MultiReferenceOperation operation2 = (MultiReferenceOperation) operation1.getMainOperation();// operations.get(0);
assertEquals(parentTestElement, getProject().getModelElement(operation2.getModelElementId()));
assertEquals(newTestElement, getProject().getModelElement(operation2.getReferencedModelElements().get(0)));
- assertTrue(operations.get(1) instanceof MultiReferenceOperation);
- final MultiReferenceOperation multiRefOp = (MultiReferenceOperation) operations.get(1);
-
- assertEquals(parentTestElement, getProject().getModelElement(multiRefOp.getModelElementId()));
- assertEquals(TestElementFeatures.containedElements().getName(), multiRefOp.getFeatureName());
- assertEquals(newTestElement, getProject().getModelElement(multiRefOp.getReferencedModelElements().get(0)));
- assertTrue(multiRefOp.isAdd());
+ assertEquals(parentTestElement, getProject().getModelElement(operation2.getModelElementId()));
+ assertEquals(TestElementFeatures.containedElements().getName(), operation2.getFeatureName());
+ assertEquals(newTestElement, getProject().getModelElement(operation2.getReferencedModelElements().get(0)));
+ assertTrue(operation2.isAdd());
}
// END COMPLEX CODE
@@ -1663,4 +1638,70 @@
* child.getContainingWorkpackage()); assertSame(child, existing.getContainingWorkpackage());
* assertEquals(getProject().getAllModelElements().size(), 3); }
*/
+
+ @Test
+ public void testCreateCutElementsFromOtherProject() {
+ /* Setup */
+ final ProjectSpace projectSpaceOriginal = getProjectSpace();
+ final ProjectSpace projectSpaceCopy = cloneProjectSpace(projectSpaceOriginal);
+
+ final TestElement testElementA = Create.testElement();
+ final TestElement testElementB = Create.testElement();
+ final TestElement testElementC = Create.testElement();
+ testElementB.setContainedElement(testElementC);
+
+ RunESCommand.run(new Callable<Void>() {
+ public Void call() throws Exception {
+ projectSpaceOriginal.getProject().getModelElements().add(testElementA);
+ projectSpaceCopy.getProject().getModelElements().add(testElementB);
+ return null;
+ }
+ });
+
+ /* Act */
+ RunESCommand.run(new Callable<Void>() {
+ public Void call() throws Exception {
+ testElementA.setReference(testElementC);
+ return null;
+ }
+ });
+
+ /* Assert */
+ // A+C
+ assertSame(testElementA, projectSpaceOriginal.getProject().getModelElements().get(0));
+ assertSame(testElementC, projectSpaceOriginal.getProject().getModelElements().get(1));
+ // B
+ assertSame(testElementB, projectSpaceCopy.getProject().getModelElements().get(0));
+ }
+
+ @Test
+ public void testCreateCutElementsFromNonProject() {
+ /* Setup */
+ final ProjectSpace projectSpaceOriginal = getProjectSpace();
+
+ final TestElement testElementA = Create.testElement();
+ final TestElement testElementB = Create.testElement();
+ final TestElement testElementC = Create.testElement();
+ testElementB.setContainedElement(testElementC);
+
+ RunESCommand.run(new Callable<Void>() {
+ public Void call() throws Exception {
+ projectSpaceOriginal.getProject().getModelElements().add(testElementA);
+ return null;
+ }
+ });
+
+ /* Act */
+ RunESCommand.run(new Callable<Void>() {
+ public Void call() throws Exception {
+ testElementA.setReference(testElementC);
+ return null;
+ }
+ });
+
+ /* Assert */
+ // A+B(C)
+ assertSame(testElementA, projectSpaceOriginal.getProject().getModelElements().get(0));
+ assertSame(testElementB, projectSpaceOriginal.getProject().getModelElements().get(1));
+ }
}