Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2008, 2009 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.internal.composite;
 
 import java.util.*;
 
 
 	// the base adaptor
 	private BaseAdaptor adaptor;
 	// the composite bundle factory service reference
 	// the system bundle context
 	// The composite resolver helpers
 	private final Collection helpers = new ArrayList(0);
 
 	public void addHooks(HookRegistry hookRegistry) {
 		// this is an adaptor hook to register the composite factory and 
 		// to shutdown child frameworks on shutdown
 		hookRegistry.addAdaptorHook(this);
 		// this is a class loading hook in order to create special class loaders for composites
 		hookRegistry.addClassLoadingHook(this);
 	}
 
 	public void addProperties(Properties properties) {
 		// nothing
 	}
 
 		// nothing
 		return null;
 	}

 
 	public void frameworkStart(BundleContext contextthrows BundleException {
 		this. = context;
 		context.addBundleListener(this);
 		addHelpers(context.getBundles());
 		// this is a composite resolve helper registry; add it to the resolver
 		// register this as the composite bundle factory
 		 = context.registerService(new String[] {CompositeBundleFactory.class.getName()}, thisnull);
 	}
 
 	public void frameworkStop(BundleContext context) {
 		// unregister the factory
 		if ( != null)
 		 = null;
 		// stop any child frameworks than may still be running.
 		context.removeBundleListener(this);
 	}
 
 	public void frameworkStopping(BundleContext context) {
 		// nothing
 	}
 
 	public void handleRuntimeError(Throwable error) {
 		// nothing
 	}
 
 	public void initialize(BaseAdaptor initAdaptor) {
 		this. = initAdaptor;
 	}
 
 		// nothing
		return null;
	}
	public boolean matchDNChain(String patternString[] dnChain) {
		// nothing
		return false;
	}
	public CompositeBundle installCompositeBundle(Map frameworkConfigString locationMap compositeManifestthrows BundleException {
		if (sm != null)
			// must have AllPermission to do this
		// make a local copy of the manifest first
		compositeManifest = new HashMap(compositeManifest);
		// make sure the manifest is valid
		CompositeHelper.validateCompositeManifest(compositeManifest);
		try {
			// get an in memory input stream to jar content of the composite we want to install
			InputStream content = CompositeHelper.getCompositeInput(frameworkConfigcompositeManifest);
			CompositeBundle result = (CompositeBundle.installBundle(locationcontent);
			// set the permissions
			CompositeHelper.setCompositePermissions(location);
			return result;
catch (IOException e) {
			throw new BundleException("Error creating composite bundle"e); //$NON-NLS-1$
		}
	}
	private void stopFrameworks() {
		Bundle[] allBundles = .getBundles();
		// stop each child framework
		for (int i = 0; i < allBundles.lengthi++) {
			if (!(allBundles[iinstanceof CompositeBundle))
				continue;
			CompositeBundle composite = (CompositeBundleallBundles[i];
			try {
				Framework child = composite.getCompositeFramework();
				child.stop();
				// need to wait for each child to stop
				child.waitForStop(30000);
				// TODO need to figure out a way to invalid the child
catch (Throwable t) {
				// TODO consider logging
			}
		}
	}
		// Composite bundles implement the resolver helper
		synchronized () {
			if (.size() == 0)
				return null;
			for (Iterator iHelpers = .iterator(); iHelpers.hasNext();) {
				CompositeBase composite = (CompositeBaseiHelpers.next();
				if (composite.getBundleId() == bundle.getBundleId())
					// If we found a resolver helper bundle; return it
					return composite;
			}
			return null;
		}
	}
	public boolean addClassPathEntry(ArrayList cpEntriesString cpClasspathManager hostmanagerBaseData sourcedataProtectionDomain sourcedomain) {
		// nothing
		return false;
	}
	public BaseClassLoader createClassLoader(ClassLoader parentClassLoaderDelegate delegateBundleProtectionDomain domainBaseData dataString[] bundleclasspath) {
			return null;
		// only create composite class loaders for bundles that are of type composite | surrogate
		return new CompositeClassLoader(parentdelegatecompanionDelegatedata);
	}
	public String findLibrary(BaseData dataString libName) {
		// nothing
		return null;
	}
		// nothing
		return null;
	}
	public void initializedClassLoader(BaseClassLoader baseClassLoaderBaseData data) {
		// nothing
	}
	public byte[] processClass(String namebyte[] classbytesClasspathEntry classpathEntryBundleEntry entryClasspathManager manager) {
		// nothing
		return null;
	}
	private void addHelpers(Bundle[] bundles) {
		synchronized () {
			for (int i = 0; i < bundles.lengthi++)
				addHelper(bundles[i]);
		}
	}
	private void addHelper(Bundle bundle) {
		if (!(bundle instanceof CompositeBase))
			return;
		synchronized () {
			if (!.contains(bundle))
				.add(bundle);
		}
	}
	private void removeHelper(Bundle bundle) {
		if (!(bundle instanceof CompositeBase))
			return;
		synchronized () {
			.remove(bundle);
		}
	}
	private void removeAllHelpers() {
		synchronized () {
		}
	}
	public void bundleChanged(BundleEvent event) {
		switch (event.getType()) {
				break;
				break;
			default :
				break;
		}
	}
New to GrepCode? Check out our FAQ X