Repository: cxf
Updated Branches:
  refs/heads/master 1d29e0af1 -> 6ef5be586


[CXF-6392] Schema imports are not handled correctly in generated WSDL
and XSD files

- test case demonstrating incorrect behaviour


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

Branch: refs/heads/master
Commit: 78d79f449f71a530f0d2739dbb888a913439463d
Parents: 1d29e0a
Author: Tomas Hofman <[email protected]>
Authored: Wed May 6 16:48:18 2015 +0200
Committer: Daniel Kulp <[email protected]>
Committed: Fri May 22 13:25:08 2015 -0400

----------------------------------------------------------------------
 .../cxf/systest/jaxws/OASISCatalogTest.java     | 98 +++++++++++++++-----
 .../main/resources/META-INF/jax-ws-catalog.xml  |  1 +
 .../wsdl/others/d/d/hello_world_schema4.xsd     | 27 ++++++
 .../wsdl/others/d/hello_world_schema4.xsd       | 30 ++++++
 .../wsdl/others/hello_world_schema.xsd          |  2 +-
 .../wsdl/others/hello_world_schema2.xsd         |  4 +
 .../wsdl/others/hello_world_schema3.xsd         | 27 ++++++
 7 files changed, 167 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/OASISCatalogTest.java
----------------------------------------------------------------------
diff --git 
a/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/OASISCatalogTest.java
 
b/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/OASISCatalogTest.java
index f4553e9..3245517 100644
--- 
a/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/OASISCatalogTest.java
+++ 
b/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/OASISCatalogTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.systest.jaxws;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.Enumeration;
@@ -61,27 +62,69 @@ public class OASISCatalogTest extends Assert {
     public void testWSDLPublishWithCatalogs() throws Exception {
         Endpoint ep = Endpoint.publish("http://localhost:"; + PORT + 
"/SoapContext/SoapPort",
                                        new GreeterImpl());
-        try {
-            URL url = new URL("http://localhost:"; + PORT + 
"/SoapContext/SoapPort?"
-                              + "xsd=hello_world_schema2.xsd");
-            assertNotNull(url.getContent());
-            String result = IOUtils.toString((InputStream)url.getContent());
-            assertTrue(result, result.contains("xsd=hello_world_schema.xsd"));
-            
-            
-            url = new URL("http://localhost:"; + PORT + "/SoapContext/SoapPort"
-                          + "?xsd=hello_world_schema.xsd");
-            result = IOUtils.toString((InputStream)url.getContent());
-            assertTrue(result, result.contains("xsd=hello_world_schema2.xsd"));
-
-            url = new URL("http://localhost:"; + PORT + "/SoapContext/SoapPort"
-                          + 
"?wsdl=testutils/others/hello_world_messages_catalog.wsdl");
-            result = IOUtils.toString((InputStream)url.getContent());
-            assertTrue(result, result.contains("xsd=hello_world_schema.xsd"));
-
-        } finally {
-            ep.stop();
-        }
+
+        String result = readUrl("http://localhost:"; + PORT + 
"/SoapContext/SoapPort?"
+                + "xsd=hello_world_schema2.xsd");
+        assertTrue(result, result.contains("xsd=hello_world_schema.xsd"));
+        assertTrue(result, result.contains("xsd=hello_world_schema3.xsd"));
+        assertTrue(result, result.contains("xsd=d/hello_world_schema4.xsd"));
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort?"
+                + "xsd=hello_world_schema3.xsd");
+        assertTrue(result.length() > 0);
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort?"
+                + "xsd=d/hello_world_schema4.xsd");
+        assertTrue(result, result.contains("xsd=d/d/hello_world_schema4.xsd"));
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort"
+                + "?xsd=hello_world_schema.xsd");
+        assertTrue(result, 
result.contains("xsd=http://apache.org/hello_world/types2/hello_world_schema2.xsd";));
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort"
+                + "?wsdl=testutils/others/hello_world_messages_catalog.wsdl");
+        assertTrue(result, result.contains("xsd=hello_world_schema.xsd"));
+
+        ep.stop();
+    }
+
+    /**
+     * This is test case for https://issues.apache.org/jira/browse/CXF-6234
+     *
+     * It's using paths that will be rewritten by following catalog rule:
+     *
+     *     &lt;rewriteSystem 
systemIdStartString="http://apache.org/hello_world/types2/";
+     *          rewritePrefix="/wsdl/others/"/&gt;
+     *
+     */
+    @Test
+    public void testWSDLPublishWithCatalogsRewritePaths() {
+        Endpoint ep = Endpoint.publish("http://localhost:"; + PORT + 
"/SoapContext/SoapPort",
+                new GreeterImpl());
+
+        String result = readUrl("http://localhost:"; + PORT + 
"/SoapContext/SoapPort?"
+                + 
"xsd=http://apache.org/hello_world/types2/hello_world_schema2.xsd";);
+        assertTrue(result, 
result.contains("xsd=http://apache.org/hello_world/types2/hello_world_schema.xsd";));
+        assertTrue(result, 
result.contains("xsd=http://apache.org/hello_world/types2/hello_world_schema3.xsd";));
+        assertTrue(result, 
result.contains("xsd=http://apache.org/hello_world/types2/d/hello_world_schema4.xsd";));
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort?"
+                + 
"xsd=http://apache.org/hello_world/types2/hello_world_schema.xsd";);
+        assertTrue(result, 
result.contains("xsd=http://apache.org/hello_world/types2/hello_world_schema2.xsd";));
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort?"
+                + 
"xsd=http://apache.org/hello_world/types2/hello_world_schema3.xsd";);
+        assertTrue(result.length() > 0);
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort?"
+                + 
"xsd=http://apache.org/hello_world/types2/d/hello_world_schema4.xsd";);
+        assertTrue(result, 
result.contains("xsd=http://apache.org/hello_world/types2/d/d/hello_world_schema4.xsd";));
+
+        result = readUrl("http://localhost:"; + PORT + "/SoapContext/SoapPort?"
+                + 
"xsd=http://apache.org/hello_world/types2/d/d/hello_world_schema4.xsd";);
+        assertTrue(result.length() > 0);
+
+        ep.stop();
     }
     
     @Test
