diff options
author | Eike Stepper | 2008-10-02 07:27:44 +0000 |
---|---|---|
committer | Eike Stepper | 2008-10-02 07:27:44 +0000 |
commit | a15a2df925c78c3e1b7daa7e1375e203e2650790 (patch) | |
tree | 5eff7f50d9acd01836f2a4d4cbe0df63cba2578e /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util | |
parent | 475975a8f5c04386f87a01a49982e7d50a262930 (diff) | |
download | cdo-a15a2df925c78c3e1b7daa7e1375e203e2650790.tar.gz cdo-a15a2df925c78c3e1b7daa7e1375e203e2650790.tar.xz cdo-a15a2df925c78c3e1b7daa7e1375e203e2650790.zip |
[249383] Dynamic models in the global EPackage.Registry are not committed
https://bugs.eclipse.org/bugs/show_bug.cgi?id=249383
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util')
2 files changed, 31 insertions, 17 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageRegistryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageRegistryImpl.java index ea6216f090..acb80fc76b 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageRegistryImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageRegistryImpl.java @@ -278,6 +278,7 @@ public class CDOPackageRegistryImpl extends EPackageRegistryImpl implements CDOP protected void addEntry(Map.Entry<String, CDOPackageType> entry) { CDOPackageType packageType = entry.getValue(); + // TODO LEGACY if (packageType != CDOPackageType.LEGACY) { String uri = entry.getKey(); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageTypeRegistryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageTypeRegistryImpl.java index 9a8bc2b5ff..6dc36b65fc 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageTypeRegistryImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageTypeRegistryImpl.java @@ -59,10 +59,7 @@ public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CD private CDOPackageTypeRegistryImpl() { - if (OMPlatform.INSTANCE.isOSGiRunning()) - { - initPackageTypes(); - } + activate(); } public void register(EPackage ePackage) @@ -70,21 +67,21 @@ public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CD put(ePackage.getNsURI(), getPackageType(ePackage)); } - public void registerLegacy(String uri) + public void registerLegacy(String packageURI) { - put(uri, CDOPackageType.LEGACY); + put(packageURI, CDOPackageType.LEGACY); } - public void registerNative(String uri) + public void registerNative(String packageURI) { - put(uri, CDOPackageType.NATIVE); + put(packageURI, CDOPackageType.NATIVE); } @Override protected void doActivate() throws Exception { super.doActivate(); - + initPackageTypes(); if (OMPlatform.INSTANCE.isOSGiRunning()) { try @@ -118,9 +115,21 @@ public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CD private void initPackageTypes() { - IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(ECORE_ID, - EcorePlugin.GENERATED_PACKAGE_PPID); - addPackageTypes(elements); + for (Object object : EPackage.Registry.INSTANCE.values()) + { + if (object instanceof EPackage) + { + EPackage ePackage = (EPackage)object; + register(ePackage); + } + } + + if (OMPlatform.INSTANCE.isOSGiRunning()) + { + IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(ECORE_ID, + EcorePlugin.GENERATED_PACKAGE_PPID); + addPackageTypes(elements); + } } private void addPackageTypes(IConfigurationElement[] elements) @@ -129,7 +138,7 @@ public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CD for (IConfigurationElement element : elements) { String uri = element.getAttribute("uri"); - if (!StringUtil.isEmpty(uri) && !uri.equals(EresourcePackage.eINSTANCE.getNsURI())) + if (!StringUtil.isEmpty(uri) && !uri.equals(EresourcePackage.eINSTANCE.getNsURI()) && !containsKey(uri)) { String bundleName = element.getContributor().getName(); CDOPackageType packageType = bundles.get(bundleName); @@ -207,7 +216,7 @@ public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CD } EPackage topLevelPackage = ModelUtil.getTopLevelPackage(ePackage); - EClass eClass = getAnyEClass(topLevelPackage); + EClass eClass = getAnyConcreteEClass(topLevelPackage); if (eClass == null) { return CDOPackageType.LEGACY; @@ -222,19 +231,23 @@ public final class CDOPackageTypeRegistryImpl extends HashMapRegistry<String, CD return CDOPackageType.LEGACY; } - private static EClass getAnyEClass(EPackage ePackage) + private static EClass getAnyConcreteEClass(EPackage ePackage) { for (EClassifier classifier : ePackage.getEClassifiers()) { if (classifier instanceof EClass) { - return (EClass)classifier; + EClass eClass = (EClass)classifier; + if (!(eClass.isAbstract() || eClass.isInterface())) + { + return eClass; + } } } for (EPackage subpackage : ePackage.getESubpackages()) { - EClass eClass = getAnyEClass(subpackage); + EClass eClass = getAnyConcreteEClass(subpackage); if (eClass != null) { return eClass; |