diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java')
-rw-r--r-- | bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java b/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java deleted file mode 100644 index 38002a658..000000000 --- a/bundles/org.eclipse.equinox.common/src/org/eclipse/core/internal/runtime/ResourceTranslator.java +++ /dev/null @@ -1,137 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.internal.runtime; - -import java.net.URL; -import java.net.URLClassLoader; -import java.util.*; -import org.eclipse.osgi.util.ManifestElement; -import org.osgi.framework.*; - -/** - * This class can only be used if OSGi plugin is available. - */ -public class ResourceTranslator { - private static final String KEY_PREFIX = "%"; //$NON-NLS-1$ - private static final String KEY_DOUBLE_PREFIX = "%%"; //$NON-NLS-1$ - - public static String getResourceString(Bundle bundle, String value) { - return getResourceString(bundle, value, null); - } - - public static String getResourceString(Bundle bundle, String value, ResourceBundle resourceBundle) { - String s = value.trim(); - if (!s.startsWith(KEY_PREFIX, 0)) - return s; - if (s.startsWith(KEY_DOUBLE_PREFIX, 0)) - return s.substring(1); - - int ix = s.indexOf(' '); - String key = ix == -1 ? s : s.substring(0, ix); - String dflt = ix == -1 ? s : s.substring(ix + 1); - - if (resourceBundle == null && bundle != null) { - try { - resourceBundle = getResourceBundle(bundle); - } catch (MissingResourceException e) { - // just return the default (dflt) - } - } - - if (resourceBundle == null) - return dflt; - - try { - return resourceBundle.getString(key.substring(1)); - } catch (MissingResourceException e) { - //this will avoid requiring a bundle access on the next lookup - return dflt; - } - } - - public static ResourceBundle getResourceBundle(Bundle bundle) throws MissingResourceException { - if (hasRuntime21(bundle)) - return ResourceBundle.getBundle("plugin", Locale.getDefault(), createTempClassloader(bundle)); //$NON-NLS-1$ - return Activator.getDefault().getLocalization(bundle, null); - } - - private static boolean hasRuntime21(Bundle b) { - try { - ManifestElement[] prereqs = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, (String) b.getHeaders("").get(Constants.REQUIRE_BUNDLE)); //$NON-NLS-1$ - if (prereqs == null) - return false; - for (int i = 0; i < prereqs.length; i++) { - if ("2.1".equals(prereqs[i].getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)) && "org.eclipse.core.runtime".equals(prereqs[i].getValue())) { //$NON-NLS-1$//$NON-NLS-2$ - return true; - } - } - } catch (BundleException e) { - return false; - } - return false; - } - - private static ClassLoader createTempClassloader(Bundle b) { - ArrayList classpath = new ArrayList(); - addClasspathEntries(b, classpath); - addBundleRoot(b, classpath); - addDevEntries(b, classpath); - addFragments(b, classpath); - URL[] urls = new URL[classpath.size()]; - return new URLClassLoader((URL[]) classpath.toArray(urls)); - } - - private static void addFragments(Bundle host, ArrayList classpath) { - Activator activator = Activator.getDefault(); - if (activator == null) - return; - Bundle[] fragments = activator.getFragments(host); - if (fragments == null) - return; - - for (int i = 0; i < fragments.length; i++) { - addClasspathEntries(fragments[i], classpath); - addDevEntries(fragments[i], classpath); - } - } - - private static void addClasspathEntries(Bundle b, ArrayList classpath) { - ManifestElement[] classpathElements; - try { - classpathElements = ManifestElement.parseHeader(Constants.BUNDLE_CLASSPATH, (String) b.getHeaders("").get(Constants.BUNDLE_CLASSPATH)); //$NON-NLS-1$ - if (classpathElements == null) - return; - for (int i = 0; i < classpathElements.length; i++) { - URL classpathEntry = b.getEntry(classpathElements[i].getValue()); - if (classpathEntry != null) - classpath.add(classpathEntry); - } - } catch (BundleException e) { - //ignore - } - } - - private static void addBundleRoot(Bundle b, ArrayList classpath) { - classpath.add(b.getEntry("/")); //$NON-NLS-1$ - } - - private static void addDevEntries(Bundle b, ArrayList classpath) { - if (!DevClassPathHelper.inDevelopmentMode()) - return; - - String[] binaryPaths = DevClassPathHelper.getDevClassPath(b.getSymbolicName()); - for (int i = 0; i < binaryPaths.length; i++) { - URL classpathEntry = b.getEntry(binaryPaths[i]); - if (classpathEntry != null) - classpath.add(classpathEntry); - } - } -} |