[369492] Fixing migration of enum attributes for static profiles.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
index bbddcb5..fced1d7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2011 IBM Corporation, Embarcadero Technologies, CEA, and others.
+ * Copyright (c) 2005, 2012 IBM Corporation, Embarcadero Technologies, CEA, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -9,7 +9,7 @@
* IBM - initial API and implementation
* Kenn Hussey (Embarcadero Technologies) - 271470
* Kenn Hussey - 323181, 348433
- * Kenn Hussey (CEA) - 327039
+ * Kenn Hussey (CEA) - 327039, 369492
*
* $Id: PackageOperations.java,v 1.41 2010/09/28 21:02:15 khussey Exp $
*/
@@ -24,6 +24,7 @@
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.ECollections;
import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.UniqueEList;
@@ -215,39 +216,50 @@
if (targetEAttribute.isMany()) {
@SuppressWarnings("unchecked")
- EList<EEnumLiteral> copyValues = (EList<EEnumLiteral>) copyEObject
+ EList<Enumerator> copyValues = (EList<Enumerator>) copyEObject
.eGet(targetEAttribute);
if (eAttribute.isMany()) {
@SuppressWarnings("unchecked")
- EList<EEnumLiteral> values = (EList<EEnumLiteral>) eObject
+ EList<Enumerator> values = (EList<Enumerator>) eObject
.eGet(eAttribute);
for (int i = 0, size = values.size(); i < size; i++) {
- EEnumLiteral value = targetEEnum
+ EEnumLiteral targetEEnumLiteral = targetEEnum
.getEEnumLiteral(values.get(i).getName());
- if (value != null) {
- copyValues.add(value);
+ if (targetEEnumLiteral != null) {
+ copyValues
+ .add(targetEEnumLiteral.getInstance());
}
}
} else {
- EEnumLiteral value = targetEEnum
- .getEEnumLiteral(((EEnumLiteral) eObject
- .eGet(eAttribute)).getName());
+ Enumerator value = (Enumerator) eObject
+ .eGet(eAttribute);
if (value != null) {
- copyValues.add(value);
+ EEnumLiteral targetEEnumLiteral = targetEEnum
+ .getEEnumLiteral(value.getName());
+
+ if (targetEEnumLiteral != null) {
+ copyValues
+ .add(targetEEnumLiteral.getInstance());
+ }
}
}
} else {
- EEnumLiteral value = targetEEnum
- .getEEnumLiteral(((EEnumLiteral) (eAttribute.isMany()
- ? ((EList<?>) eObject.eGet(eAttribute)).get(0)
- : eObject.eGet(eAttribute))).getName());
+ Enumerator value = (Enumerator) (eAttribute.isMany()
+ ? ((EList<?>) eObject.eGet(eAttribute)).get(0)
+ : eObject.eGet(eAttribute));
if (value != null) {
- copyEObject.eSet(targetEAttribute, value);
+ EEnumLiteral targetEEnumLiteral = targetEEnum
+ .getEEnumLiteral(value.getName());
+
+ if (targetEEnumLiteral != null) {
+ copyEObject.eSet(targetEAttribute,
+ targetEEnumLiteral.getInstance());
+ }
}
}
}