[491371] An Xcore model with an attribute using AnySimpleType with a
default produces poor code
diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java
index eb4a4e3..001d6a1 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java
+++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenDataTypeImpl.java
@@ -1023,8 +1023,24 @@
for (EDataType eDataType = getEcoreDataType(); eDataType != null; eDataType = extendedMetaData.getBaseType(eDataType))
{
String namespace = extendedMetaData.getNamespace(eDataType);
- if (EcorePackage.eNS_URI.equals(namespace) || XMLTypePackage.eNS_URI.equals(namespace))
+ if (EcorePackage.eNS_URI.equals(namespace))
{
+ if (eDataType.getEPackage() != EcorePackage.eINSTANCE)
+ {
+ return (EDataType)EcorePackage.eINSTANCE.getEClassifier(eDataType.getName());
+
+ }
+
+ return eDataType;
+ }
+
+ if (XMLTypePackage.eNS_URI.equals(namespace))
+ {
+ if (eDataType.getEPackage() != XMLTypePackage.eINSTANCE)
+ {
+ return (EDataType)XMLTypePackage.eINSTANCE.getEClassifier(eDataType.getName());
+ }
+
return eDataType;
}
}