Author: dims
Date: Thu Oct 20 20:05:28 2005
New Revision: 327078
URL: http://svn.apache.org/viewcvs?rev=327078&view=rev
Log:
Enhance Loader and WSHandler to be able to override the classloader used to
load the classes for PWCallback
Modified:
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
webservices/wss4j/trunk/src/org/apache/ws/security/util/Loader.java
Modified:
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
URL:
http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java?rev=327078&r1=327077&r2=327078&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
(original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
Thu Oct 20 20:05:28 2005
@@ -554,7 +554,7 @@
Class cbClass = null;
CallbackHandler cbHandler = null;
try {
- cbClass = Loader.loadClass(callback);
+ cbClass = Loader.loadClass(getClassLoader(), callback);
} catch (ClassNotFoundException e) {
throw new WSSecurityException("WSHandler: cannot load password
callback class: "
+ callback,
@@ -759,7 +759,7 @@
if (callback != null) {
Class cbClass = null;
try {
- cbClass = Loader.loadClass(callback);
+ cbClass = Loader.loadClass(getClassLoader(), callback);
} catch (ClassNotFoundException e) {
throw new WSSecurityException(
"WSHandler: cannot load password callback class: "
@@ -1014,6 +1014,19 @@
}
}
+ /**
+ * Returns the classloader to be used for loading the callback class
+ *
+ * @return class loader
+ */
+ public ClassLoader getClassLoader() {
+ try {
+ return Loader.getTCL();
+ } catch (Throwable t) {
+ return null;
+ }
+ }
+
public abstract Object getOption(String key);
public abstract Object getProperty(Object msgContext, String key);
Modified: webservices/wss4j/trunk/src/org/apache/ws/security/util/Loader.java
URL:
http://svn.apache.org/viewcvs/webservices/wss4j/trunk/src/org/apache/ws/security/util/Loader.java?rev=327078&r1=327077&r2=327078&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/util/Loader.java
(original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/util/Loader.java Thu Oct
20 20:05:28 2005
@@ -84,8 +84,29 @@
* @throws IllegalAccessException
* @throws InvocationTargetException
*/
- private static ClassLoader getTCL() throws IllegalAccessException,
InvocationTargetException {
+ static public ClassLoader getTCL() throws IllegalAccessException,
InvocationTargetException {
return Thread.currentThread().getContextClassLoader();
+ }
+
+ /**
+ * Try the specified classloader and then fall back to the loadClass
+ * <p/>
+ *
+ * @param cl
+ * @param clazz
+ * @return Class
+ * @throws ClassNotFoundException
+ */
+ static public Class loadClass(ClassLoader loader, String clazz) throws
ClassNotFoundException {
+ try {
+ if(loader != null) {
+ Class c = loader.loadClass(clazz);
+ if (c != null)
+ return c;
+ }
+ } catch (Throwable e) {
+ }
+ return loadClass(clazz);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]