diff options
author | khussey | 2004-11-01 22:23:50 +0000 |
---|---|---|
committer | khussey | 2004-11-01 22:23:50 +0000 |
commit | 268d26ac0d94015811a064055dfaef4c17bd323e (patch) | |
tree | 9ee7d038c3e344d49d79b9cc007fb4f8953d159d | |
parent | 419a871dc7c7afb00b65fcc26d3f3ed91f42c1ef (diff) | |
download | org.eclipse.uml2.git.040612-268d26ac0d94015811a064055dfaef4c17bd323e.tar.gz org.eclipse.uml2.git.040612-268d26ac0d94015811a064055dfaef4c17bd323e.tar.xz org.eclipse.uml2.git.040612-268d26ac0d94015811a064055dfaef4c17bd323e.zip |
https://bugs.eclipse.org/bugs/show_bug.cgi?id=77231build_200411041050
2 files changed, 64 insertions, 26 deletions
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/NamespaceOperations.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/NamespaceOperations.java index ee4c1172..7b523e7e 100644 --- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/NamespaceOperations.java +++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/NamespaceOperations.java @@ -8,7 +8,7 @@ * Contributors: * IBM - Initial API and implementation * - * $Id: NamespaceOperations.java,v 1.7 2004/05/28 05:13:45 khussey Exp $ + * $Id: NamespaceOperations.java,v 1.7.2.1 2004/11/01 22:23:50 khussey Exp $ */ package org.eclipse.uml2.internal.operation; @@ -117,21 +117,22 @@ public final class NamespaceOperations for (Iterator elementImports = namespace.getElementImports().iterator(); elementImports .hasNext();) { - ElementImport elementImport = (ElementImport) elementImports.next(); + PackageableElement importedElement = ((ElementImport) elementImports + .next()).getImportedElement(); - if (null != elementImport.getImportedElement()) { - importedMember.add(elementImport.getImportedElement()); + if (null != importedElement) { + importedMember.add(importedElement); } } for (Iterator packageImports = namespace.getPackageImports().iterator(); packageImports .hasNext();) { - PackageImport packageImport = (PackageImport) packageImports.next(); + org.eclipse.uml2.Package importedPackage = ((PackageImport) packageImports + .next()).getImportedPackage(); - if (null != packageImport.getImportedPackage()) { - importedMember.addAll(packageImport.getImportedPackage() - .visibleMembers()); + if (null != importedPackage) { + importedMember.addAll(importedPackage.visibleMembers()); } } diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/PackageOperations.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/PackageOperations.java index ffe29365..906d9729 100644 --- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/PackageOperations.java +++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/PackageOperations.java @@ -8,7 +8,7 @@ * Contributors: * IBM - Initial API and implementation * - * $Id: PackageOperations.java,v 1.6 2004/05/11 15:24:01 khussey Exp $ + * $Id: PackageOperations.java,v 1.6.2.1 2004/11/01 22:23:50 khussey Exp $ */ package org.eclipse.uml2.internal.operation; @@ -25,9 +25,9 @@ import org.eclipse.uml2.ElementImport; import org.eclipse.uml2.NamedElement; import org.eclipse.uml2.PackageImport; import org.eclipse.uml2.PackageableElement; -import org.eclipse.uml2.util.UML2Validator; import org.eclipse.uml2.UML2Plugin; import org.eclipse.uml2.VisibilityKind; +import org.eclipse.uml2.util.UML2Validator; /** * A static utility class that provides operations related to packages. @@ -72,9 +72,11 @@ public final class PackageOperations || VisibilityKind.PUBLIC_LITERAL.equals(packageImport .getVisibility())) { - return null != packageImport.getImportedPackage() - && packageImport.getImportedPackage().visibleMembers() - .contains(el); + org.eclipse.uml2.Package importedPackage = packageImport + .getImportedPackage(); + + return null != importedPackage + && importedPackage.visibleMembers().contains(el); } } @@ -88,6 +90,21 @@ public final class PackageOperations public static Set visibleMembers(org.eclipse.uml2.Package package_) { Set visibleMembers = new HashSet(); + visibleMembersHelper(package_, visibleMembers); + + for (Iterator allImportedPackages = allImportedPackagesHelper(package_, + new HashSet()).iterator(); allImportedPackages.hasNext();) { + + visibleMembersHelper((org.eclipse.uml2.Package) allImportedPackages + .next(), visibleMembers); + } + + return visibleMembers; + } + + protected static Set visibleMembersHelper( + org.eclipse.uml2.Package package_, Set visibleMembers) { + for (Iterator ownedMembers = package_.getOwnedMembers().iterator(); ownedMembers .hasNext();) { @@ -111,10 +128,21 @@ public final class PackageOperations || VisibilityKind.PUBLIC_LITERAL.equals(elementImport .getVisibility())) { - visibleMembers.add(elementImport.getImportedElement()); + PackageableElement importedElement = elementImport + .getImportedElement(); + + if (null != importedElement) { + visibleMembers.add(importedElement); + } } } + return visibleMembers; + } + + protected static Set allImportedPackagesHelper( + org.eclipse.uml2.Package package_, Set allImportedPackages) { + for (Iterator packageImports = package_.getPackageImports().iterator(); packageImports .hasNext();) { @@ -124,12 +152,21 @@ public final class PackageOperations || VisibilityKind.PUBLIC_LITERAL.equals(packageImport .getVisibility())) { - visibleMembers.addAll(packageImport.getImportedPackage() - .visibleMembers()); + org.eclipse.uml2.Package importedPackage = packageImport + .getImportedPackage(); + + if (null != importedPackage + && !allImportedPackages.contains(importedPackage)) { + + allImportedPackages.add(importedPackage); + + allImportedPackagesHelper(importedPackage, + allImportedPackages); + } } } - return visibleMembers; + return allImportedPackages; } /** @@ -162,15 +199,15 @@ public final class PackageOperations } else { diagnostics .add(new BasicDiagnostic( - Diagnostic.WARNING, - UML2Validator.DIAGNOSTIC_SOURCE, - UML2Validator.PACKAGE__ELEMENTS_PUBLIC_OR_PRIVATE, - UML2Plugin.INSTANCE - .getString( - "_UI_Package_ElementsPublicOrPrivate_diagnostic", //$NON-NLS-1$ - getMessageSubstitutions(context, - ownedElement, package_)), - new Object[] {package_, ownedElement})); + Diagnostic.WARNING, + UML2Validator.DIAGNOSTIC_SOURCE, + UML2Validator.PACKAGE__ELEMENTS_PUBLIC_OR_PRIVATE, + UML2Plugin.INSTANCE + .getString( + "_UI_Package_ElementsPublicOrPrivate_diagnostic", //$NON-NLS-1$ + getMessageSubstitutions(context, + ownedElement, package_)), + new Object[]{package_, ownedElement})); } } } |