@@ -170,4 +213,17 @@ public class OASISCatalogTest extends Assert {
         }
     }
 
+    private String readUrl(String address) {
+        String content = null;
+        try {
+            URL url = new URL(address);
+            assertNotNull(url.getContent());
+            content = IOUtils.toString((InputStream) url.getContent());
+        } catch (IOException e) {
+            e.printStackTrace(System.err);
+            Assert.fail("Couldn't read URL: " + e.getMessage());
+        }
+        return content;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/testutils/src/main/resources/META-INF/jax-ws-catalog.xml
----------------------------------------------------------------------
diff --git a/testutils/src/main/resources/META-INF/jax-ws-catalog.xml 
b/testutils/src/main/resources/META-INF/jax-ws-catalog.xml
index 5b5322c..28d5907 100644
--- a/testutils/src/main/resources/META-INF/jax-ws-catalog.xml
+++ b/testutils/src/main/resources/META-INF/jax-ws-catalog.xml
@@ -18,6 +18,7 @@
     under the License.
 -->
 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+    <rewriteSystem systemIdStartString="http://apache.org/hello_world/types2/"; 
rewritePrefix="/wsdl/others/"/>
     <rewriteSystem systemIdStartString="doesnotexist" 
rewritePrefix="../wsdl/catalog"/>
     <rewriteSystem systemIdStartString="nopath" rewritePrefix="../wsdl"/>
     <rewriteSystem systemIdStartString="testutils" 
rewritePrefix="classpath:/wsdl"/>

http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/testutils/src/main/resources/wsdl/others/d/d/hello_world_schema4.xsd
----------------------------------------------------------------------
diff --git 
a/testutils/src/main/resources/wsdl/others/d/d/hello_world_schema4.xsd 
b/testutils/src/main/resources/wsdl/others/d/d/hello_world_schema4.xsd
new file mode 100644
index 0000000..3868647
--- /dev/null
+++ b/testutils/src/main/resources/wsdl/others/d/d/hello_world_schema4.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
+    targetNamespace="http://apache.org/hello_world/types5";
+            elementFormDefault="qualified">
+
+    <xsd:element name="sayHi5">
+        <xsd:complexType/>
+    </xsd:element>
+</xsd:schema>

http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/testutils/src/main/resources/wsdl/others/d/hello_world_schema4.xsd
----------------------------------------------------------------------
diff --git a/testutils/src/main/resources/wsdl/others/d/hello_world_schema4.xsd 
b/testutils/src/main/resources/wsdl/others/d/hello_world_schema4.xsd
new file mode 100644
index 0000000..44852a0
--- /dev/null
+++ b/testutils/src/main/resources/wsdl/others/d/hello_world_schema4.xsd
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
+    targetNamespace="http://apache.org/hello_world/types4";
+            elementFormDefault="qualified">
+
+    <xsd:import namespace="http://apache.org/hello_world/types5";
+                schemaLocation="d/hello_world_schema4.xsd"/>
+
+    <xsd:element name="sayHi4">
+        <xsd:complexType/>
+    </xsd:element>
+</xsd:schema>

http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/testutils/src/main/resources/wsdl/others/hello_world_schema.xsd
----------------------------------------------------------------------
diff --git a/testutils/src/main/resources/wsdl/others/hello_world_schema.xsd 
b/testutils/src/main/resources/wsdl/others/hello_world_schema.xsd
index b9480ec..5c0e655 100644
--- a/testutils/src/main/resources/wsdl/others/hello_world_schema.xsd
+++ b/testutils/src/main/resources/wsdl/others/hello_world_schema.xsd
@@ -24,7 +24,7 @@
             elementFormDefault="qualified">
 
     <import namespace="http://apache.org/hello_world/types2"; 
-        schemaLocation="hello_world_schema2.xsd"/>
+        
schemaLocation="http://apache.org/hello_world/types2/hello_world_schema2.xsd"/>
 
 
     <element name="sayHi">

http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/testutils/src/main/resources/wsdl/others/hello_world_schema2.xsd
----------------------------------------------------------------------
diff --git a/testutils/src/main/resources/wsdl/others/hello_world_schema2.xsd 
b/testutils/src/main/resources/wsdl/others/hello_world_schema2.xsd
index 45f9a38..c8fa92a 100644
--- a/testutils/src/main/resources/wsdl/others/hello_world_schema2.xsd
+++ b/testutils/src/main/resources/wsdl/others/hello_world_schema2.xsd
@@ -23,6 +23,10 @@
 
     <xsd:import namespace="http://apache.org/hello_world/types";
         schemaLocation="hello_world_schema.xsd"/>
+    <xsd:import namespace="http://apache.org/hello_world/types4";
+                schemaLocation="d/hello_world_schema4.xsd"/>
+
+    <xsd:include schemaLocation="hello_world_schema3.xsd"/>
 
     <xsd:element name="sayHi2">
         <xsd:complexType/>

http://git-wip-us.apache.org/repos/asf/cxf/blob/78d79f44/testutils/src/main/resources/wsdl/others/hello_world_schema3.xsd
----------------------------------------------------------------------
diff --git a/testutils/src/main/resources/wsdl/others/hello_world_schema3.xsd 
b/testutils/src/main/resources/wsdl/others/hello_world_schema3.xsd
new file mode 100644
index 0000000..0b779b6
--- /dev/null
+++ b/testutils/src/main/resources/wsdl/others/hello_world_schema3.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
+    targetNamespace="http://apache.org/hello_world/types2";
+            elementFormDefault="qualified">
+
+    <xsd:element name="sayHi3">
+        <xsd:complexType/>
+    </xsd:element>
+</xsd:schema>

Reply via email to