From 3a07f3fa1239ec029a8be1206a473cdb3c64922c Mon Sep 17 00:00:00 2001
From: Eike Stepper
Date: Thu, 1 Nov 2007 17:21:38 +0000
Subject: [208378] Develop a CDO Migrator Utility
https://bugs.eclipse.org/bugs/show_bug.cgi?id=208378
---
.../META-INF/CDO.MF | 1 +
plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch | 70 ++++++++++----------
plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch | 70 ++++++++++----------
.../src/org/eclipse/emf/cdo/util/CDOUtil.java | 76 ++++++++++++----------
4 files changed, 114 insertions(+), 103 deletions(-)
create mode 100644 plugins/org.eclipse.emf.cdo.tests.model1/META-INF/CDO.MF
diff --git a/plugins/org.eclipse.emf.cdo.tests.model1/META-INF/CDO.MF b/plugins/org.eclipse.emf.cdo.tests.model1/META-INF/CDO.MF
new file mode 100644
index 0000000000..bbfa1b0550
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests.model1/META-INF/CDO.MF
@@ -0,0 +1 @@
+This is a marker file for bundles with CDO native models.
diff --git a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
index 97b251930d..14101303f4 100644
--- a/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
+++ b/plugins/org.eclipse.emf.cdo.ui/CDOClient1.launch
@@ -24,7 +24,7 @@
-
+
@@ -39,8 +39,8 @@
-
+
@@ -53,8 +53,8 @@
-
+
@@ -64,11 +64,11 @@
-
+
-
+
@@ -78,15 +78,15 @@
-
+
-
+
@@ -98,8 +98,8 @@
-
+
@@ -113,11 +113,11 @@
-
+
-
+
@@ -126,17 +126,17 @@
-
-
+
+
-
-
+
+
@@ -147,26 +147,26 @@
-
+
-
+
-
+
-
+
-
+
@@ -177,11 +177,11 @@
-
+
-
+
@@ -207,8 +207,8 @@
-
+
@@ -220,12 +220,12 @@
-
+
-
+
@@ -246,11 +246,11 @@
-
+
-
+
@@ -266,16 +266,16 @@
-
+
-
+
-
+
@@ -293,16 +293,16 @@
-
+
-
+
-
+
@@ -313,10 +313,10 @@
-
-
+
+
@@ -334,8 +334,8 @@
-
+
diff --git a/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch b/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch
index 7d8293a239..e5d8d2e150 100644
--- a/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch
+++ b/plugins/org.eclipse.emf.cdo.ui/CDOClient2.launch
@@ -24,7 +24,7 @@
-
+
@@ -39,8 +39,8 @@
-
+
@@ -53,8 +53,8 @@
-
+
@@ -64,11 +64,11 @@
-
+
-
+
@@ -78,15 +78,15 @@
-
+
-
+
@@ -98,8 +98,8 @@
-
+
@@ -113,11 +113,11 @@
-
+
-
+
@@ -126,17 +126,17 @@
-
-
+
+
-
-
+
+
@@ -147,26 +147,26 @@
-
+
-
+
-
+
-
+
-
+
@@ -177,11 +177,11 @@
-
+
-
+
@@ -207,8 +207,8 @@
-
+
@@ -220,12 +220,12 @@
-
+
-
+
@@ -246,11 +246,11 @@
-
+
-
+
@@ -266,16 +266,16 @@
-
+
-
+
-
+
@@ -293,16 +293,16 @@
-
+
-
+
-
+
@@ -313,10 +313,10 @@
-
-
+
+
@@ -334,8 +334,8 @@
-
+
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
index f84e677245..3bbb4e2928 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java
@@ -18,13 +18,6 @@ import org.eclipse.emf.cdo.internal.protocol.CDOIDImpl;
import org.eclipse.emf.cdo.protocol.CDOID;
import org.eclipse.emf.cdo.protocol.CDOProtocolConstants;
-import org.eclipse.net4j.ConnectorException;
-import org.eclipse.net4j.IConnector;
-import org.eclipse.net4j.signal.IFailOverStrategy;
-import org.eclipse.net4j.util.StringUtil;
-import org.eclipse.net4j.util.container.IManagedContainer;
-import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
@@ -46,10 +39,16 @@ import org.eclipse.emf.internal.cdo.CDOStateMachine;
import org.eclipse.emf.internal.cdo.CDOViewImpl;
import org.eclipse.emf.internal.cdo.InternalCDOObject;
import org.eclipse.emf.internal.cdo.LegacyObjectDisabler;
-import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.protocol.CDOClientProtocolFactory;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
+import org.eclipse.net4j.ConnectorException;
+import org.eclipse.net4j.IConnector;
+import org.eclipse.net4j.signal.IFailOverStrategy;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.container.IManagedContainer;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
@@ -67,8 +66,6 @@ import java.util.Map;
*/
public final class CDOUtil
{
- public static final String EXT_POINT_NAME = "persistent_package";
-
private static Map packageTypes;
public static final String CDO_VERSION_SUFFIX = "-CDO";
@@ -84,43 +81,56 @@ public final class CDOUtil
{
if (packageTypes == null)
{
- packageTypes = new HashMap();
- IExtensionRegistry registry = Platform.getExtensionRegistry();
+ packageTypes = analyzePackageTypes();
+ }
- // Collect native packages
- for (IConfigurationElement element : registry.getConfigurationElementsFor(OM.BUNDLE_ID, EXT_POINT_NAME))
- {
- String uri = element.getAttribute("uri");
- if (!StringUtil.isEmpty(uri) && !uri.equals(EresourcePackage.eINSTANCE.getNsURI()))
- {
- packageTypes.put(uri, CDOPackageType.NATIVE);
- }
- }
+ return packageTypes;
+ }
- // Collect legacy and converted packages
- for (IConfigurationElement element : registry.getConfigurationElementsFor(EcorePlugin.getPlugin().getBundle()
- .getSymbolicName(), EcorePlugin.GENERATED_PACKAGE_PPID))
+ private static HashMap analyzePackageTypes()
+ {
+ HashMap bundles = new HashMap();
+ HashMap result = new HashMap();
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ String ecoreID = EcorePlugin.getPlugin().getBundle().getSymbolicName();
+ String extPoint = EcorePlugin.GENERATED_PACKAGE_PPID;
+ IConfigurationElement[] elements = registry.getConfigurationElementsFor(ecoreID, extPoint);
+ for (IConfigurationElement element : elements)
+ {
+ String uri = element.getAttribute("uri");
+ if (!StringUtil.isEmpty(uri) && !uri.equals(EresourcePackage.eINSTANCE.getNsURI()))
{
- String uri = element.getAttribute("uri");
- if (!StringUtil.isEmpty(uri) && !packageTypes.containsKey(uri)
- && !uri.equals(EresourcePackage.eINSTANCE.getNsURI()))
+ String bundleName = element.getContributor().getName();
+ CDOPackageType packageType = bundles.get(bundleName);
+ if (packageType == null)
{
- String bundleName = element.getContributor().getName();
Bundle bundle = Platform.getBundle(bundleName);
- String version = (String)bundle.getHeaders().get(Constants.BUNDLE_VERSION);
- if (version.endsWith(CDOUtil.CDO_VERSION_SUFFIX))
+ if (bundle.getEntry("META-INF/CDO.MF") != null)
{
- packageTypes.put(uri, CDOPackageType.CONVERTED);
+ packageType = CDOPackageType.NATIVE;
}
else
{
- packageTypes.put(uri, CDOPackageType.LEGACY);
+ String version = (String)bundle.getHeaders().get(Constants.BUNDLE_VERSION);
+ if (version.endsWith(CDOUtil.CDO_VERSION_SUFFIX))
+ {
+ packageType = CDOPackageType.CONVERTED;
+ }
+ else
+ {
+ packageType = CDOPackageType.LEGACY;
+ }
}
+
+ bundles.put(bundleName, packageType);
}
+
+ result.put(uri, packageType);
}
}
- return packageTypes;
+ return result;
}
public static CDOSession openSession(IConnector connector, String repositoryName, boolean disableLegacyObjects,
--
cgit v1.2.3