package org.bundlemaker.core.project.internal.gson; import java.util.HashMap; import java.util.Map; import org.bundlemaker.core.common.classloading.BundleDelegatingClassLoader; import org.bundlemaker.core.common.classloading.CompoundClassLoader; import org.bundlemaker.core.project.internal.ProjectContentProviderExtension; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Platform; import org.osgi.framework.Bundle; /** * <p> * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class ContentProviderCompoundClassLoader { /** - */ private CompoundClassLoader _compoundClassLoader; /** - */ private Map<String, ProjectContentProviderExtension> _idToExtensionMap; /** - */ private Map<String, String> _classnameToIdMap; /** * <p> * Creates a new instance of type {@link ContentProviderCompoundClassLoader}. * </p> * * @throws CoreException */ public ContentProviderCompoundClassLoader() throws CoreException { // _compoundClassLoader = new CompoundClassLoader(); // put self Bundle bundle = Platform.getBundle("org.bundlemaker.core"); _compoundClassLoader.add(new BundleDelegatingClassLoader(bundle)); // _idToExtensionMap = ProjectContentProviderExtension .getAllProjectContentProviderExtension(); // for (ProjectContentProviderExtension extension : _idToExtensionMap.values()) { bundle = Platform.getBundle(extension.getExtension().getContributor().getName()); _compoundClassLoader.add(new BundleDelegatingClassLoader(bundle)); } // _classnameToIdMap = new HashMap<String, String>(); for (ProjectContentProviderExtension extension : _idToExtensionMap.values()) { _classnameToIdMap.put(extension.getClassName(), extension.getId()); } } /** * <p> * </p> * * @return */ public CompoundClassLoader getCompoundClassLoader() { return _compoundClassLoader; } /** * <p> * </p> * * @return */ public Map<String, ProjectContentProviderExtension> getIdToExtensionMap() { return _idToExtensionMap; } /** * <p> * </p> * * @return */ public Map<String, String> getClassnameToIdMap() { return _classnameToIdMap; } }