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

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
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>
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.