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.