Bug 506564 - ClassCastException below
EMFFormsEditSupportImpl.getEnumLiteral (thrown in Class.cast)

Change-Id: Ia3c75c712eb9f63ffa3c40e89d505acbc6af5b04
Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
diff --git a/bundles/org.eclipse.emfforms.core.services.editsupport/src/org/eclipse/emfforms/internal/core/services/editsupport/EMFFormsEditSupportImpl.java b/bundles/org.eclipse.emfforms.core.services.editsupport/src/org/eclipse/emfforms/internal/core/services/editsupport/EMFFormsEditSupportImpl.java
index b4a19cd..0229d89 100644
--- a/bundles/org.eclipse.emfforms.core.services.editsupport/src/org/eclipse/emfforms/internal/core/services/editsupport/EMFFormsEditSupportImpl.java
+++ b/bundles/org.eclipse.emfforms.core.services.editsupport/src/org/eclipse/emfforms/internal/core/services/editsupport/EMFFormsEditSupportImpl.java
@@ -13,9 +13,9 @@
 
 import org.eclipse.core.databinding.observable.IObserving;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.emf.common.util.Enumerator;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.EcorePackage;
@@ -201,12 +201,11 @@
 
 	private String getEnumLiteral(EStructuralFeature feature, Object element) {
 		final EClassifier featureType = feature.getEType();
+		final String enumName = getEnumName(element);
 		Bundle bundle;
 		try {
 			bundle = bundleResolver.getEditBundle(featureType);
-			final String key = String.format(LITERAL_NAME, featureType.getName(),
-				EEnum.class.cast(featureType).getEEnumLiteralByLiteral(
-					Enum.class.cast(element).toString()).getName());
+			final String key = String.format(LITERAL_NAME, featureType.getName(), enumName);
 			return emfFormsLocalizationService.getString(bundle, key);
 		} catch (final NoBundleFoundException ex) {
 			// do nothing - see bug 467498
@@ -214,6 +213,16 @@
 		return null;
 	}
 
+	private String getEnumName(Object element) {
+		if (Enumerator.class.isInstance(element)) {
+			return Enumerator.class.cast(element).getName();
+		}
+		if (Enum.class.isInstance(element)) {
+			return Enum.class.cast(element).name();
+		}
+		return element.toString();
+	}
+
 	/**
 	 * {@inheritDoc}
 	 *