Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2013-10-17 14:54:02 +0000
committerAnsgar Radermacher2013-10-17 14:54:58 +0000
commit97005156ff1ca6f15b36c66621cfb0d06cb9c12b (patch)
tree99697718fab180573593034cdb07265364edb7f3
parent0fa72536e909919d9e2680a3e5dff8657e4ffc07 (diff)
downloadorg.eclipse.papyrus-97005156ff1ca6f15b36c66621cfb0d06cb9c12b.tar.gz
org.eclipse.papyrus-97005156ff1ca6f15b36c66621cfb0d06cb9c12b.tar.xz
org.eclipse.papyrus-97005156ff1ca6f15b36c66621cfb0d06cb9c12b.zip
- Fixed bug 418999 - [C++ codegen] TestCDTintegration.uml contains unresolved pathmap
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.texteditor.cdt/src/org/eclipse/papyrus/texteditor/cdt/sync/SyncCDTtoModel.java7
-rw-r--r--plugins/uml/tools/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLUtil.java16
2 files changed, 21 insertions, 2 deletions
diff --git a/extraplugins/codegen/org.eclipse.papyrus.texteditor.cdt/src/org/eclipse/papyrus/texteditor/cdt/sync/SyncCDTtoModel.java b/extraplugins/codegen/org.eclipse.papyrus.texteditor.cdt/src/org/eclipse/papyrus/texteditor/cdt/sync/SyncCDTtoModel.java
index 258d2875f9c..5139092ab1d 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.texteditor.cdt/src/org/eclipse/papyrus/texteditor/cdt/sync/SyncCDTtoModel.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.texteditor.cdt/src/org/eclipse/papyrus/texteditor/cdt/sync/SyncCDTtoModel.java
@@ -53,6 +53,7 @@ import org.eclipse.papyrus.infra.core.Activator;
import org.eclipse.papyrus.texteditor.cdt.CommandSupport;
import org.eclipse.papyrus.texteditor.cdt.Utils;
import org.eclipse.papyrus.texteditor.cdt.listener.ModelListener;
+import org.eclipse.papyrus.uml.tools.utils.UMLUtil;
import org.eclipse.ui.IEditorInput;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
@@ -278,8 +279,10 @@ public class SyncCDTtoModel implements Runnable {
}
}
- operation.getOwnedParameters().clear();
- ob.getOwnedParameters().clear();
+ // a parameters.clear() is not sufficient. Otherwise stereotype applications to unresolved elements remain in the model
+ UMLUtil.destroyElements(operation.getOwnedParameters());
+ UMLUtil.destroyElements(ob.getOwnedParameters());
+
for(IASTNode declaratorChild : declarator.getChildren()) {
if(declaratorChild instanceof IASTParameterDeclaration) {
IASTParameterDeclaration parameter = (IASTParameterDeclaration)declaratorChild;
diff --git a/plugins/uml/tools/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLUtil.java b/plugins/uml/tools/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLUtil.java
index 0731ffe2c82..c55ee29d47f 100644
--- a/plugins/uml/tools/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLUtil.java
+++ b/plugins/uml/tools/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/UMLUtil.java
@@ -17,6 +17,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
@@ -321,4 +323,18 @@ public class UMLUtil {
return UMLUtil.getContextClassForMessageOccurrence(referer);
}
+
+ /**
+ * Destroy all elements in a given list
+ *
+ * @param list a list of elements
+ */
+ public static void destroyElements(EList<? extends Element> list) {
+ BasicEList<Element> listCopy = new BasicEList<Element>();
+ // loop on copy in order to avoid iterator exception
+ listCopy.addAll(list);
+ for (Element element : listCopy) {
+ element.destroy();
+ }
+ }
}

Back to the top