You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by xu...@apache.org on 2011/08/31 09:37:38 UTC
svn commit: r1163514 - in
/geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util:
BundleClassLoader.java BundleResourceClassLoader.java
equinox/EquinoxBundleClassLoader.java
Author: xuhaihong
Date: Wed Aug 31 07:37:38 2011
New Revision: 1163514
URL: http://svn.apache.org/viewvc?rev=1163514&view=rev
Log:
Revert XBEAN-183 Disable wired bundles search by default
Modified:
geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleClassLoader.java
geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleResourceClassLoader.java
geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/equinox/EquinoxBundleClassLoader.java
Modified: geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleClassLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleClassLoader.java?rev=1163514&r1=1163513&r2=1163514&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleClassLoader.java (original)
+++ geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleClassLoader.java Wed Aug 31 07:37:38 2011
@@ -27,20 +27,20 @@ import org.osgi.framework.Bundle;
import org.osgi.framework.BundleReference;
/**
- * ClassLoader for a {@link Bundle}.
+ * ClassLoader for a {@link Bundle}.
* <br/>
- * In OSGi, resource lookup on resources in the <i>META-INF</i> directory using {@link Bundle#getResource(String)} or
- * {@link Bundle#getResources(String)} does not return the resources found in the wired bundles of the bundle
- * (wired via <i>Import-Package</i> or <i>DynamicImport-Package</i>). This class loader implementation provides
+ * In OSGi, resource lookup on resources in the <i>META-INF</i> directory using {@link Bundle#getResource(String)} or
+ * {@link Bundle#getResources(String)} does not return the resources found in the wired bundles of the bundle
+ * (wired via <i>Import-Package</i> or <i>DynamicImport-Package</i>). This class loader implementation provides
* {@link #getResource(String) and {@link #getResources(String)} methods that do delegate such resource lookups to
- * the wired bundles.
+ * the wired bundles.
* <br/>
- * The URLs returned by {@link Bundle#getResource(String)} or {@link Bundle#getResources(String)} methods are
+ * The URLs returned by {@link Bundle#getResource(String)} or {@link Bundle#getResources(String)} methods are
* OSGi framework specific "bundle" URLs. This sometimes can cause problems with 3rd party libraries
* which do not understand how to interpret the "bundle" URLs. This ClassLoader implementation, if enabled,
* can return <tt>jar</tt> URLs for resources found in embedded jars in the bundle. If a resource is found within a
* directory in the bundle the URL returned for that resource is unconverted.
- *
+ *
* @version $Rev$ $Date$
*/
public class BundleClassLoader extends ClassLoader implements DelegatingBundleReference {
@@ -49,17 +49,17 @@ public class BundleClassLoader extends C
protected final BundleResourceHelper resourceHelper;
public BundleClassLoader(Bundle bundle) {
- this(bundle,
- BundleResourceHelper.getSearchWiredBundles(false),
+ this(bundle,
+ BundleResourceHelper.getSearchWiredBundles(true),
BundleResourceHelper.getConvertResourceUrls(false));
}
-
+
public BundleClassLoader(Bundle bundle, boolean searchWiredBundles) {
- this(bundle,
- searchWiredBundles,
+ this(bundle,
+ searchWiredBundles,
BundleResourceHelper.getConvertResourceUrls(false));
}
-
+
public BundleClassLoader(Bundle bundle, boolean searchWiredBundles, boolean convertResourceUrls) {
this.bundle = bundle;
this.resourceHelper = new BundleResourceHelper(bundle, searchWiredBundles, convertResourceUrls);
@@ -69,7 +69,7 @@ public class BundleClassLoader extends C
public String toString() {
return "[BundleClassLoader] " + bundle;
}
-
+
@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
Class clazz = bundle.loadClass(name);
@@ -78,48 +78,48 @@ public class BundleClassLoader extends C
}
return clazz;
}
-
+
@Override
public URL getResource(String name) {
return resourceHelper.getResource(name);
}
-
+
@Override
public Enumeration<URL> getResources(String name) throws IOException {
return resourceHelper.getResources(name);
}
-
+
@Override
public Enumeration<URL> findResources (String name) throws IOException {
return this.getResources(name);
}
-
+
public void setSearchWiredBundles(boolean search) {
resourceHelper.setSearchWiredBundles(search);
}
-
+
public boolean getSearchWiredBundles() {
return resourceHelper.getSearchWiredBundles();
}
-
+
public void setConvertResourceUrls(boolean convert) {
resourceHelper.setConvertResourceUrls(convert);
}
-
+
public boolean getConvertResourceUrls() {
return resourceHelper.getConvertResourceUrls();
}
-
+
/**
* Return the bundle associated with this classloader.
- *
- * In most cases the bundle associated with the classloader is a regular framework bundle.
+ *
+ * In most cases the bundle associated with the classloader is a regular framework bundle.
* However, in some cases the bundle associated with the classloader is a {@link DelegatingBundle}.
* In such cases, the <tt>unwrap</tt> parameter controls whether this function returns the
* {@link DelegatingBundle} instance or the main application bundle backing with the {@link DelegatingBundle}.
*
- * @param unwrap If true and if the bundle associated with this classloader is a {@link DelegatingBundle},
- * this function will return the main application bundle backing with the {@link DelegatingBundle}.
+ * @param unwrap If true and if the bundle associated with this classloader is a {@link DelegatingBundle},
+ * this function will return the main application bundle backing with the {@link DelegatingBundle}.
* Otherwise, the bundle associated with this classloader is returned as is.
* @return The bundle associated with this classloader.
*/
@@ -129,14 +129,14 @@ public class BundleClassLoader extends C
}
return bundle;
}
-
+
/**
* Return the bundle associated with this classloader.
- *
- * This method calls {@link #getBundle(boolean) getBundle(true)} and therefore always returns a regular
- * framework bundle.
+ *
+ * This method calls {@link #getBundle(boolean) getBundle(true)} and therefore always returns a regular
+ * framework bundle.
* <br><br>
- * Note: Some libraries use {@link BundleReference#getBundle()} to obtain a bundle for the given
+ * Note: Some libraries use {@link BundleReference#getBundle()} to obtain a bundle for the given
* classloader and expect the returned bundle instance to be work with any OSGi API. Some of these API might
* not work if {@link DelegatingBundle} is returned. That is why this function will always return
* a regular framework bundle. See {@link #getBundle(boolean)} for more information.
Modified: geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleResourceClassLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleResourceClassLoader.java?rev=1163514&r1=1163513&r2=1163514&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleResourceClassLoader.java (original)
+++ geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/BundleResourceClassLoader.java Wed Aug 31 07:37:38 2011
@@ -22,18 +22,18 @@ package org.apache.xbean.osgi.bundle.uti
import org.osgi.framework.Bundle;
/**
- * ClassLoader for a {@link Bundle}.
+ * ClassLoader for a {@link Bundle}.
* <br/>
* This ClassLoader implementation extends the {@link BundleClassLoader} and returns resources embedded
- * in jar files in a bundle with <tt>jar</tt> URLs.
- *
+ * in jar files in a bundle with <tt>jar</tt> URLs.
+ *
* @version $Rev$ $Date$
*/
public class BundleResourceClassLoader extends BundleClassLoader {
public BundleResourceClassLoader(Bundle bundle) {
- super(bundle,
- BundleResourceHelper.getSearchWiredBundles(false),
+ super(bundle,
+ BundleResourceHelper.getSearchWiredBundles(true),
BundleResourceHelper.getConvertResourceUrls(true));
}
@@ -41,5 +41,5 @@ public class BundleResourceClassLoader e
public String toString() {
return "[BundleResourceClassLoader] " + bundle;
}
-
+
}
Modified: geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/equinox/EquinoxBundleClassLoader.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/equinox/EquinoxBundleClassLoader.java?rev=1163514&r1=1163513&r2=1163514&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/equinox/EquinoxBundleClassLoader.java (original)
+++ geronimo/xbean/trunk/xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/equinox/EquinoxBundleClassLoader.java Wed Aug 31 07:37:38 2011
@@ -31,36 +31,36 @@ import org.osgi.framework.Bundle;
import org.osgi.framework.BundleReference;
/**
- * ClassLoader for a {@link Bundle}.
+ * ClassLoader for a {@link Bundle}.
* <br/>
* This ClassLoader implementation extends the {@link URLClassLoader} and converts resource "bundle"
- * URLs (found in directories or embedded jar files) into regular <tt>jar</tt> URLs.
+ * URLs (found in directories or embedded jar files) into regular <tt>jar</tt> URLs.
* This ClassLoader implementation will only work on Equinox framework.
- *
+ *
* @version $Rev$ $Date$
*/
public class EquinoxBundleClassLoader extends URLClassLoader implements DelegatingBundleReference {
private final Bundle bundle;
private final BundleResourceHelper resourceHelper;
-
- public EquinoxBundleClassLoader(Bundle bundle) {
- this(bundle,
- BundleResourceHelper.getSearchWiredBundles(false),
+
+ public EquinoxBundleClassLoader(Bundle bundle) {
+ this(bundle,
+ BundleResourceHelper.getSearchWiredBundles(true),
BundleResourceHelper.getConvertResourceUrls(true));
}
-
+
public EquinoxBundleClassLoader(Bundle bundle, boolean searchWiredBundles, boolean convertResourceUrls) {
super(new URL[] {});
this.bundle = bundle;
this.resourceHelper = new EquinoxBundleResourceHelper(bundle, searchWiredBundles, convertResourceUrls);
}
-
+
@Override
public String toString() {
return "[EquinoxBundleClassLoader] " + bundle;
}
-
+
@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
Class clazz = bundle.loadClass(name);
@@ -69,43 +69,43 @@ public class EquinoxBundleClassLoader ex
}
return clazz;
}
-
+
@Override
public URL getResource(String name) {
return resourceHelper.getResource(name);
}
-
+
@Override
public Enumeration<URL> findResources(String name) throws IOException {
return resourceHelper.getResources(name);
}
-
+
public void setSearchWiredBundles(boolean search) {
resourceHelper.setSearchWiredBundles(search);
}
-
+
public boolean getSearchWiredBundles() {
return resourceHelper.getSearchWiredBundles();
}
-
+
public void setConvertResourceUrls(boolean convert) {
resourceHelper.setConvertResourceUrls(convert);
}
-
+
public boolean getConvertResourceUrls() {
return resourceHelper.getConvertResourceUrls();
}
-
+
/**
* Return the bundle associated with this classloader.
- *
- * In most cases the bundle associated with the classloader is a regular framework bundle.
+ *
+ * In most cases the bundle associated with the classloader is a regular framework bundle.
* However, in some cases the bundle associated with the classloader is a {@link DelegatingBundle}.
* In such cases, the <tt>unwrap</tt> parameter controls whether this function returns the
* {@link DelegatingBundle} instance or the main application bundle backing with the {@link DelegatingBundle}.
*
- * @param unwrap If true and if the bundle associated with this classloader is a {@link DelegatingBundle},
- * this function will return the main application bundle backing with the {@link DelegatingBundle}.
+ * @param unwrap If true and if the bundle associated with this classloader is a {@link DelegatingBundle},
+ * this function will return the main application bundle backing with the {@link DelegatingBundle}.
* Otherwise, the bundle associated with this classloader is returned as is.
* @return The bundle associated with this classloader.
*/
@@ -115,14 +115,14 @@ public class EquinoxBundleClassLoader ex
}
return bundle;
}
-
+
/**
* Return the bundle associated with this classloader.
- *
- * This method calls {@link #getBundle(boolean) getBundle(true)} and therefore always returns a regular
- * framework bundle.
+ *
+ * This method calls {@link #getBundle(boolean) getBundle(true)} and therefore always returns a regular
+ * framework bundle.
* <br><br>
- * Note: Some libraries use {@link BundleReference#getBundle()} to obtain a bundle for the given
+ * Note: Some libraries use {@link BundleReference#getBundle()} to obtain a bundle for the given
* classloader and expect the returned bundle instance to be work with any OSGi API. Some of these API might
* not work if {@link DelegatingBundle} is returned. That is why this function will always return
* a regular framework bundle. See {@link #getBundle(boolean)} for more information.
@@ -132,7 +132,7 @@ public class EquinoxBundleClassLoader ex
public Bundle getBundle() {
return getBundle(true);
}
-
+
@Override
public int hashCode() {
return bundle.hashCode();
@@ -149,5 +149,5 @@ public class EquinoxBundleClassLoader ex
EquinoxBundleClassLoader otherBundleClassLoader = (EquinoxBundleClassLoader) other;
return this.bundle == otherBundleClassLoader.bundle;
}
-
+
}