[jbossws-commits] JBossWS SVN: r3647 - branches/jbossws-2.0/integration/spi/src/main/java/org/jboss/wsf/spi/tools/ant.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Wed Jun 20 06:05:33 EDT 2007


Author: heiko.braun at jboss.com
Date: 2007-06-20 06:05:32 -0400 (Wed, 20 Jun 2007)
New Revision: 3647

Modified:
   branches/jbossws-2.0/integration/spi/src/main/java/org/jboss/wsf/spi/tools/ant/WSProvideTask.java
Log:
Align classloader with trunk version

Modified: branches/jbossws-2.0/integration/spi/src/main/java/org/jboss/wsf/spi/tools/ant/WSProvideTask.java
===================================================================
--- branches/jbossws-2.0/integration/spi/src/main/java/org/jboss/wsf/spi/tools/ant/WSProvideTask.java	2007-06-20 10:04:44 UTC (rev 3646)
+++ branches/jbossws-2.0/integration/spi/src/main/java/org/jboss/wsf/spi/tools/ant/WSProvideTask.java	2007-06-20 10:05:32 UTC (rev 3647)
@@ -35,6 +35,12 @@
 
 import java.io.File;
 import java.io.PrintStream;
+import java.net.URLClassLoader;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.util.StringTokenizer;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * Ant task which invokes provides a Web Service contract and portable JAX-WS wrapper classes.
@@ -161,8 +167,28 @@
    
    private ClassLoader getClasspathLoader(ClassLoader parent)
    {
-		AntClassLoader loader = new AntClassLoader(parent, getProject(), classpath, false);		
-		return loader;
+		AntClassLoader antLoader = new AntClassLoader(parent, getProject(), classpath, false);
+
+		// It's necessary to wrap it into an URLLoader in order to extract that information
+		// within the actual provider impl.
+		// See SunRIProviderImpl for instance
+		List<URL> urls = new ArrayList<URL>();
+		StringTokenizer tok = new StringTokenizer(antLoader.getClasspath(), File.separator);
+		while(tok.hasMoreTokens())
+		{
+			try
+			{
+				urls.add(new URL(tok.nextToken()));
+			}
+			catch (MalformedURLException e)
+			{
+				throw new IllegalArgumentException("Failed to wrap classloader", e);
+			}
+
+		}
+
+		ClassLoader wrapper = new URLClassLoader(urls.toArray(new URL[0]), antLoader);
+		return wrapper;
    }
    
    public void executeNonForked()
@@ -265,4 +291,4 @@
       if (execute.fork(this) != 0)
          throw new BuildException("Could not invoke WSProvideTask", getLocation());
    }
-}
\ No newline at end of file
+}




More information about the jbossws-commits mailing list