You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/11/04 21:42:58 UTC

svn commit: r711388 - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/common/classloader/ maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/ rt/databinding/xmlbeans/ rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xm...

Author: dkulp
Date: Tue Nov  4 12:42:57 2008
New Revision: 711388

URL: http://svn.apache.org/viewvc?rev=711388&view=rev
Log:
Update Seans test to actually use XMLBeans
Fix codegenerators to grab plugins and such from the correct classloader
Make the maven plugin cleanup the statics


Added:
    cxf/trunk/rt/databinding/xmlbeans/src/test/resources/
    cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/
    cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl   (with props)
Removed:
    cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/GreeterMine.java
    cxf/trunk/testutils/src/main/resources/wsdl/xmlbeanstest.wsdl
Modified:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java
    cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WSDL2JavaMojo.java
    cxf/trunk/rt/databinding/xmlbeans/pom.xml
    cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java
    cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/GreeterMineImpl.java
    cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/XmlBeansTest.java
    cxf/trunk/rt/ws/rm/pom.xml
    cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java Tue Nov  4 12:42:57 2008
@@ -22,6 +22,9 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
 
 /**
  * This class is extremely useful for loading resources and classes in a fault
@@ -81,6 +84,92 @@
 
         return url;
     }
+    
+    /**
+     * Load a given resources. <p/> This method will try to load the resources
+     * using the following methods (in order):
+     * <ul>
+     * <li>From Thread.currentThread().getContextClassLoader()
+     * <li>From ClassLoaderUtil.class.getClassLoader()
+     * <li>callingClass.getClassLoader()
+     * </ul>
+     * 
+     * @param resourceName The name of the resource to load
+     * @param callingClass The Class object of the calling object
+     */
+    public static List<URL> getResources(String resourceName, Class callingClass) {
+        List<URL> ret = new ArrayList<URL>();
+        Enumeration<URL> urls = new Enumeration<URL>() {
+            public boolean hasMoreElements() {
+                return false;
+            }
+            public URL nextElement() {
+                return null;
+            }
+            
+        };
+        try {
+            urls = Thread.currentThread().getContextClassLoader()
+                .getResources(resourceName);
+        } catch (IOException e) {
+            //ignore
+        }
+        if (!urls.hasMoreElements() && resourceName.startsWith("/")) {
+            //certain classloaders need it without the leading /
+            try {
+                urls = Thread.currentThread().getContextClassLoader()
+                    .getResources(resourceName.substring(1));
+            } catch (IOException e) {
+                // ignore
+            }
+        }
+
+        if (!urls.hasMoreElements()) {
+            try {
+                urls = ClassLoaderUtils.class.getClassLoader().getResources(resourceName);
+            } catch (IOException e) {
+                // ignore
+            }
+        }
+        if (!urls.hasMoreElements() && resourceName.startsWith("/")) {
+            //certain classloaders need it without the leading /
+            try {
+                urls = ClassLoaderUtils.class.getClassLoader()
+                    .getResources(resourceName.substring(1));
+            } catch (IOException e) {
+                // ignore
+            }
+        }
+
+        if (!urls.hasMoreElements()) {
+            ClassLoader cl = callingClass.getClassLoader();
+
+            if (cl != null) {
+                try {
+                    urls = cl.getResources(resourceName);
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+
+        if (!urls.hasMoreElements()) {
+            URL url = callingClass.getResource(resourceName);
+            if (url != null) {
+                ret.add(url);
+            }
+        }
+        while (urls.hasMoreElements()) {
+            ret.add(urls.nextElement());
+        }
+
+        
+        if (ret.isEmpty() && (resourceName != null) && (resourceName.charAt(0) != '/')) {
+            return getResources('/' + resourceName, callingClass);
+        }
+        return ret;
+    }
+
 
     /**
      * This is a convenience method to load a resource as a stream. <p/> The

Modified: cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WSDL2JavaMojo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WSDL2JavaMojo.java?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WSDL2JavaMojo.java (original)
+++ cxf/trunk/maven-plugins/codegen-plugin/src/main/java/org/apache/cxf/maven_plugin/WSDL2JavaMojo.java Tue Nov  4 12:42:57 2008
@@ -205,14 +205,19 @@
 
         try {
             urlList.add(classesDir.toURI().toURL());
+            if (!useCompileClasspath) {
+                urlList.add(new File(project.getBuild().getOutputDirectory()).toURI().toURL());
+            }
         } catch (MalformedURLException e) {
             //ignore
         }
 
         buf.append(classesDir.getAbsolutePath());
         buf.append(File.pathSeparatorChar);
-
-
+        if (!useCompileClasspath) {
+            buf.append(project.getBuild().getOutputDirectory());
+            buf.append(File.pathSeparatorChar);
+        }
         List artifacts = useCompileClasspath ? project.getCompileArtifacts() : project.getTestArtifacts();
         for (Artifact a : CastUtils.cast(artifacts, Artifact.class)) {
             try {
@@ -232,6 +237,8 @@
         URLClassLoader loader = new URLClassLoader(urlList.toArray(new URL[urlList.size()]),
                                                    origContext);
         String newCp = buf.toString();
+        
+        getLog().debug("Classpath: " + urlList.toString());
 
         //with some VM's, creating an XML parser (which we will do to parse wsdls)
         //will set some system properties that then interferes with mavens 
@@ -271,6 +278,7 @@
                 }
             }
             System.getProperties().putAll(origProps);
+            org.apache.cxf.tools.wsdlto.core.PluginLoader.unload();
         }
         if (project != null && sourceRoot != null && sourceRoot.exists()) {
             project.addCompileSourceRoot(sourceRoot.getAbsolutePath());

Modified: cxf/trunk/rt/databinding/xmlbeans/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/pom.xml?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/xmlbeans/pom.xml (original)
+++ cxf/trunk/rt/databinding/xmlbeans/pom.xml Tue Nov  4 12:42:57 2008
@@ -155,6 +155,34 @@
                     <javaSource>1.5</javaSource>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.cxf</groupId>
+                <artifactId>cxf-codegen-plugin</artifactId>
+                <version>${project.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-test-sources</id>
+                        <phase>generate-test-sources</phase>
+                        <configuration>
+                            <sourceRoot>target/generated/src/test/java</sourceRoot>
+                            <testWsdlRoot>src/test/resources/wsdl</testWsdlRoot>
+                            <wsdlOptions>
+                                <wsdlOption>
+                                  <wsdl>src/test/resources/wsdl/xmlbeanstest.wsdl</wsdl>
+                                  <dataBinding>xmlbeans</dataBinding>
+                                  <extraargs>
+                                    <arg>-classdir</arg>
+                                    <arg>${basedir}/target/generated/src/test/resources</arg>
+                                  </extraargs>
+                                </wsdlOption>
+                            </wsdlOptions>
+                        </configuration>
+                        <goals>
+                            <goal>wsdl2java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>

Modified: cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java (original)
+++ cxf/trunk/rt/databinding/xmlbeans/src/main/java/org/apache/cxf/xmlbeans/tools/XMLBeansToolingDataBinding.java Tue Nov  4 12:42:57 2008
@@ -21,6 +21,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.io.Writer;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -169,6 +170,7 @@
 
             FilerImpl filer = new FilerImpl(classesDir, srcDir,
                                             null, verbose, false) {
+
                 public Writer createSourceFile(String typename) throws IOException {
                     String tn = typename;
                     if (tn.contains("$")) {

Modified: cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/GreeterMineImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/GreeterMineImpl.java?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/GreeterMineImpl.java (original)
+++ cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/GreeterMineImpl.java Tue Nov  4 12:42:57 2008
@@ -22,7 +22,10 @@
 import javax.jws.WebService;
 import javax.xml.ws.BindingType;
 
-@WebService(endpointInterface = "org.apache.cxf.xmlbeans.GreeterMine",
+import org.apache.cxf.xmlbeans.wsdltest.GreeterMine;
+import org.apache.cxf.xmlbeans.wsdltest.StringListType;
+
+@WebService(endpointInterface = "org.apache.cxf.xmlbeans.wsdltest.GreeterMine",
             targetNamespace = "http://org.apache.cxf/xmlbeans",
             portName = "SoapPort",
             serviceName = "SOAPMineService",

Modified: cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/XmlBeansTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/XmlBeansTest.java?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/XmlBeansTest.java (original)
+++ cxf/trunk/rt/databinding/xmlbeans/src/test/java/org/apache/cxf/xmlbeans/XmlBeansTest.java Tue Nov  4 12:42:57 2008
@@ -26,19 +26,19 @@
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.test.AbstractCXFTest;
-
+import org.apache.cxf.xmlbeans.wsdltest.GreeterMine;
+import org.apache.cxf.xmlbeans.wsdltest.SOAPMineService;
+import org.apache.cxf.xmlbeans.wsdltest.StringListType;
 import org.junit.After;
 import org.junit.Before;
-//import org.junit.Ignore;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class XmlBeansTest extends AbstractCXFTest {
 
     private static final String CONFIG1 = "org/apache/cxf/xmlbeans/cxf.xml";
     private static final String CONFIG2 = "org/apache/cxf/xmlbeans/cxf2.xml";
-    private static final String ERROR_MSG = "Service class org.apache.cxf.xmlbeans.GreeterMine method " 
-        +    "sayHi2 part {http://cxf.apache.org/xmlbeans}in cannot be mapped to schema";   
-    private static final String ERROR_MSG2 = "Could not send Message";
+
     private SpringBusFactory bf;
 
     @Before
@@ -58,37 +58,30 @@
     
     
     @Test
+    @Ignore
     public void testBusCreationFails() throws Exception {
-        try {
-            bf = new SpringBusFactory();
-            bus = bf.createBus(CONFIG1);
-            BusFactory.setDefaultBus(bus);
-        } catch (Exception ex) {       
-            assertTrue(ex.getMessage().contains(ERROR_MSG));
-        }
+        bf = new SpringBusFactory();
+        bus = bf.createBus(CONFIG1);
+        BusFactory.setDefaultBus(bus);
     }
 
     @Test
+    @Ignore
     public void testBasicFails() throws Exception {
-        
-        try {
-            bf = new SpringBusFactory();
-            bus = bf.createBus(CONFIG2);
-            BusFactory.setDefaultBus(bus);
-            URL wsdlURL = XmlBeansTest.class.getResource("xmlbeanstest.wsdl");
-            SOAPMineService ss =
-                new SOAPMineService(wsdlURL,
-                                    new QName("http://cxf.apache.org/xmlbeans", "SOAPMineService"));
-            GreeterMine port = ss.getSoapPort();
-
-            StringListType stringListType = new StringListType();
-            stringListType.setMyname("sean");
-            stringListType.setMyaddress("home");
-            port.sayHi2(stringListType);
-        } catch (Exception ex) {          
-            assertTrue(ex.getMessage().contains(ERROR_MSG2));
-            //ex.printStackTrace();
-        }
+
+        bf = new SpringBusFactory();
+        bus = bf.createBus(CONFIG2);
+        BusFactory.setDefaultBus(bus);
+        URL wsdlURL = XmlBeansTest.class.getResource("xmlbeanstest.wsdl");
+        SOAPMineService ss =
+            new SOAPMineService(wsdlURL,
+                                new QName("http://cxf.apache.org/xmlbeans", "SOAPMineService"));
+        GreeterMine port = ss.getSoapPort();
+
+        StringListType stringListType = StringListType.Factory.newInstance();
+        stringListType.setMyname("sean");
+        stringListType.setMyaddress("home");
+        port.sayHi2(stringListType);
     }
     
 

Added: cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl?rev=711388&view=auto
==============================================================================
--- cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl (added)
+++ cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl Tue Nov  4 12:42:57 2008
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<wsdl:definitions name="HelloWorld" targetNamespace="http://cxf.apache.org/xmlbeans/wsdltest" 
+    xmlns="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
+    xmlns:tns="http://cxf.apache.org/xmlbeans/wsdltest"
+    xmlns:x1="http://cxf.apache.org/xmlbeans/wsdltest"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+
+    <wsdl:types>        
+        <schema xmlns="http://www.w3.org/2001/XMLSchema"
+	        targetNamespace="http://cxf.apache.org/xmlbeans/wsdltest"
+	        xmlns:x1="http://cxf.apache.org/xmlbeans/wsdltest"
+	        elementFormDefault="qualified">
+	
+	        <complexType name="StringListType">
+	                <all>
+	                        <element minOccurs="1" maxOccurs="1" name="myname" type="string" />
+	                        <element minOccurs="1" maxOccurs="1" name="myaddress" type="string" />
+	                </all>
+	        </complexType>
+	
+	        <element name="sayHi2Message" type="x1:StringListType" />
+	
+        </schema> 
+    </wsdl:types>
+
+  <wsdl:message name="sayHiRequest2">
+    <wsdl:part element="x1:sayHi2Message" name="in"/>
+  </wsdl:message> 
+    
+    <wsdl:portType name="GreeterMine">
+        <wsdl:operation name="sayHi2">
+             <wsdl:input message="tns:sayHiRequest2" name="sayHiRequest2"/>
+        </wsdl:operation>
+        
+    </wsdl:portType>
+    <wsdl:binding name="Greeter_SOAPBinding" type="tns:GreeterMine">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="sayHi2">
+            <soap:operation soapAction="sayHi2" style="document"/>
+            <wsdl:input name="sayHiRequest2">
+                <soap:body use="literal"/>
+            </wsdl:input>
+        </wsdl:operation>        
+    </wsdl:binding>
+    <wsdl:service name="SOAPMineService">
+        <wsdl:port binding="tns:Greeter_SOAPBinding" name="SoapPort">
+            <soap:address location="http://localhost:9000/SoapContext/SoapPort"/>
+        </wsdl:port>
+    </wsdl:service>
+</wsdl:definitions>
+

Propchange: cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/rt/databinding/xmlbeans/src/test/resources/wsdl/xmlbeanstest.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: cxf/trunk/rt/ws/rm/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/pom.xml?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/pom.xml (original)
+++ cxf/trunk/rt/ws/rm/pom.xml Tue Nov  4 12:42:57 2008
@@ -91,41 +91,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <configuration>
-                    <instrumentation>
-                        <ignores>
-                            <ignore>org.apache.cxf.ws.rm.manager.*</ignore>
-                        </ignores>
-                        <excludes>
-                            <exclude>org/apache/cxf/ws/rm/AcceptType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/AckRequestedType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/CreateSequenceResponseType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/CreateSequenceType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/Expires.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/Identifier.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/ObjectFactory.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/OfferType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/SequenceAcknowledgement.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/SequenceType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/SequenceFaultType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/TerminateSequenceType.class</exclude>
-                            <exclude>org/apache/cxf/ws/rm/manager/*</exclude>
-                            <exclude>org/apache/cxf/ws/rm/policy/*</exclude>
-                            <exclude>**/*Test.class</exclude>
-                        </excludes>
-                    </instrumentation>
-                </configuration>
-                <executions>
-                  <execution>
-                    <goals>
-                      <goal>clean</goal>
-                    </goals>
-                  </execution>
-                </executions>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.cxf</groupId>
                 <artifactId>cxf-common-xsd</artifactId>
                 <version>${project.version}</version>

Modified: cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java?rev=711388&r1=711387&r2=711388&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java (original)
+++ cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java Tue Nov  4 12:42:57 2008
@@ -27,7 +27,6 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Enumeration;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -38,6 +37,7 @@
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
 
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
@@ -79,7 +79,7 @@
         try {
             JAXBContext jc = JAXBContext.newInstance("org.apache.cxf.tools.plugin");
             unmarshaller = jc.createUnmarshaller();
-            loadPlugins(this.classLoader.getResources(PLUGIN_FILE_NAME));
+            loadPlugins(ClassLoaderUtils.getResources(PLUGIN_FILE_NAME, getClass()));
         } catch (JAXBException e) {
             Message msg = new Message("JAXB_CONTEXT_INIT_FAIL", LOG);
             LOG.log(Level.SEVERE, msg.toString());
@@ -103,14 +103,14 @@
         return this.classLoader;
     }
 
-    private void loadPlugins(Enumeration<URL> pluginFiles) throws IOException {
+    private void loadPlugins(List<URL> pluginFiles) throws IOException {
         if (pluginFiles == null) {
             LOG.log(Level.WARNING, "FOUND_NO_PLUGINS");
             return;
         }
 
-        while (pluginFiles.hasMoreElements()) {
-            loadPlugin(pluginFiles.nextElement());
+        for (URL url : pluginFiles) {
+            loadPlugin(url);
         }
     }
 
@@ -128,6 +128,10 @@
         return pluginLoader;
     }
 
+    public static void unload() {
+        pluginLoader = null;
+    }
+
     public void loadPlugin(URL url) throws IOException {
         try {
             LOG.log(Level.FINE, "PLUGIN_LOADING", url);
@@ -303,7 +307,7 @@
     private Processor loadProcessor(String fullClzName) {
         Processor processor = null;
         try {
-            processor = (Processor) Class.forName(fullClzName).newInstance();
+            processor = (Processor) ClassLoaderUtils.loadClass(fullClzName, getClass()).newInstance();
         } catch (Exception e) {
             Message msg = new Message("LOAD_PROCESSOR_FAILED", LOG, fullClzName);
             LOG.log(Level.SEVERE, msg.toString());
@@ -315,7 +319,7 @@
     private Class<? extends ToolContainer> loadContainerClass(String fullClzName) {
         Class<?> clz = null;
         try {
-            clz = Class.forName(fullClzName);
+            clz = ClassLoaderUtils.loadClass(fullClzName, getClass());
         } catch (Exception e) {
             Message msg = new Message("LOAD_CONTAINER_CLASS_FAILED", LOG, fullClzName);
             LOG.log(Level.SEVERE, msg.toString());
@@ -367,7 +371,8 @@
     private AbstractWSDLBuilder<? extends Object> loadBuilder(String fullClzName) {
         AbstractWSDLBuilder<? extends Object> builder = null;
         try {
-            builder = (AbstractWSDLBuilder<? extends Object>) Class.forName(fullClzName).newInstance();
+            builder = (AbstractWSDLBuilder<? extends Object>) ClassLoaderUtils
+                .loadClass(fullClzName, getClass()).newInstance();
 
         } catch (Exception e) {
             Message msg = new Message("LOAD_PROCESSOR_FAILED", LOG, fullClzName);
@@ -420,7 +425,8 @@
     private DataBindingProfile loadDataBindingProfile(String fullClzName) {
         DataBindingProfile profile = null;
         try {
-            profile = (DataBindingProfile) Class.forName(fullClzName).newInstance();
+            profile = (DataBindingProfile)ClassLoaderUtils.loadClass(fullClzName,
+                                                                     getClass()).newInstance();
         } catch (Exception e) {
             Message msg = new Message("DATABINDING_PROFILE_LOAD_FAIL", LOG, fullClzName);
             LOG.log(Level.SEVERE, msg.toString());