[435807] Find packages that are still in Descriptor form.
diff --git a/plugins/org.eclipse.ocl.ecore/src/org/eclipse/ocl/ecore/EcoreEnvironment.java b/plugins/org.eclipse.ocl.ecore/src/org/eclipse/ocl/ecore/EcoreEnvironment.java
index b43b0ae..cfb4329 100644
--- a/plugins/org.eclipse.ocl.ecore/src/org/eclipse/ocl/ecore/EcoreEnvironment.java
+++ b/plugins/org.eclipse.ocl.ecore/src/org/eclipse/ocl/ecore/EcoreEnvironment.java
@@ -665,6 +665,27 @@
}
}
}
+ // Bug 435807 For CDO at least, the EPackage may still be in Descriptor form.
+ for (Object next : new ArrayList<Object>(registry.values())) {
+ if (next instanceof EPackage.Descriptor) {
+ EPackage ePackage = ((EPackage.Descriptor) next).getEPackage();
+ if (ePackage != null) {
+
+ // only consider root-level packages when searching by name
+ if ((ePackage.getESuperPackage() == null)
+ && EcoreForeignMethods.isNamed(name, ePackage)) {
+
+ EPackage tentativeResult = findNestedPackage(
+ packageNames.subList(1, packageNames.size()),
+ ePackage);
+
+ if (tentativeResult != null) {
+ return tentativeResult;
+ }
+ }
+ }
+ }
+ }
return findPackageByNSPrefix(packageNames, registry);
}