You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2017/04/21 02:04:48 UTC

[7/8] cxf git commit: add several tests back

add several tests back


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/9cffee53
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/9cffee53
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/9cffee53

Branch: refs/heads/master
Commit: 9cffee539adc2abd5eaf198e16fde082ca4b3e92
Parents: ebd1c24
Author: Freeman Fang <fr...@gmail.com>
Authored: Wed Apr 19 14:35:53 2017 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Wed Apr 19 14:35:53 2017 +0800

----------------------------------------------------------------------
 .../systest/ws/rm/WSRMPolicyResolveTest.java    |  52 ++
 .../systest/ws/policy/RM10PolicyWsdlTest.java   | 148 +++
 .../tools/wadlto/jaxrs/JAXRSContainerTest.java  | 921 +++++++++++++++++++
 3 files changed, 1121 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/9cffee53/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRMPolicyResolveTest.java
----------------------------------------------------------------------
diff --git a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRMPolicyResolveTest.java b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRMPolicyResolveTest.java
new file mode 100644
index 0000000..6907c67
--- /dev/null
+++ b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRMPolicyResolveTest.java
@@ -0,0 +1,52 @@
+/**
+ * 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.
+ */
+package org.apache.cxf.systest.ws.rm;
+
+
+import org.apache.cxf.test.AbstractCXFSpringTest;
+import org.apache.cxf.testutil.common.TestUtil;
+
+import org.junit.Test;
+
+import org.springframework.context.support.GenericApplicationContext;
+
+
+
+//CXF-4875
+public class WSRMPolicyResolveTest extends AbstractCXFSpringTest {
+    public static final String PORT = TestUtil.getPortNumber(WSRMPolicyResolveTest.class);
+    /** {@inheritDoc}*/
+    @Override
+    protected void additionalSpringConfiguration(GenericApplicationContext context) throws Exception {
+    }
+    
+    @Test
+    public void testHello() throws Exception {
+        BasicDocEndpoint port = getApplicationContext().getBean("TestClient",
+                  BasicDocEndpoint.class);
+        Object retObj = port.echo("Hello");
+        assertEquals("Hello", retObj);
+    }
+
+    /** {@inheritDoc}*/
+    @Override
+    protected String[] getConfigLocations() {
+        return new String[] {"classpath:/org/apache/cxf/systest/ws/rm/wsrm-policy-resolve.xml" };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/9cffee53/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/RM10PolicyWsdlTest.java
----------------------------------------------------------------------
diff --git a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/RM10PolicyWsdlTest.java b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/RM10PolicyWsdlTest.java
new file mode 100644
index 0000000..b19536f
--- /dev/null
+++ b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/RM10PolicyWsdlTest.java
@@ -0,0 +1,148 @@
+/**
+ * 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.
+ */
+
+package org.apache.cxf.systest.ws.policy;
+
+import java.io.Closeable;
+import java.util.logging.Logger;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.greeter_control.Greeter;
+import org.apache.cxf.greeter_control.PingMeFault;
+import org.apache.cxf.greeter_control.ReliableGreeterService;
+import org.apache.cxf.systest.ws.util.ConnectionHelper;
+import org.apache.cxf.systest.ws.util.MessageFlow;
+import org.apache.cxf.testutil.common.TestUtil;
+import org.apache.cxf.testutil.recorders.MessageRecorder;
+import org.apache.cxf.ws.rm.RM10Constants;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Tests the use of the WS-Policy Framework to automatically engage WS-RM 1.0 in response to Policies defined for the
+ * endpoint via an direct attachment to the wsdl.
+ */
+public class RM10PolicyWsdlTest extends RMPolicyWsdlTestBase {
+    
+    public static final String PORT = allocatePort(Server.class);
+    
+    private static final Logger LOG = LogUtils.getLogger(RM10PolicyWsdlTest.class);
+    
+    public static class Server extends ServerBase {
+        
+        public static void main(String[] args) {
+            try { 
+                Server s = new Server(); 
+                s.start();
+            } catch (Exception ex) {
+                ex.printStackTrace();
+                System.exit(-1);
+            } finally { 
+                System.out.println("done!");
+            }
+        }
+
+        @Override
+        protected String getConfigPath() {
+            return "org/apache/cxf/systest/ws/policy/rm10wsdl_server.xml";
+        }
+    }
+    
+    
+    @BeforeClass
+    public static void startServers() throws Exception {
+        TestUtil.getNewPortNumber("decoupled");
+        assertTrue("server did not launch correctly", launchServer(Server.class, true));
+    }
+         
+    @Test
+    public void testUsingRM() throws Exception {
+        setUpBus(PORT);
+        ReliableGreeterService gs = new ReliableGreeterService();
+        Greeter greeter = gs.getGreeterPort();
+        updateAddressPort(greeter, PORT);
+        LOG.fine("Created greeter client.");
+
+        ConnectionHelper.setKeepAliveConnection(greeter, true);
+
+
+        // two-way
+
+        assertEquals("CXF", greeter.greetMe("cxf")); 
+
+        // oneway
+
+        greeter.greetMeOneWay("CXF");
+     
+        // exception
+
+        try {
+            greeter.pingMe();
+        } catch (PingMeFault ex) {
+            fail("First invocation should have succeeded.");
+        } 
+       
+        try {
+            greeter.pingMe();
+            fail("Expected PingMeFault not thrown.");
+        } catch (PingMeFault ex) {
+            assertEquals(2, ex.getFaultInfo().getMajor());
+            assertEquals(1, ex.getFaultInfo().getMinor());
+        } 
+
+        MessageRecorder mr = new MessageRecorder(outRecorder, inRecorder);
+        mr.awaitMessages(5, 4, 5000);
+//        mr.awaitMessages(5, 9, 5000);
+
+        MessageFlow mf = new MessageFlow(outRecorder.getOutboundMessages(),
+                                         inRecorder.getInboundMessages(),
+                                         "http://schemas.xmlsoap.org/ws/2004/08/addressing",
+                                         "http://schemas.xmlsoap.org/ws/2005/02/rm");
+        
+        
+        mf.verifyMessages(5, true);
+        String[] expectedActions = new String[] {RM10Constants.INSTANCE.getCreateSequenceAction(), 
+                                                 GREETME_ACTION, 
+                                                 GREETMEONEWAY_ACTION,
+                                                 PINGME_ACTION,
+                                                 PINGME_ACTION};
+        mf.verifyActions(expectedActions, true);
+        mf.verifyMessageNumbers(new String[] {null, "1", "2", "3", "4"}, true);
+        mf.verifyLastMessage(new boolean[] {false, false, false, false, false}, true);
+        mf.verifyAcknowledgements(new boolean[] {false, false, true, false, true}, true);
+
+        mf.verifyMessages(4, false);
+//        mf.verifyMessages(9, false);
+//        mf.verifyPartialResponses(5);      
+//        mf.purgePartialResponses();
+
+        expectedActions = new String[] {
+            RM10Constants.INSTANCE.getCreateSequenceResponseAction(),
+            GREETME_RESPONSE_ACTION,
+            PINGME_RESPONSE_ACTION,
+            GREETER_FAULT_ACTION
+        };
+        mf.verifyActions(expectedActions, false);
+        mf.verifyMessageNumbers(new String[] {null, "1", "2", "3"}, false);
+        mf.verifyLastMessage(new boolean[] {false, false, false, false}, false);
+        mf.verifyAcknowledgements(new boolean[] {false, true, true, true}, false);
+        ((Closeable)greeter).close();
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/9cffee53/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
----------------------------------------------------------------------
diff --git a/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
new file mode 100644
index 0000000..21d7dbb
--- /dev/null
+++ b/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
@@ -0,0 +1,921 @@
+/**
+ * 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.
+ */
+
+package org.apache.cxf.tools.wadlto.jaxrs;
+
+import java.io.File;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.List;
+
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+
+import org.apache.cxf.helpers.FileUtils;
+import org.apache.cxf.jaxrs.ext.multipart.Multipart;
+import org.apache.cxf.tools.common.ProcessorTestBase;
+import org.apache.cxf.tools.common.ToolContext;
+import org.apache.cxf.tools.wadlto.WadlToolConstants;
+
+import org.junit.Test;
+
+public class JAXRSContainerTest extends ProcessorTestBase {
+
+    @Test
+    public void testNoTargetNamespace() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceSchemaNoTargetNamespace.xml"));
+            context.put(WadlToolConstants.CFG_SCHEMA_PACKAGENAME, "=custom");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\.class" + "$");
+            assertEquals(3, files.size());
+            assertTrue(checkContains(files, "application" + ".Resource.class"));
+            assertTrue(checkContains(files, "custom" + ".TestCompositeObject.class"));
+            assertTrue(checkContains(files, "custom" + ".ObjectFactory.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenInterfaces() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_MEDIA_TYPE_MAP,
+                        "application/xml=javax.xml.transform.Source");
+            context.put(WadlToolConstants.CFG_MEDIA_TYPE_MAP,
+                        "multipart/form-data=org.apache.cxf.jaxrs.ext.multipart.MultipartBody");
+            context.put(WadlToolConstants.CFG_NO_VOID_FOR_EMPTY_RESPONSES, "true");
+            context.put(WadlToolConstants.CFG_GENERATE_RESPONSE_IF_HEADERS_SET, "true");
+            context.put(WadlToolConstants.CFG_GENERATE_RESPONSE_FOR_METHODS, "getName");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+            verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testInheritParameters() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/test.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+            context.put(WadlToolConstants.CFG_SCHEMA_TYPE_MAP,
+                        "{http://www.w3.org/2001/XMLSchema}anyType="
+                        + "java.io.InputStream");
+            context.put(WadlToolConstants.CFG_INHERIT_PARAMS, "last");
+            context.put(WadlToolConstants.CFG_CREATE_JAVA_DOCS, "true");
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(1, files.size());
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenInterfacesMultipleInXmlReps() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+            context.put(WadlToolConstants.CFG_MULTIPLE_XML_REPS, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+            verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenInterfacesWithBinding() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_BINDING, getLocation("/wadl/jaxbBinding.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+            verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenWithImportedSchema() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstoreImport.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+            verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenWithImportedSchemaWithParentRefs() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/sub/bookstoreImport.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+            verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenWithMultipleInlinedSchemas() {
+        doTestInlinedSchemasWithImport("/wadl/bookstoreMultipleSchemas.xml");
+    }
+
+    @Test
+    public void testCodeGenWithInlinedSchemaAndImport() {
+        doTestInlinedSchemasWithImport("/wadl/bookstoreInlinedSchemaWithImport.xml");
+    }
+
+    private void doTestInlinedSchemasWithImport(String loc) {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation(loc));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(8, files.size());
+            assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl" + ".BookStore.class"));
+            assertTrue(checkContains(files, "org.apache.cxf.jaxrs.model.wadl" + ".PATCH.class"));
+            assertTrue(checkContains(files, "superbooks" + ".Book.class"));
+            assertTrue(checkContains(files, "superbooks" + ".ObjectFactory.class"));
+            assertTrue(checkContains(files, "superbooks" + ".package-info.class"));
+            assertTrue(checkContains(files, "superchapters" + ".Chapter.class"));
+            assertTrue(checkContains(files, "superchapters" + ".ObjectFactory.class"));
+            assertTrue(checkContains(files, "superchapters" + ".package-info.class"));
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+    @Test
+    public void testResourceWithEPR() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceWithEPR.xml"));
+            context.put(WadlToolConstants.CFG_SCHEMA_TYPE_MAP,
+                        "{http://www.w3.org/2001/XMLSchema}date=javax.xml.datatype.XMLGregorianCalendar");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(4, files.size());
+            assertTrue(checkContains(files, "application" + ".BookstoreResource.class"));
+            assertTrue(checkContains(files, "superbooks" + ".Book.class"));
+            assertTrue(checkContains(files, "superbooks" + ".ObjectFactory.class"));
+            assertTrue(checkContains(files, "superbooks" + ".package-info.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testResourceWithEPRNoSchemaGen() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceWithEPR.xml"));
+            context.put(WadlToolConstants.CFG_SCHEMA_TYPE_MAP,
+                "{http://www.w3.org/2005/08/addressing}EndpointReferenceType="
+                + "javax.xml.ws.wsaddressing.W3CEndpointReference");
+            context.put(WadlToolConstants.CFG_NO_ADDRESS_BINDING, "true");
+            context.put(WadlToolConstants.CFG_NO_TYPES, "true");
+
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(1, files.size());
+            assertTrue(checkContains(files, "application" + ".BookstoreResource.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testQueryMultipartParam() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/testQueryMultipartParam.wadl"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(2, files.size());
+            assertTrue(checkContains(files, "application.Test1.class"));
+            assertTrue(checkContains(files, "application.Test2.class"));
+
+            @SuppressWarnings("resource")
+            ClassLoader loader = new URLClassLoader(new URL[] {output.toURI().toURL() });
+
+            Class<?> test1 = loader.loadClass("application.Test1");
+            Method[] test1Methods = test1.getDeclaredMethods();
+            assertEquals(1, test1Methods.length);
+
+            assertEquals(2, test1Methods[0].getAnnotations().length);
+            assertNotNull(test1Methods[0].getAnnotation(PUT.class));
+            Consumes consumes1 = test1Methods[0].getAnnotation(Consumes.class);
+            assertNotNull(consumes1);
+            assertEquals(1, consumes1.value().length);
+            assertEquals("multipart/mixed", consumes1.value()[0]);
+
+            assertEquals("put", test1Methods[0].getName());
+            Class<?>[] paramTypes = test1Methods[0].getParameterTypes();
+            assertEquals(3, paramTypes.length);
+            Annotation[][] paramAnns = test1Methods[0].getParameterAnnotations();
+            assertEquals(Boolean.class, paramTypes[0]);
+            assertEquals(1, paramAnns[0].length);
+            QueryParam test1QueryParam1 = (QueryParam)paramAnns[0][0];
+            assertEquals("standalone", test1QueryParam1.value());
+            assertEquals(String.class, paramTypes[1]);
+            assertEquals(1, paramAnns[1].length);
+            Multipart test1MultipartParam1 = (Multipart)paramAnns[1][0];
+            assertEquals("action", test1MultipartParam1.value());
+            assertTrue(test1MultipartParam1.required());
+            assertEquals(String.class, paramTypes[2]);
+            assertEquals(1, paramAnns[2].length);
+            Multipart test1MultipartParam2 = (Multipart)paramAnns[2][0];
+            assertEquals("sources", test1MultipartParam2.value());
+            assertFalse(test1MultipartParam2.required());
+
+            Class<?> test2 = loader.loadClass("application.Test2");
+            Method[] test2Methods = test2.getDeclaredMethods();
+            assertEquals(1, test2Methods.length);
+
+            assertEquals(2, test2Methods[0].getAnnotations().length);
+            assertNotNull(test2Methods[0].getAnnotation(PUT.class));
+            Consumes consumes2 = test2Methods[0].getAnnotation(Consumes.class);
+            assertNotNull(consumes2);
+            assertEquals(1, consumes2.value().length);
+            assertEquals("application/json", consumes2.value()[0]);
+
+            assertEquals("put", test2Methods[0].getName());
+            Class<?>[] paramTypes2 = test2Methods[0].getParameterTypes();
+            assertEquals(2, paramTypes2.length);
+            Annotation[][] paramAnns2 = test2Methods[0].getParameterAnnotations();
+            assertEquals(boolean.class, paramTypes2[0]);
+            assertEquals(1, paramAnns2[0].length);
+            QueryParam test2QueryParam1 = (QueryParam)paramAnns2[0][0];
+            assertEquals("snapshot", test2QueryParam1.value());
+            assertEquals(String.class, paramTypes2[1]);
+            assertEquals(0, paramAnns2[1].length);
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testComplexPath() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/testComplexPath.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(1, files.size());
+            assertTrue(checkContains(files, "application.Resource.class"));
+            @SuppressWarnings("resource")
+            ClassLoader loader = new URLClassLoader(new URL[] {output.toURI().toURL() });
+
+            Class<?> test1 = loader.loadClass("application.Resource");
+            Method[] test1Methods = test1.getDeclaredMethods();
+            assertEquals(2, test1Methods.length);
+            assertEquals(2, test1Methods[0].getAnnotations().length);
+            if ("getGetaddmethod2".equals(test1Methods[0].getName())) {
+                Method tmp = test1Methods[0];
+                test1Methods[0] = test1Methods[1];
+                test1Methods[1] = tmp;
+            }
+            checkComplexPathMethod(test1Methods[0], "");
+            checkComplexPathMethod(test1Methods[1], "2");
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    private void checkComplexPathMethod(Method m, String suffix) {
+        assertNotNull(m.getAnnotation(GET.class));
+        Path path = m.getAnnotation(Path.class);
+        assertNotNull(path);
+        assertEquals("/get-add-method", path.value());
+        assertEquals("getGetaddmethod" + suffix, m.getName());
+        Class<?>[] paramTypes = m.getParameterTypes();
+        assertEquals(1, paramTypes.length);
+        Annotation[][] paramAnns = m.getParameterAnnotations();
+        assertEquals(String.class, paramTypes[0]);
+        assertEquals(1, paramAnns[0].length);
+        PathParam methodPathParam1 = (PathParam)paramAnns[0][0];
+        assertEquals("id", methodPathParam1.value());
+    }
+
+    @Test
+    public void testBeanValidation() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceSameTargetNsSchemas.xml"));
+            context.put(WadlToolConstants.CFG_BEAN_VALIDATION, "true");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(4, files.size());
+            assertTrue(checkContains(files, "application.Resource.class"));
+            @SuppressWarnings("resource")
+            ClassLoader loader = new URLClassLoader(new URL[] {output.toURI().toURL() });
+
+            Class<?> test1 = loader.loadClass("application.Resource");
+            Method[] test1Methods = test1.getDeclaredMethods();
+            assertEquals(1, test1Methods.length);
+            Method m = test1Methods[0];
+            assertEquals(5, m.getAnnotations().length);
+            assertNotNull(m.getAnnotation(Valid.class));
+            assertNotNull(m.getAnnotation(Path.class));
+            assertNotNull(m.getAnnotation(Consumes.class));
+            assertNotNull(m.getAnnotation(Produces.class));
+            assertNotNull(m.getAnnotation(PUT.class));
+
+            Class<?>[] paramTypes = m.getParameterTypes();
+            assertEquals(2, paramTypes.length);
+            Annotation[][] paramAnns = m.getParameterAnnotations();
+            assertEquals(String.class, paramTypes[0]);
+            assertEquals(1, paramAnns[0].length);
+            PathParam methodPathParam1 = (PathParam)paramAnns[0][0];
+            assertEquals("id", methodPathParam1.value());
+
+            assertEquals(1, paramAnns[1].length);
+            assertTrue(paramAnns[1][0] instanceof Valid);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenWithImportedSchemaAndResourceSet() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstoreResourceRef.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+            verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenWithImportedSchemaAndBinding() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstoreImport.xml"));
+            context.put(WadlToolConstants.CFG_BINDING, getLocation("/wadl/jaxbBindingWithSchemaLoc.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+            verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenWithImportedSchemaAndCatalog() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstoreImportCatalog.xml"));
+            context.put(WadlToolConstants.CFG_CATALOG, getLocation("/wadl/jax-rs-catalog.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+            verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 9);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenNoIds() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/singleResource.xml"));
+            context.put(WadlToolConstants.CFG_RESOURCENAME, "CustomResource");
+            context.put(WadlToolConstants.CFG_GENERATE_ENUMS, "true");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+            assertEquals(2, javaFiles.size());
+            assertTrue(checkContains(javaFiles, "application.CustomResource.java"));
+            assertTrue(checkContains(javaFiles, "application.Theid.java"));
+
+            List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(2, classFiles.size());
+            assertTrue(checkContains(classFiles, "application.CustomResource.class"));
+            assertTrue(checkContains(classFiles, "application.Theid.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenNoIds2() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/multipleResources.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+            assertEquals(2, javaFiles.size());
+            assertTrue(checkContains(javaFiles, "application.BookstoreResource.java"));
+            assertTrue(checkContains(javaFiles, "application.BooksResource.java"));
+            List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(2, classFiles.size());
+            assertTrue(checkContains(classFiles, "application.BookstoreResource.class"));
+            assertTrue(checkContains(classFiles, "application.BooksResource.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenNoIds3() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourcesNoId.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+            context.put(WadlToolConstants.CFG_INHERIT_PARAMS, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+            assertEquals(1, javaFiles.size());
+            assertTrue(checkContains(javaFiles, "application.TestRsResource.java"));
+            List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(1, classFiles.size());
+            assertTrue(checkContains(classFiles, "application.TestRsResource.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeTwoSchemasSameTargetNs() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceSameTargetNsSchemas.xml"));
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+            assertEquals(4, javaFiles.size());
+            assertTrue(checkContains(javaFiles, "application.Resource.java"));
+            assertTrue(checkContains(javaFiles, "com.example.test.ObjectFactory.java"));
+            assertTrue(checkContains(javaFiles, "com.example.test.package-info.java"));
+            assertTrue(checkContains(javaFiles, "com.example.test.TestCompositeObject.java"));
+            List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(4, classFiles.size());
+            assertTrue(checkContains(classFiles, "application.Resource.class"));
+            assertTrue(checkContains(classFiles, "com.example.test.ObjectFactory.class"));
+            assertTrue(checkContains(classFiles, "com.example.test.package-info.class"));
+            assertTrue(checkContains(classFiles, "com.example.test.TestCompositeObject.class"));
+
+
+            assertNotNull(output.list());
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+    @Test
+    public void testCodeGenWithResourceSet() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/singleResourceWithRefs.xml"));
+            context.put(WadlToolConstants.CFG_RESOURCENAME, "CustomResource");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." + "java" + "$");
+            assertEquals(1, javaFiles.size());
+            assertTrue(checkContains(javaFiles, "application.CustomResource.java"));
+
+            List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+            assertEquals(1, classFiles.size());
+            assertTrue(checkContains(classFiles, "application.CustomResource.class"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenInterfacesCustomPackage() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_PACKAGENAME, "custom.books");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, false, "superbooks", "custom.books", 11, true);
+            verifyFiles("class", true, false, "superbooks", "custom.books", 11, true);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenInterfacesCustomPackageForResourcesAndSchemas() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_PACKAGENAME, "custom.books.service");
+            context.put(WadlToolConstants.CFG_SCHEMA_PACKAGENAME, "http://superbooks=custom.books.schema");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, false, "custom.books.schema", "custom.books.service", 11, true);
+            verifyFiles("class", true, false, "custom.books.schema", "custom.books.service", 11, true);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+
+    @Test
+    public void testCodeGenImpl() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_IMPL, "true");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+            verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 11, true);
+        } catch (Exception e) {
+            fail();
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testCodeGenInterfaceAndImpl() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_INTERFACE, "true");
+            context.put(WadlToolConstants.CFG_IMPL, "true");
+            context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyFiles("java", true, true, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 14, true);
+            verifyFiles("class", true, true, "superbooks", "org.apache.cxf.jaxrs.model.wadl", 14, true);
+        } catch (Exception e) {
+            fail();
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testCodeGenTypesOnly() {
+        try {
+            JAXRSContainer container = new JAXRSContainer(null);
+
+            ToolContext context = new ToolContext();
+            context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+            context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+            context.put(WadlToolConstants.CFG_TYPES, "true");
+
+            container.setContext(context);
+            container.execute();
+
+            assertNotNull(output.list());
+
+            verifyTypes("superbooks", "java", true);
+
+        } catch (Exception e) {
+            fail();
+            e.printStackTrace();
+        }
+    }
+
+    private void verifyFiles(String ext, boolean subresourceExpected, boolean interfacesAndImpl,
+                             String schemaPackage, String resourcePackage, int expectedCount) {
+        verifyFiles(ext, subresourceExpected, interfacesAndImpl, schemaPackage, resourcePackage,
+                    expectedCount, false);
+    }
+
+    private void verifyFiles(String ext, boolean subresourceExpected, boolean interfacesAndImpl,
+                             String schemaPackage, String resourcePackage, int expectedCount,
+                             boolean enumTypeExpected) {
+        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
+        int offset = enumTypeExpected ? 1 : 2;
+        int size = interfacesAndImpl ? expectedCount : expectedCount - offset;
+        if (!subresourceExpected) {
+            size--;
+        }
+        assertEquals(size, files.size());
+        doVerifyTypes(files, schemaPackage, ext);
+        if (subresourceExpected) {
+            assertTrue(checkContains(files, resourcePackage + ".FormInterface." + ext));
+            assertTrue(checkContains(files, resourcePackage + ".FormInterface2." + ext));
+        }
+        assertTrue(checkContains(files, resourcePackage + ".BookStore." + ext));
+        if (interfacesAndImpl) {
+            if (subresourceExpected) {
+                assertTrue(checkContains(files, resourcePackage + ".FormInterfaceImpl." + ext));
+                assertTrue(checkContains(files, resourcePackage + ".FormInterface2Impl." + ext));
+            }
+            assertTrue(checkContains(files, resourcePackage + ".BookStoreImpl." + ext));
+        }
+    }
+
+    private void verifyTypes(String schemaPackage, String ext, boolean enumTypeExpected) {
+        List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
+        assertEquals(enumTypeExpected ? 6 : 5, files.size());
+        doVerifyTypes(files, schemaPackage, ext);
+    }
+
+    private void doVerifyTypes(List<File> files, String schemaPackage, String ext) {
+        assertTrue(checkContains(files, schemaPackage + ".Book." + ext));
+        assertTrue(checkContains(files, schemaPackage + ".TheBook2." + ext));
+        assertTrue(checkContains(files, schemaPackage + ".Chapter." + ext));
+        assertTrue(checkContains(files, schemaPackage + ".ObjectFactory." + ext));
+        assertTrue(checkContains(files, schemaPackage + ".package-info." + ext));
+    }
+
+    private boolean checkContains(List<File> clsFiles, String name) {
+        for (File f : clsFiles) {
+            if (f.getAbsolutePath().replace(File.separatorChar, '.').endsWith(name)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    protected String getLocation(String wsdlFile) throws URISyntaxException {
+        return getClass().getResource(wsdlFile).toString();
+    }
+}