You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by no...@apache.org on 2011/03/18 09:58:21 UTC
svn commit: r1082850 -
/aries/trunk/util/src/main/java/org/apache/aries/util/internal/EquinoxWorker.java
Author: not
Date: Fri Mar 18 08:58:20 2011
New Revision: 1082850
URL: http://svn.apache.org/viewvc?rev=1082850&view=rev
Log:
ARIES-615 Switch to using reflection so the EquinoxWorker works with nested frameworks.
Modified:
aries/trunk/util/src/main/java/org/apache/aries/util/internal/EquinoxWorker.java
Modified: aries/trunk/util/src/main/java/org/apache/aries/util/internal/EquinoxWorker.java
URL: http://svn.apache.org/viewvc/aries/trunk/util/src/main/java/org/apache/aries/util/internal/EquinoxWorker.java?rev=1082850&r1=1082849&r2=1082850&view=diff
==============================================================================
--- aries/trunk/util/src/main/java/org/apache/aries/util/internal/EquinoxWorker.java (original)
+++ aries/trunk/util/src/main/java/org/apache/aries/util/internal/EquinoxWorker.java Fri Mar 18 08:58:20 2011
@@ -18,21 +18,39 @@
*/
package org.apache.aries.util.internal;
-import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
-import org.eclipse.osgi.framework.internal.core.BundleHost;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
+import java.lang.reflect.InvocationTargetException;
+
import org.osgi.framework.Bundle;
public class EquinoxWorker extends DefaultWorker implements FrameworkUtilWorker {
public ClassLoader getClassLoader(Bundle b)
{
- BundleHost host = (BundleHost) b;
- BundleLoaderProxy lp = host.getLoaderProxy();
- BundleLoader bl = (lp == null) ? null : lp.getBasicBundleLoader();
- BundleClassLoader cl = (bl == null) ? null : bl.createClassLoader();
+ ClassLoader result = null;
+ try {
+ Object bundleLoaderProxy = invoke(b, "getLoaderProxy");
+ if (bundleLoaderProxy != null) {
+ Object bundleLoader = invoke(bundleLoaderProxy, "getBasicBundleLoader");
+ if (bundleLoader != null) {
+ Object bundleClassLoader = invoke(bundleLoader, "createClassLoader");
+ if (bundleClassLoader instanceof ClassLoader) {
+ result = (ClassLoader)bundleClassLoader;
+ }
+ }
+ }
+ } catch (IllegalArgumentException e) {
+ } catch (SecurityException e) {
+ } catch (IllegalAccessException e) {
+ } catch (InvocationTargetException e) {
+ } catch (NoSuchMethodException e) {
+ }
- return ((cl instanceof ClassLoader) ? (ClassLoader)cl : null);
+ return result;
+ }
+
+ private Object invoke(Object targetObject, String method) throws IllegalAccessException, InvocationTargetException,
+ NoSuchMethodException
+ {
+ return targetObject.getClass().getDeclaredMethod(method).invoke(targetObject);
}
}