diff options
author | Eike Stepper | 2007-11-01 17:21:38 +0000 |
---|---|---|
committer | Eike Stepper | 2007-11-01 17:21:38 +0000 |
commit | 3a07f3fa1239ec029a8be1206a473cdb3c64922c (patch) | |
tree | 29a81dfff47fb6bf1794924a64f0fb92892516ce /plugins/org.eclipse.emf.cdo | |
parent | 477a1e9b1b213e7e6b816c48fcb71124d99b3c11 (diff) | |
download | cdo-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.java | 76 |
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, |