public BundleResourceClassLoader(Bundle bundle) { super(bundle, BundleResourceHelper.getSearchWiredBundles(true), BundleResourceHelper.getConvertResourceUrls(true)); }
public BundleClassLoader(Bundle bundle, boolean searchWiredBundles, boolean convertResourceUrls) { this.bundle = bundle; this.resourceHelper = new BundleResourceHelper(bundle, searchWiredBundles, convertResourceUrls); }
public URL getResource(String name) { if (convertResourceUrls) { return convertedFindResource(name); } else { return findResource(name); } }
public Enumeration<URL> getResources(String name) throws IOException { if (convertResourceUrls) { return convertedFindResources(name); } else { return findResources(name); } }
protected Enumeration<URL> findResources(String name) throws IOException { Enumeration<URL> e = (Enumeration<URL>) bundle.getResources(name); if (isMetaInfResource(name)) { List<URL> allResources = getList(); addToList(allResources, e); LinkedHashSet<Bundle> wiredBundles = getWiredBundles(); for (Bundle wiredBundle : wiredBundles) { Enumeration<URL> resources = wiredBundle.getResources(name); addToList(allResources, resources); } return Collections.enumeration(allResources); } else if (e == null) { return Collections.enumeration(Collections.<URL>emptyList()); } else if (convertResourceUrls) { List<URL> allResources = getList(); addToList(allResources, e); return Collections.enumeration(allResources); } else { return e; } }
/** * Lookup resources and return converted URLs (in a generic way). * * @param name * @return */ protected Enumeration<URL> convertedFindResources(String name) throws IOException { ServiceReference reference = bundle.getBundleContext().getServiceReference(PackageAdmin.class.getName()); PackageAdmin packageAdmin = (PackageAdmin) bundle.getBundleContext().getService(reference); try { List<URL> resources = findResources(packageAdmin, bundle, name, true); if (isMetaInfResource(name)) { LinkedHashSet<Bundle> wiredBundles = getWiredBundles(); for (Bundle wiredBundle : wiredBundles) { resources.addAll(findResources(packageAdmin, wiredBundle, name, true)); } } return Collections.enumeration(resources); } catch (Exception e) { throw (IOException) new IOException("Error discovering resources: " + e).initCause(e); } finally { bundle.getBundleContext().ungetService(reference); } }
protected URL findResource(String name) { URL resource = bundle.getResource(name); if (resource == null && isMetaInfResource(name)) { LinkedHashSet<Bundle> wiredBundles = getWiredBundles(); Iterator<Bundle> iterator = wiredBundles.iterator(); while (iterator.hasNext() && resource == null) { resource = iterator.next().getResource(name); } } if (resource != null && convertResourceUrls) { resource = convert(resource); } return resource; }
public BundleClassLoader(Bundle bundle, boolean searchWiredBundles) { this(bundle, searchWiredBundles, BundleResourceHelper.getConvertResourceUrls(false)); }
public boolean getSearchWiredBundles() { return resourceHelper.getSearchWiredBundles(); }
public boolean add(URL u) { return super.add(convert(u)); } };
/** * Lookup resource and return converted URL (in a generic way). * * @param name * @return */ protected URL convertedFindResource(String name) { ServiceReference reference = bundle.getBundleContext().getServiceReference(PackageAdmin.class.getName()); PackageAdmin packageAdmin = (PackageAdmin) bundle.getBundleContext().getService(reference); try { List<URL> resources = findResources(packageAdmin, bundle, name, false); if (resources.isEmpty() && isMetaInfResource(name)) { LinkedHashSet<Bundle> wiredBundles = getWiredBundles(); Iterator<Bundle> iterator = wiredBundles.iterator(); while (iterator.hasNext() && resources.isEmpty()) { Bundle wiredBundle = iterator.next(); resources = findResources(packageAdmin, wiredBundle, name, false); } } return (resources.isEmpty()) ? null : resources.get(0); } catch (Exception e) { return null; } finally { bundle.getBundleContext().ungetService(reference); } }
public boolean getConvertResourceUrls() { return resourceHelper.getConvertResourceUrls(); }
public boolean getSearchWiredBundles() { return resourceHelper.getSearchWiredBundles(); }
public BundleResourceHelper(Bundle bundle) { this(bundle, BundleResourceHelper.getSearchWiredBundles(false), BundleResourceHelper.getConvertResourceUrls(false)); }
public boolean getConvertResourceUrls() { return resourceHelper.getConvertResourceUrls(); }
public EquinoxBundleClassLoader(Bundle bundle) { this(bundle, BundleResourceHelper.getSearchWiredBundles(true), BundleResourceHelper.getConvertResourceUrls(true)); }
public BundleClassLoader(Bundle bundle) { this(bundle, BundleResourceHelper.getSearchWiredBundles(true), BundleResourceHelper.getConvertResourceUrls(false)); }
classLoader = new BundleClassLoader(bundle, BundleResourceHelper.getSearchWiredBundles(false), BundleResourceHelper.getConvertResourceUrls(true));