Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2008, 2010 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.osgi.launch;
 
 import java.net.*;
 import java.util.*;
The System Bundle implementation for the Equinox Framework.

Since:
3.5
 
 public class Equinox implements Framework {
 	private static final String implName = "org.eclipse.osgi.framework.internal.core.EquinoxLauncher"//$NON-NLS-1$
 	

GuardedBy:
thi
 
 	private Framework impl;
 	private final boolean useSeparateCL;
 	private final Map configuration;
 
 	public Equinox(Map configuration) {
 		if (sm != null)
 		 = FrameworkProperties.inUse();
 		this. = configuration == null ? . : new HashMap(configuration);
 	}
 
 	private Framework createImpl() {
 		if (System.getSecurityManager() == null)
 			return createImpl0();
 		return (Framework) AccessController.doPrivileged(new PrivilegedAction() {
 			public Object run() {
 				return createImpl0();
 			}
 		});
 	}
 
 		try {
 			Class implClazz = getImplClass();
 			Constructor constructor = implClazz.getConstructor(new Class[] {Map.class});
 			return (Frameworkconstructor.newInstance(new Object[] {});
 		} catch (ClassNotFoundException e) {
 		} catch (IllegalAccessException e) {
 			throw new RuntimeException(e.getMessage(), e);
 		} catch (NoSuchMethodException e) {
 			throw new NoSuchMethodError(e.getMessage());
 		} catch (InstantiationException e) {
 			throw new RuntimeException(e.getMessage(), e);
 		} catch (InvocationTargetException e) {
 			throw new RuntimeException(e.getMessage(), e);
 		}
 	}
 
 	private Class getImplClass() throws ClassNotFoundException {
 		ClassLoader thisCL = this.getClass().getClassLoader();
 		if (!( && (thisCL instanceof URLClassLoader)))
 			return Class.forName();
 		URL[] cp = getFrameworkURLs((URLClassLoaderthisCL);
 		EquinoxFWClassLoader fwCL = new EquinoxFWClassLoader(cpthisCL);
 		return fwCL.loadClass();
 	}
 
 	private URL[] getFrameworkURLs(URLClassLoader frameworkLoader) {
 		// use the classpath of the framework class loader
 		URL[] cp = frameworkLoader.getURLs();
 		ArrayList result = new ArrayList(cp.length);
 		for (int i = 0; i < cp.lengthi++) {
 			// need to add only the urls for the framework and any framework fragments
 			InputStream manifest = null;
 			try {
 				if (cp[i].getFile().endsWith("/")) { //$NON-NLS-1$
 				} else {
 					manifest = new URL("jar:" + cp[i].toExternalForm() + "!/" + .......).openStream(); //$NON-NLS-1$ //$NON-NLS-2$
 				}
 				Map headers = ManifestElement.parseBundleManifest(manifestnew Headers(10));
 				String bsnSpec = getValue(headers.);
 				if (bsnSpec == null)
					continue;
				String internalBSN = org.eclipse.osgi.framework.internal.core.Constants.getInternalSymbolicName();
				if (internalBSN.equals(bsnSpec)) {
					// this is the framework
					addDevClassPaths(cp[i], bsnSpecresult);
					result.add(cp[i]);
else {
					if (!isFrameworkFragment(headersinternalBSN))
						continue;
					// this is for a framework extension
					addDevClassPaths(cp[i], bsnSpecresult);
					result.add(cp[i]);
				}
catch (IOException e) {
				continue// no manifest;
catch (BundleException e) {
				continue// bad manifest;
finally {
				if (manifest != null)
					try {
						manifest.close();
catch (IOException e) {
						// ignore
					}
			}
		}
		return (URL[]) result.toArray(new URL[result.size()]);
	}
	private void addDevClassPaths(URL cpString bsnArrayList result) {
		if (!cp.getPath().endsWith("/")) //$NON-NLS-1$
			return;
		String[] devPaths = DevClassPathHelper.getDevClassPath(bsn);
		if (devPaths == null)
			return;
		for (int i = 0; i < devPaths.lengthi++)
			try {
				char lastChar = devPaths[i].charAt(devPaths[i].length() - 1);
				URL url;
				if ((devPaths[i].endsWith(".jar") || (lastChar == '/' || lastChar == '\\'))) //$NON-NLS-1$
					url = new URL(cpdevPaths[i]);
				else
					url = new URL(cpdevPaths[i] + "/"); //$NON-NLS-1$
				result.add(url);
catch (MalformedURLException e) {
				continue;
			}
	}
	private boolean isFrameworkFragment(Map headersString internalBSN) {
		String hostBSN = getValue(headers.);
		return internalBSN.equals(hostBSN) || ..equals(hostBSN);
	}
	private String getValue(Map headersString key) {
		String headerSpec = (Stringheaders.get(key);
		if (headerSpec == null)
			return null;
		ManifestElement[] elements;
		try {
			elements = ManifestElement.parseHeader(keyheaderSpec);
catch (BundleException e) {
			return null;
		}
		if (elements == null)
			return null;
		return elements[0].getValue();
	}
	private synchronized Framework getImpl() {
		if ( == null)
		return ;
	}
	public void init() throws BundleException {
	}
	public FrameworkEvent waitForStop(long timeoutthrows InterruptedException {
		return getImpl().waitForStop(timeout);
	}
	public Enumeration findEntries(String pathString filePatternboolean recurse) {
		return getImpl().findEntries(pathfilePatternrecurse);
	}
	}
	public long getBundleId() {
		return getImpl().getBundleId();
	}
	public URL getEntry(String path) {
		return getImpl().getEntry(path);
	}
	public Enumeration getEntryPaths(String path) {
		return getImpl().getEntryPaths(path);
	}
	public Dictionary getHeaders() {
		return getImpl().getHeaders();
	}
	public Dictionary getHeaders(String locale) {
		return getImpl().getHeaders(locale);
	}
	public long getLastModified() {
	}
	public String getLocation() {
		return getImpl().getLocation();
	}
	}
	public URL getResource(String name) {
		return getImpl().getResource(name);
	}
	public Enumeration getResources(String namethrows IOException {
		return getImpl().getResources(name);
	}
	}
	public int getState() {
		return getImpl().getState();
	}
	public String getSymbolicName() {
	}
	public boolean hasPermission(Object permission) {
		return getImpl().hasPermission(permission);
	}
	public Class loadClass(String namethrows ClassNotFoundException {
		return getImpl().loadClass(name);
	}
	public void start(int optionsthrows BundleException {
		getImpl().start(options);
	}
	public void start() throws BundleException {
	}
	public void stop(int optionsthrows BundleException {
		getImpl().stop(options);
	}
	public void stop() throws BundleException {
	}
	public void uninstall() throws BundleException {
	}
	public void update() throws BundleException {
	}
	public void update(InputStream inthrows BundleException {
	}
	public Map getSignerCertificates(int signersType) {
		return getImpl().getSignerCertificates(signersType);
	}
	public Version getVersion() {
		return getImpl().getVersion();
	}
New to GrepCode? Check out our FAQ X