Author: thn
Date: 2009-12-22 00:41:51-0800
New Revision: 17697

Modified:
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsHelperEUMLImpl.java

Log:
some more needed model cleanup in removeBaseClass(...), it's finished now

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsHelperEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsHelperEUMLImpl.java?view=diff&pathrev=17697&r1=17696&r2=17697
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsHelperEUMLImpl.java
 (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ExtensionMechanismsHelperEUMLImpl.java
 2009-12-22 00:41:51-0800
@@ -36,12 +36,14 @@
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.Class;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Extension;
 import org.eclipse.uml2.uml.Model;
 import org.eclipse.uml2.uml.Package;
 import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Stereotype;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.resource.UMLResource;
@@ -295,6 +297,16 @@
                 for (Extension ext : profile.getOwnedExtensions(false)) {
                     if (ext.getMetaclass() == metaclass
                             && ext.getEndTypes().contains(st)) {
+                        for (Property p : st.getAttributes()) {
+                            Association assoc = p.getAssociation();
+                            if (assoc != null && assoc == ext) {
+                                // additional cleanup needed, because
+                                // this would not be removed by ext.destroy():
+                                p.destroy();
+                                break;
+                            }
+                        }
+                        // remove base class by destroying the extension
                         ext.destroy();
                         break;
                     }

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2432243

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to