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]
