svn commit: r15588 - trunk/src: argouml-core-model-euml/src/org/argouml/model/euml argouml-core-model-mdr/src/org/argouml/model/mdr argouml-core-model/src/org/argouml/model

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2008-08-19 12:31:29-0700
New Revision: 15588

Modified:
   trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
   trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java

Log:
RESOLVED - task 5281: Make buildGeneralization more robust for cases where one extent is read-only

Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java?view=diff&rev=15588&p1=trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java&p2=trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java&r1=15587&r2=15588
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java	(original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java	2008-08-19 12:31:29-0700
@@ -1126,9 +1126,14 @@
     }
 
     public Generalization createGeneralization() {
-        return UMLFactory.eINSTANCE.createGeneralization();
+        return createGeneralization(null);
     }
 
+    public Generalization createGeneralization(Object extent) {
+        // Extent ignored for eUML2 implementation (required for NetBeans MDR)
+        return UMLFactory.eINSTANCE.createGeneralization();
+    }
+    
     public Interface createInterface() {
         return UMLFactory.eINSTANCE.createInterface();
     }

Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java?view=diff&rev=15588&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java&r1=15587&r2=15588
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java	(original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java	2008-08-19 12:31:29-0700
@@ -312,13 +312,16 @@
 
 
     public Generalization createGeneralization() {
-        Generalization myGeneralization = getCorePackage().getGeneralization()
-                .createGeneralization();
+        return createGeneralization(modelImpl.getUmlPackage());
+    }
+
+    public Generalization createGeneralization(Object extent) {
+        Generalization myGeneralization = ((org.omg.uml.UmlPackage) extent)
+                .getCore().getGeneralization().createGeneralization();
         super.initialize(myGeneralization);
         return myGeneralization;
     }
 
-
     public Interface createInterface() {
         Interface myInterface = getCorePackage()
                 .getInterface().createInterface();
@@ -1038,14 +1041,18 @@
             throw new IllegalArgumentException("child is root");
         }
 
-        Generalization gen = createGeneralization();
+        Namespace ns = child.getNamespace();
+        if ((ns == null || modelImpl.getModelManagementHelper().isReadOnly(ns))
+                && child instanceof Namespace) {
+            ns = (Namespace) child;
+        }
+        if (ns == null || modelImpl.getModelManagementHelper().isReadOnly(ns)) {
+            throw new IllegalArgumentException("No valid writeable namespace");
+        }
+        Generalization gen = createGeneralization(ns.refOutermostPackage());
         gen.setParent(parent);
         gen.setChild(child);
-        if (child.getNamespace() != null) {
-            gen.setNamespace(child.getNamespace());
-        } else if (child instanceof Namespace) {
-            gen.setNamespace((Namespace) child);
-        }
+        gen.setNamespace(ns);
         return gen;
     }
 

Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&rev=15588&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&r1=15587&r2=15588
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	(original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	2008-08-19 12:31:29-0700
@@ -651,7 +651,8 @@
             
             if (containerType.isInstance(container)) {
                 // determine if metaType is a valid element for container
-                Class<?>[] validElements = validContainmentMap.get(containerType);
+                Class<?>[] validElements = 
+                    validContainmentMap.get(containerType);
                 
                 for (int eIter = 0; eIter < validElements.length; ++eIter) {
                     

Modified: trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java?view=diff&rev=15588&p1=trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java&p2=trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java&r1=15587&r2=15588
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java	(original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/CoreFactory.java	2008-08-19 12:31:29-0700
@@ -877,9 +877,15 @@
      * Additional support for generalization.
      *
      * @return A generalization.
-     * TODO: This needs an extra parameter to specify the model/extent where
-     * the new element should be created.
+     * @deprecated for 0.26 by tfmorris.  Use 
+     * {@link #createGeneralization(Object)}.
      */
     Object createGeneralization();
 
+    /**
+     * Create a generalization in the given extent.
+     *
+     * @return A generalization.
+     */
+    Object createGeneralization(Object extent);
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.