Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Lippert2008-10-04 14:13:44 +0000
committerMartin Lippert2008-10-04 14:13:44 +0000
commit0aa12399d7cf7c480df6084043b96d2f07bc34f6 (patch)
treef9314a42640f3c0cb8d16119ba67da0ed4a50f44
parent67ee6f5f27b882ed903c2fbc031b14ee92295e81 (diff)
downloadrt.equinox.bundles-0aa12399d7cf7c480df6084043b96d2f07bc34f6.tar.gz
rt.equinox.bundles-0aa12399d7cf7c480df6084043b96d2f07bc34f6.tar.xz
rt.equinox.bundles-0aa12399d7cf7c480df6084043b96d2f07bc34f6.zip
Bug 229863 - [aspects] replace the manifest rewriting with the new hook
-rw-r--r--bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/SupplementerRegistry.java9
-rw-r--r--bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AbstractAspectJHook.java165
-rw-r--r--bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AspectJStorageHook.java26
-rw-r--r--bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/WeavingLoaderDelegateHook.java186
4 files changed, 294 insertions, 92 deletions
diff --git a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/SupplementerRegistry.java b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/SupplementerRegistry.java
index 481b82a79..6c7b377ac 100644
--- a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/SupplementerRegistry.java
+++ b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/SupplementerRegistry.java
@@ -175,6 +175,15 @@ public class SupplementerRegistry {
return (Bundle[]) result.toArray(new Bundle[result.size()]);
}
+ public Bundle[] getSupplementers(final long bundleID) {
+ final Bundle bundle = this.context.getBundle(bundleID);
+ if (bundle != null) {
+ return getSupplementers(bundle);
+ } else {
+ return null;
+ }
+ }
+
public List getSupplementers(final String symbolicName,
final ManifestElement[] imports, final ManifestElement[] exports) {
List result = Collections.EMPTY_LIST;
diff --git a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AbstractAspectJHook.java b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AbstractAspectJHook.java
index 5cfad2d2d..d12a779d3 100644
--- a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AbstractAspectJHook.java
+++ b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AbstractAspectJHook.java
@@ -59,9 +59,22 @@ public abstract class AbstractAspectJHook implements HookConfigurator,
private SupplementerRegistry supplementerRegistry;
/**
+ * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#addClassPathEntry(java.util.ArrayList,
+ * java.lang.String,
+ * org.eclipse.osgi.baseadaptor.loader.ClasspathManager,
+ * org.eclipse.osgi.baseadaptor.BaseData,
+ * java.security.ProtectionDomain)
+ */
+ public boolean addClassPathEntry(final ArrayList cpEntries,
+ final String cp, final ClasspathManager hostmanager,
+ final BaseData sourcedata, final ProtectionDomain sourcedomain) {
+ return false;
+ }
+
+ /**
* @see org.eclipse.osgi.baseadaptor.HookConfigurator#addHooks(org.eclipse.osgi.baseadaptor.HookRegistry)
*/
- public void addHooks(HookRegistry hooks) {
+ public void addHooks(final HookRegistry hooks) {
if (verbose)
System.err
.println("[org.aspectj.osgi] info adding AspectJ hooks ..."); //$NON-NLS-1$
@@ -73,38 +86,14 @@ public abstract class AbstractAspectJHook implements HookConfigurator,
hooks.addBundleFileWrapperFactoryHook(this);
hooks.addClassLoadingStatsHook(this);
hooks.addStorageHook(new AspectJStorageHook(supplementerRegistry));
+ hooks.addClassLoaderDelegateHook(new WeavingLoaderDelegateHook(
+ supplementerRegistry));
}
/**
- * Their is only one registry for dealing with supplementers available via
- * this accessor method.
- *
- * @return The supplementer registry, guaranteed to be not null
- */
- public SupplementerRegistry getSupplementerRegistry() {
- return this.supplementerRegistry;
- }
-
- /**
- * @see org.eclipse.osgi.baseadaptor.hooks.BundleFileWrapperFactoryHook#wrapBundleFile(org.eclipse.osgi.baseadaptor.bundlefile.BundleFile,
- * java.lang.Object, org.eclipse.osgi.baseadaptor.BaseData, boolean)
- */
- public BundleFile wrapBundleFile(BundleFile bundleFile, Object content,
- BaseData data, boolean base) throws IOException {
- return null;
- }
-
- /**
- * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#addClassPathEntry(java.util.ArrayList,
- * java.lang.String,
- * org.eclipse.osgi.baseadaptor.loader.ClasspathManager,
- * org.eclipse.osgi.baseadaptor.BaseData,
- * java.security.ProtectionDomain)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#addProperties(java.util.Properties)
*/
- public boolean addClassPathEntry(ArrayList cpEntries, String cp,
- ClasspathManager hostmanager, BaseData sourcedata,
- ProtectionDomain sourcedomain) {
- return false;
+ public void addProperties(final Properties properties) {
}
/**
@@ -113,94 +102,89 @@ public abstract class AbstractAspectJHook implements HookConfigurator,
* org.eclipse.osgi.framework.adaptor.BundleProtectionDomain,
* org.eclipse.osgi.baseadaptor.BaseData, java.lang.String[])
*/
- public BaseClassLoader createClassLoader(ClassLoader parent,
- ClassLoaderDelegate delegate, BundleProtectionDomain domain,
- BaseData data, String[] bundleclasspath) {
+ public BaseClassLoader createClassLoader(final ClassLoader parent,
+ final ClassLoaderDelegate delegate,
+ final BundleProtectionDomain domain, final BaseData data,
+ final String[] bundleclasspath) {
return null;
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#findLibrary(org.eclipse.osgi.baseadaptor.BaseData,
- * java.lang.String)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#createFrameworkLog()
*/
- public String findLibrary(BaseData data, String libName) {
+ public FrameworkLog createFrameworkLog() {
return null;
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#getBundleClassLoaderParent()
+ * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#findLibrary(org.eclipse.osgi.baseadaptor.BaseData,
+ * java.lang.String)
*/
- public ClassLoader getBundleClassLoaderParent() {
+ public String findLibrary(final BaseData data, final String libName) {
return null;
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#initializedClassLoader(org.eclipse.osgi.baseadaptor.loader.BaseClassLoader,
- * org.eclipse.osgi.baseadaptor.BaseData)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#frameworkStart(org.osgi.framework.BundleContext)
*/
- public void initializedClassLoader(BaseClassLoader baseClassLoader,
- BaseData data) {
+ public void frameworkStart(final BundleContext context)
+ throws BundleException {
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#processClass(java.lang.String,
- * byte[], org.eclipse.osgi.baseadaptor.loader.ClasspathEntry,
- * org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry,
- * org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#frameworkStop(org.osgi.framework.BundleContext)
*/
- public byte[] processClass(String name, byte[] classbytes,
- ClasspathEntry classpathEntry, BundleEntry entry,
- ClasspathManager manager) {
- return null;
+ public void frameworkStop(final BundleContext context)
+ throws BundleException {
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#addProperties(java.util.Properties)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#frameworkStopping(org.osgi.framework.BundleContext)
*/
- public void addProperties(Properties properties) {
+ public void frameworkStopping(final BundleContext context) {
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#createFrameworkLog()
+ * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#getBundleClassLoaderParent()
*/
- public FrameworkLog createFrameworkLog() {
+ public ClassLoader getBundleClassLoaderParent() {
return null;
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#frameworkStart(org.osgi.framework.BundleContext)
- */
- public void frameworkStart(BundleContext context) throws BundleException {
- }
-
- /**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#frameworkStop(org.osgi.framework.BundleContext)
+ * Their is only one registry for dealing with supplementers available via
+ * this accessor method.
+ *
+ * @return The supplementer registry, guaranteed to be not null
*/
- public void frameworkStop(BundleContext context) throws BundleException {
+ public SupplementerRegistry getSupplementerRegistry() {
+ return this.supplementerRegistry;
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#frameworkStopping(org.osgi.framework.BundleContext)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#handleRuntimeError(java.lang.Throwable)
*/
- public void frameworkStopping(BundleContext context) {
+ public void handleRuntimeError(final Throwable error) {
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#handleRuntimeError(java.lang.Throwable)
+ * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#initialize(org.eclipse.osgi.baseadaptor.BaseAdaptor)
*/
- public void handleRuntimeError(Throwable error) {
+ public void initialize(final BaseAdaptor adaptor) {
}
/**
- * @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#initialize(org.eclipse.osgi.baseadaptor.BaseAdaptor)
+ * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#initializedClassLoader(org.eclipse.osgi.baseadaptor.loader.BaseClassLoader,
+ * org.eclipse.osgi.baseadaptor.BaseData)
*/
- public void initialize(BaseAdaptor adaptor) {
+ public void initializedClassLoader(final BaseClassLoader baseClassLoader,
+ final BaseData data) {
}
/**
* @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#mapLocationToURLConnection(java.lang.String)
*/
- public URLConnection mapLocationToURLConnection(String location)
+ public URLConnection mapLocationToURLConnection(final String location)
throws IOException {
return null;
}
@@ -209,7 +193,7 @@ public abstract class AbstractAspectJHook implements HookConfigurator,
* @see org.eclipse.osgi.baseadaptor.hooks.AdaptorHook#matchDNChain(java.lang.String,
* java.lang.String[])
*/
- public boolean matchDNChain(String pattern, String[] dnChain) {
+ public boolean matchDNChain(final String pattern, final String[] dnChain) {
return false;
}
@@ -218,31 +202,44 @@ public abstract class AbstractAspectJHook implements HookConfigurator,
* java.lang.Class,
* org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
*/
- public void postFindLocalClass(String name, Class clazz,
- ClasspathManager manager) {
+ public void postFindLocalClass(final String name, final Class clazz,
+ final ClasspathManager manager) {
}
/**
* @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingStatsHook#postFindLocalResource(java.lang.String,
* java.net.URL, org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
*/
- public void postFindLocalResource(String name, URL resource,
- ClasspathManager manager) {
+ public void postFindLocalResource(final String name, final URL resource,
+ final ClasspathManager manager) {
}
/**
* @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingStatsHook#preFindLocalClass(java.lang.String,
* org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
*/
- public void preFindLocalClass(String name, ClasspathManager manager)
- throws ClassNotFoundException {
+ public void preFindLocalClass(final String name,
+ final ClasspathManager manager) throws ClassNotFoundException {
}
/**
* @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingStatsHook#preFindLocalResource(java.lang.String,
* org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
*/
- public void preFindLocalResource(String name, ClasspathManager manager) {
+ public void preFindLocalResource(final String name,
+ final ClasspathManager manager) {
+ }
+
+ /**
+ * @see org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook#processClass(java.lang.String,
+ * byte[], org.eclipse.osgi.baseadaptor.loader.ClasspathEntry,
+ * org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry,
+ * org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
+ */
+ public byte[] processClass(final String name, final byte[] classbytes,
+ final ClasspathEntry classpathEntry, final BundleEntry entry,
+ final ClasspathManager manager) {
+ return null;
}
/**
@@ -252,9 +249,19 @@ public abstract class AbstractAspectJHook implements HookConfigurator,
* org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry,
* org.eclipse.osgi.baseadaptor.loader.ClasspathManager)
*/
- public void recordClassDefine(String name, Class clazz, byte[] classbytes,
- ClasspathEntry classpathEntry, BundleEntry entry,
- ClasspathManager manager) {
+ public void recordClassDefine(final String name, final Class clazz,
+ final byte[] classbytes, final ClasspathEntry classpathEntry,
+ final BundleEntry entry, final ClasspathManager manager) {
+ }
+
+ /**
+ * @see org.eclipse.osgi.baseadaptor.hooks.BundleFileWrapperFactoryHook#wrapBundleFile(org.eclipse.osgi.baseadaptor.bundlefile.BundleFile,
+ * java.lang.Object, org.eclipse.osgi.baseadaptor.BaseData, boolean)
+ */
+ public BundleFile wrapBundleFile(final BundleFile bundleFile,
+ final Object content, final BaseData data, final boolean base)
+ throws IOException {
+ return null;
}
}
diff --git a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AspectJStorageHook.java b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AspectJStorageHook.java
index 76a51cdb5..cf6ca6822 100644
--- a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AspectJStorageHook.java
+++ b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/AspectJStorageHook.java
@@ -149,19 +149,19 @@ public class AspectJStorageHook implements StorageHook {
Debug.println("- AspectJStorageHook.initialize() "
+ getSymbolicName() + " supplementers="
+ supplementers);
- if (addRequiredBundles(supplementers)) {
- if (AbstractAspectJHook.verbose)
- System.err
- .println("[org.aspectj.osgi] info supplementing "
- + getSymbolicName()
- + " with "
- + supplementers);
- } else {
- if (AbstractAspectJHook.verbose)
- System.err
- .println("[org.aspectj.osgi] info not supplementing "
- + getSymbolicName());
- }
+ // if (addRequiredBundles(supplementers)) {
+ // if (AbstractAspectJHook.verbose)
+ // System.err
+ // .println("[org.aspectj.osgi] info supplementing "
+ // + getSymbolicName()
+ // + " with "
+ // + supplementers);
+ // } else {
+ // if (AbstractAspectJHook.verbose)
+ // System.err
+ // .println("[org.aspectj.osgi] info not supplementing "
+ // + getSymbolicName());
+ // }
}
} catch (final Exception ex) {
ex.printStackTrace();
diff --git a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/WeavingLoaderDelegateHook.java b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/WeavingLoaderDelegateHook.java
new file mode 100644
index 000000000..8ced7ee0f
--- /dev/null
+++ b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/weaving/hooks/WeavingLoaderDelegateHook.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Martin Lippert 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:
+ * Martin Lippert initial implementation
+ *******************************************************************************/
+
+package org.eclipse.equinox.weaving.hooks;
+
+import java.io.FileNotFoundException;
+import java.net.URL;
+import java.util.Enumeration;
+
+import org.eclipse.equinox.service.weaving.SupplementerRegistry;
+import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
+import org.eclipse.osgi.framework.adaptor.BundleData;
+import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook;
+import org.osgi.framework.Bundle;
+
+/**
+ * This class implements the delegate hook for the class loader to allow
+ * supplemented bundles find types and resources from theirs supplementer
+ * bundles
+ *
+ * This works together with the supplementer registry to handle the
+ * supplementing mechanism. The supplementer registry controls which bundle is
+ * supplemented by which other bundle. This hook implementation uses this
+ * information to broaden type and resource visibility according to the
+ * supplementer registry information.
+ */
+public class WeavingLoaderDelegateHook implements ClassLoaderDelegateHook {
+
+ private final SupplementerRegistry supplementerRegistry;
+
+ /**
+ * Create the hook instance for broaden the visibility according to the
+ * supplementing mechansism.
+ *
+ * @param supplementerRegistry The supplementer registry to be used by this
+ * hook for information retrieval which bundles are supplemented
+ * by which other bundles (needs to not be null)
+ */
+ public WeavingLoaderDelegateHook(
+ final SupplementerRegistry supplementerRegistry) {
+ this.supplementerRegistry = supplementerRegistry;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#postFindClass(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public Class postFindClass(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws ClassNotFoundException {
+ final long bundleID = data.getBundleID();
+ final Bundle[] supplementers = supplementerRegistry
+ .getSupplementers(bundleID);
+ if (supplementers != null) {
+ for (int i = 0; i < supplementers.length; i++) {
+ try {
+ final Class clazz = supplementers[i].loadClass(name);
+ if (clazz != null) {
+ return clazz;
+ }
+ } catch (final ClassNotFoundException e) {
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#postFindLibrary(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public String postFindLibrary(final String name,
+ final BundleClassLoader classLoader, final BundleData data) {
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#postFindResource(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public URL postFindResource(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws FileNotFoundException {
+ final long bundleID = data.getBundleID();
+ final Bundle[] supplementers = supplementerRegistry
+ .getSupplementers(bundleID);
+ if (supplementers != null) {
+ for (int i = 0; i < supplementers.length; i++) {
+ try {
+ final URL resource = supplementers[i].getResource(name);
+ if (resource != null) {
+ return resource;
+ }
+ } catch (final Exception e) {
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#postFindResources(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public Enumeration postFindResources(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws FileNotFoundException {
+ final long bundleID = data.getBundleID();
+ final Bundle[] supplementers = supplementerRegistry
+ .getSupplementers(bundleID);
+ if (supplementers != null) {
+ for (int i = 0; i < supplementers.length; i++) {
+ try {
+ final Enumeration resource = supplementers[i]
+ .getResources(name);
+ if (resource != null) {
+ // TODO: if more than one enumeration is found, we should return all items
+ return resource;
+ }
+ } catch (final Exception e) {
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#preFindClass(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public Class preFindClass(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws ClassNotFoundException {
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#preFindLibrary(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public String preFindLibrary(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws FileNotFoundException {
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#preFindResource(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public URL preFindResource(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws FileNotFoundException {
+ return null;
+ }
+
+ /**
+ * @see org.eclipse.osgi.framework.adaptor.ClassLoaderDelegateHook#preFindResources(java.lang.String,
+ * org.eclipse.osgi.framework.adaptor.BundleClassLoader,
+ * org.eclipse.osgi.framework.adaptor.BundleData)
+ */
+ public Enumeration preFindResources(final String name,
+ final BundleClassLoader classLoader, final BundleData data)
+ throws FileNotFoundException {
+ return null;
+ }
+
+}

Back to the top