Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-11-01 17:21:38 +0000
committerEike Stepper2007-11-01 17:21:38 +0000
commit3a07f3fa1239ec029a8be1206a473cdb3c64922c (patch)
tree29a81dfff47fb6bf1794924a64f0fb92892516ce /plugins/org.eclipse.emf.cdo
parent477a1e9b1b213e7e6b816c48fcb71124d99b3c11 (diff)
downloadcdo-3a07f3fa1239ec029a8be1206a473cdb3c64922c.tar.gz
cdo-3a07f3fa1239ec029a8be1206a473cdb3c64922c.tar.xz
cdo-3a07f3fa1239ec029a8be1206a473cdb3c64922c.zip
[208378] Develop a CDO Migrator Utility
https://bugs.eclipse.org/bugs/show_bug.cgi?id=208378
Diffstat (limited to 'plugins/org.eclipse.emf.cdo')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java76
1 files changed, 43 insertions, 33 deletions
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<String, CDOPackageType> packageTypes;
public static final String CDO_VERSION_SUFFIX = "-CDO";
@@ -84,43 +81,56 @@ public final class CDOUtil
{
if (packageTypes == null)
{
- packageTypes = new HashMap<String, CDOPackageType>();
- 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<String, CDOPackageType> analyzePackageTypes()
+ {
+ HashMap<String, CDOPackageType> bundles = new HashMap<String, CDOPackageType>();
+ HashMap<String, CDOPackageType> result = new HashMap<String, CDOPackageType>();
+
+ 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,

Back to the top