diff --git a/src/main/org/apache/tools/ant/util/LoaderUtils.java b/src/main/org/apache/tools/ant/util/LoaderUtils.java index eb7f26e90..ff21a189d 100644 --- a/src/main/org/apache/tools/ant/util/LoaderUtils.java +++ b/src/main/org/apache/tools/ant/util/LoaderUtils.java @@ -54,8 +54,6 @@ package org.apache.tools.ant.util; import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.launch.Locator; @@ -65,50 +63,15 @@ import org.apache.tools.ant.launch.Locator; * @author Conor MacNeill */ public class LoaderUtils { - /** The getContextClassLoader method */ - private static Method getContextClassLoader; - /** The setContextClassLoader method */ - private static Method setContextClassLoader; - - // Set up the reflection-based Java2 methods if possible - static { - try { - getContextClassLoader - = Thread.class.getMethod("getContextClassLoader", - new Class[0]); - Class[] setContextArgs = new Class[]{ClassLoader.class}; - setContextClassLoader - = Thread.class.getMethod("setContextClassLoader", - setContextArgs); - } catch (Exception e) { - // ignore any problems accessing the methods - probably JDK 1.1 - } - } - /** - * JDK1.1 compatible access to get the context class loader. Has no - * effect on JDK 1.1 + * Set the context classloader * * @param loader the ClassLoader to be used as the context class loader * on the current thread. */ public static void setContextClassLoader(ClassLoader loader) { - if (setContextClassLoader == null) { - return; - } - - try { - Thread currentThread = Thread.currentThread(); - setContextClassLoader.invoke(currentThread, - new Object[]{loader}); - } catch (IllegalAccessException e) { - throw new BuildException - ("Unexpected IllegalAccessException", e); - } catch (InvocationTargetException e) { - throw new BuildException - ("Unexpected InvocationTargetException", e); - } - + Thread currentThread = Thread.currentThread(); + currentThread.setContextClassLoader(loader); } @@ -119,21 +82,8 @@ public class LoaderUtils { * classloader on the current thread. Returns null on JDK 1.1 */ public static ClassLoader getContextClassLoader() { - if (getContextClassLoader == null) { - return null; - } - - try { - Thread currentThread = Thread.currentThread(); - return (ClassLoader) getContextClassLoader.invoke(currentThread, - new Object[0]); - } catch (IllegalAccessException e) { - throw new BuildException - ("Unexpected IllegalAccessException", e); - } catch (InvocationTargetException e) { - throw new BuildException - ("Unexpected InvocationTargetException", e); - } + Thread currentThread = Thread.currentThread(); + return currentThread.getContextClassLoader(); } /** @@ -143,8 +93,7 @@ public class LoaderUtils { * classloader are available. */ public static boolean isContextLoaderAvailable() { - return getContextClassLoader != null - && setContextClassLoader != null; + return true; } /** @@ -170,7 +119,9 @@ public class LoaderUtils { /** * Find the directory or jar file the class has been loaded from. * - * @return null if we cannot determine the location. + * @param c the class whose location is required. + * @return the file or jar with the class or null if we cannot + * determine the location. * * @since Ant 1.6 */ @@ -181,7 +132,11 @@ public class LoaderUtils { /** * Find the directory or a give resource has been loaded from. * - * @return null if we cannot determine the location. + * @param c the classloader to be consulted for the source + * @param resource the resource whose location is required. + * + * @return the file with the resource source or null if + * we cannot determine the location. * * @since Ant 1.6 */