Author: nthaker
Date: Thu Jun 17 15:25:12 2010
New Revision: 955636
URL: http://svn.apache.org/viewvc?rev=955636&view=rev
Log:
JIRA: AXIS2-4745
Changes to allow reading of Generated artifacts from a cache.
Added:
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/message/databinding/impl/
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/message/databinding/impl/ClassFinderImplTest.java
Modified:
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/ClassFinder.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/ClassFinderImpl.java
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/runtime/description/marshal/impl/ArtifactProcessor.java
Modified:
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java?rev=955636&r1=955635&r2=955636&view=diff
==
---
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
(original)
+++
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/Constants.java
Thu Jun 17 15:25:12 2010
@@ -126,4 +126,8 @@ public interface Constants {
*
*/
public static final String WRITE_HEADER_ELEMENT_IF_NULL =
"jaxws.header.parameter.isNull.write.element.with.xsi.nil";
+/**
+ * This constant will be used to store the location of JAX-WS generated
artifacts cache.
+ */
+public static final String WS_CACHE="wsCache";
}
Modified:
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/ClassFinder.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/ClassFinder.java?rev=955636&r1=955635&r2=955636&view=diff
==
---
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/ClassFinder.java
(original)
+++
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/ClassFinder.java
Thu Jun 17 15:25:12 2010
@@ -39,4 +39,14 @@ public interface ClassFinder {
*/
ArrayList getClassesFromJarFile(String pkg, ClassLoader cl)
throws ClassNotFoundException;
+
+/**
+ * This method will be used to add addition paths to existing classpath.
+ * We may need to add classpath to search for jax-ws wrapper classes that
+ * applicaiton developer did not package.
+ * @param filePath: path of the location where wrapper classes may be
stored.
+ * example a cache folder.
+ * @param cl
+ */
+public void updateClassPath(String filePath, ClassLoader cl) throws
Exception;
}
Modified:
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/ClassFinderImpl.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/ClassFinderImpl.java?rev=955636&r1=955635&r2=955636&view=diff
==
---
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/ClassFinderImpl.java
(original)
+++
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/ClassFinderImpl.java
Thu Jun 17 15:25:12 2010
@@ -30,6 +30,7 @@ import org.apache.commons.logging.LogFac
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.security.PrivilegedActionException;
@@ -166,4 +167,42 @@ public class ClassFinderImpl implements
return cl;
}
+
+/* (non-Javadoc)
+ * @see
org.apache.axis2.jaxws.message.databinding.ClassFinder#updateClassPath(java.lang.String,
java.lang.ClassLoader)
+ */
+public void updateClassPath(final String filePath, final ClassLoader cl)
throws Exception{
+if(filePath == null){
+return;
+}
+if(filePath.length()==0){
+return;
+}
+if(cl instanceof URLClassLoader){
+//lets add the path to the classloader.
+try{
+AccessController.doPrivileged(
+new PrivilegedExceptionAction() {
+public Object run() throws Exception{
+URLClassLoader ucl = (URLClassLoader)cl;
+//convert file path to URL.
+File file = new File(filePath);
+URL url = file.toURI().toURL();
+