Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2008-10-02 07:27:44 +0000
committerEike Stepper2008-10-02 07:27:44 +0000
commita15a2df925c78c3e1b7daa7e1375e203e2650790 (patch)
tree5eff7f50d9acd01836f2a4d4cbe0df63cba2578e /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util
parent475975a8f5c04386f87a01a49982e7d50a262930 (diff)
downloadcdo-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')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageRegistryImpl.java1
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CDOPackageTypeRegistryImpl.java47
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;

Back to the top