Author: tfmorris
Date: 2008-05-14 11:28:56-0700
New Revision: 14734

Modified:
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java

Log:
Issue 4677 - Fix namespace validity checking for generalizations & 
generalizable elements.  Add import handling for packages. 
http://argouml.tigris.org/issues/show_bug.cgi?id=4677

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java?view=diff&rev=14734&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java&r1=14733&r2=14734
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   2008-05-14 11:28:56-0700
@@ -918,7 +918,7 @@
     @Deprecated
     public Collection getAllContents(Object clazz) {
         if (clazz == null) {
-            return Collections.EMPTY_SET;
+            return Collections.emptySet();
         }
         if (!(clazz instanceof Classifier)) {
             throw new IllegalArgumentException();
@@ -1464,9 +1464,13 @@
         //     GeneralizableElement.
         //       self.generalization->forAll(g |
         //           self.namespace.allContents->includes(g.parent) )
-        return ModelManagementHelperMDRImpl.getContents(ns).contains(
-                gen.getParent());
+//        return ModelManagementHelperMDRImpl.getContents(ns).contains(
+//                gen.getParent());
         
+        // There actually don't appear to be any restrictions on the
+        // namespace for a Generalization.  The UML 1.4 WFR 2.5.3.20 #3
+        // refers to GeneralizableElements, not Generalizations - tfm
+        return true;
         
         // These old checks don't appear to be supported by the
         // UML 1.4 spec. - tfm 20080514
@@ -1628,10 +1632,8 @@
             GeneralizableElement generalizableElement,
             Namespace namespace) {
         
-        CorePackage corePackage = modelImpl.getUmlPackage().getCore();
         Collection<Generalization> generalizations = 
             generalizableElement.getGeneralization();
-        
         for (Generalization generalization : generalizations) {
             GeneralizableElement parent = generalization.getParent();
             if (!modelImpl.getModelManagementHelper().getAllContents(namespace)

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&rev=14734&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java&r1=14733&r2=14734
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java   
    (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java   
    2008-05-14 11:28:56-0700
@@ -1900,9 +1900,7 @@
              * similar automatically as part of its namespace processing.
              * - tfm - 20060408
              */
-            Collection<ElementImport> imports =
-                    ((UmlPackage) pack).getElementImport();
-            for (ElementImport ei : imports) {
+            for (ElementImport ei : ((UmlPackage) pack).getElementImport()) {
                 ModelElement element = ei.getImportedElement();
                 results.add(element);
             }

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java?view=diff&rev=14734&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java&r1=14733&r2=14734
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
        (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/ModelManagementHelperMDRImpl.java
        2008-05-14 11:28:56-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
 // Rights Reserved. Permission to use, copy, modify, and distribute this
 // software and its documentation without fee, and without a written
 // agreement is hereby granted, provided that the above copyright notice
@@ -674,8 +674,7 @@
                 }
             }
             /* TODO: This is the 2nd part of this method: */
-            Collection imports = modelImpl.getFacade()
-                    .getImportedElements(ns);
+            Collection imports = modelImpl.getFacade().getImportedElements(ns);
             ret.addAll(imports);
         } catch (InvalidObjectException e) {
             throw new InvalidElementException(e);
@@ -754,13 +753,20 @@
              */
 
             if (pack instanceof Classifier || pack instanceof UmlPackage) {
-                Collection<GeneralizableElement> ges = 
+                Collection<GeneralizableElement> parents = 
                     CoreHelperMDRImpl.getParents((GeneralizableElement) pack);
-                Collection<ModelElement> allContents = 
-                    new HashSet<ModelElement>();
-                for (GeneralizableElement ge : ges) {
-                    allContents.addAll(getAllContents(ge));
+                Set<ModelElement> allContents = new HashSet<ModelElement>();
+                for (GeneralizableElement parent : parents) {
+                    allContents.addAll(getAllContents(parent));
+                }
+                
+                if (pack instanceof UmlPackage) {
+                    allContents.addAll(getAllImportedElements(pack));
+                    for (GeneralizableElement parent : parents) {
+                        allContents.addAll(getAllImportedElements(parent));
+                    }
                 }
+
                 for (ModelElement element : allContents) {
                     if (VisibilityKindEnum.VK_PUBLIC.equals(element
                             .getVisibility())
@@ -769,9 +775,11 @@
                         results.add(element);
                     }
                 }
+
             }
 
 
+
             /*
              * For a Collaboration:
              * <pre>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to