Author: rony
Date: Sat Oct 29 17:26:26 2011
New Revision: 1194939
URL: http://svn.apache.org/viewvc?rev=1194939&view=rev
Log:
Resolve issue [#BSF-36]: use context class loader only, if set
Modified:
commons/proper/bsf/trunk/src/main/java/org/apache/bsf/util/ReflectionUtils.java
Modified:
commons/proper/bsf/trunk/src/main/java/org/apache/bsf/util/ReflectionUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/bsf/trunk/src/main/java/org/apache/bsf/util/ReflectionUtils.java?rev=1194939&r1=1194938&r2=1194939&view=diff
==============================================================================
---
commons/proper/bsf/trunk/src/main/java/org/apache/bsf/util/ReflectionUtils.java
(original)
+++
commons/proper/bsf/trunk/src/main/java/org/apache/bsf/util/ReflectionUtils.java
Sat Oct 29 17:26:26 2011
@@ -59,6 +59,9 @@ import org.apache.bsf.util.type.TypeConv
2011-10-29: Rony G. Flatscher, in case an event is not found, create a
user-friendly error message that lists all available event names
+
+ 2011-10-29: Rony G. Flatscher, make sure that the context class loader
+ is used only, if not null
*/
public class ReflectionUtils {
// rgf, 20070921: class loaders that we might need to load classes
@@ -205,6 +208,7 @@ public class ReflectionUtils {
//////////////////////////////////////////////////////////////////////////
+
/**
* Create a bean using given class loader and using the appropriate
* constructor for the given args of the given arg types.
@@ -256,21 +260,23 @@ public class ReflectionUtils {
}
if (cl==null) {
- try { // CTXCL
-
cl=Thread.currentThread().getContextClassLoader().loadClass(className);
- }
- catch (ClassNotFoundException e01) {
+ // load context class loader, only use it, if not null
+ ClassLoader tccl=Thread.currentThread().getContextClassLoader();
+ if (tccl!=null) {
+ try { // CTXCL
+ cl=tccl.loadClass(className);
+ }
+ catch (ClassNotFoundException e01) {}
}
}
-
if (cl==null) { // class not loaded yet
// defined CL
if (cld != bsfManagerDefinedCL) { // if not used already,
attempt to load
cl=bsfManagerDefinedCL.loadClass(className);
}
- else { // already , throw exception
- throw exCTX; // re-throw very first exception
+ else { // classloader was already used, hence re-throw
exception
+ throw exCTX; // re-throw very first exception
}
}
// -----------------------------