[162103] Ensuring required stereotypes are automatically applied during migration.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
index 30cb65d..fba5cd0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - initial API and implementation
*
- * $Id: UML22UMLResourceHandler.java,v 1.26.2.4 2006/10/18 18:48:21 khussey Exp $
+ * $Id: UML22UMLResourceHandler.java,v 1.26.2.5 2006/11/17 19:33:23 khussey Exp $
*/
package org.eclipse.uml2.uml.resource;
@@ -116,6 +116,7 @@
import org.eclipse.uml2.uml.ValuePin;
import org.eclipse.uml2.uml.ValueSpecification;
import org.eclipse.uml2.uml.VisibilityKind;
+import org.eclipse.uml2.uml.internal.operations.ElementOperations;
import org.eclipse.uml2.uml.util.UMLSwitch;
import org.eclipse.uml2.uml.util.UMLUtil;
@@ -341,6 +342,8 @@
final Map sendEvents = new HashMap();
final Map receiveEvents = new HashMap();
+ final List packagesRequiringStereotypes = new ArrayList();
+
UMLSwitch umlSwitch = new UMLSwitch() {
public Object caseAction(Action action) {
@@ -1245,11 +1248,12 @@
Profile appliedProfile = profileApplication
.getAppliedProfile();
- if (profileName == null) {
- profileName = appliedProfile.getName();
- }
-
if (appliedProfile != null) {
+
+ if (profileName == null) {
+ profileName = appliedProfile.getName();
+ }
+
EAnnotation eAnnotation = appliedProfile
.getEAnnotation(UMLPackage.eNS_URI);
@@ -1273,6 +1277,17 @@
}
}
}
+
+ org.eclipse.uml2.uml.Package applyingPackage = profileApplication
+ .getApplyingPackage();
+
+ if (applyingPackage != null
+ && !appliedProfile.getOwnedExtensions(true)
+ .isEmpty()) {
+
+ packagesRequiringStereotypes
+ .add(applyingPackage);
+ }
}
}
@@ -1763,5 +1778,11 @@
for (Iterator atr = annotationsToRemove.iterator(); atr.hasNext();) {
((EAnnotation) atr.next()).setEModelElement(null);
}
+
+ for (Iterator prs = packagesRequiringStereotypes.iterator(); prs
+ .hasNext();) {
+
+ ElementOperations.applyAllRequiredStereotypes((Element) prs.next());
+ }
}
}