cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ningji...@apache.org
Subject svn commit: r925995 - in /cxf/trunk/common/common/src: main/java/org/apache/cxf/resource/URIResolver.java test/java/org/apache/cxf/resource/URIResolverTest.java test/resources/schemas/configuration/bar.xsd test/resources/wsdl/ test/resources/wsdl/foo.wsdl
Date Mon, 22 Mar 2010 08:28:44 GMT
Author: ningjiang
Date: Mon Mar 22 08:28:44 2010
New Revision: 925995

URL: http://svn.apache.org/viewvc?rev=925995&view=rev
Log:
CXF-2724 applied patch with thanks to William

Added:
    cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd   (with props)
    cxf/trunk/common/common/src/test/resources/wsdl/
    cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl   (with props)
Modified:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java
    cxf/trunk/common/common/src/test/java/org/apache/cxf/resource/URIResolverTest.java

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java?rev=925995&r1=925994&r2=925995&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/resource/URIResolver.java Mon Mar
22 08:28:44 2010
@@ -167,9 +167,9 @@ public class URIResolver {
             } else if (!StringUtils.isEmpty(baseUriStr)) {
                 URI base;
                 File baseFile = new File(baseUriStr);
-
-                if (!baseFile.exists() && baseUriStr.startsWith("file:/")) {
-                    baseFile = new File(baseUriStr.substring(6));
+          
+                if (!baseFile.exists() && baseUriStr.startsWith("file:")) {
+                    baseFile = new File(getFilePathFromUri(baseUriStr));
                 }
 
                 if (baseFile.exists()) {
@@ -232,6 +232,30 @@ public class URIResolver {
         }
     }
     
+    /**
+     * Assumption: URI scheme is "file"
+     */
+    private String getFilePathFromUri(String uriString) {     
+        String path = null;
+        
+        try {
+            path = new URL(uriString).getPath();
+        } catch (MalformedURLException e) {
+            // ignore
+        }
+        
+        if (path == null) {
+            if (uriString.startsWith("file:/")) {
+                path = uriString.substring(6);
+            } else if (uriString.startsWith("file:")) {
+                // handle Windows file URI such as "file:C:/foo/bar"
+                path = uriString.substring(5);
+            } 
+        }
+        
+        return path;
+    }
+
     private void tryArchive(String baseStr, String uriStr) throws IOException {
         int i = baseStr.indexOf('!');
         if (i == -1) {

Modified: cxf/trunk/common/common/src/test/java/org/apache/cxf/resource/URIResolverTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/test/java/org/apache/cxf/resource/URIResolverTest.java?rev=925995&r1=925994&r2=925995&view=diff
==============================================================================
--- cxf/trunk/common/common/src/test/java/org/apache/cxf/resource/URIResolverTest.java (original)
+++ cxf/trunk/common/common/src/test/java/org/apache/cxf/resource/URIResolverTest.java Mon
Mar 22 08:28:44 2010
@@ -85,5 +85,30 @@ public class URIResolverTest extends Ass
         InputStream is3 = uriResolver.getInputStream();
         assertNotNull(is3); 
     }
+    
+    
+    @Test
+    public void testResolveRelativeFile() throws Exception {
+        URIResolver wsdlResolver = new URIResolver();
+
+        // resolve the wsdl
+        wsdlResolver.resolve(null, "wsdl/foo.wsdl", this.getClass());
+        assertTrue(wsdlResolver.isResolved());
+        
+        // get the base uri from the resolved wsdl location
+        String baseUri = wsdlResolver.getURI().toString();
+        
+        // resolve the schema using relative location
+        String schemaLocation = "../schemas/configuration/bar.xsd";
+        URIResolver xsdResolver = new URIResolver();
+        xsdResolver.resolve(baseUri, schemaLocation, this.getClass());
+        assertNotNull(xsdResolver.getInputStream());
+        
+        // resolve the schema using relative location with base uri fragment
+        xsdResolver = new URIResolver();
+        xsdResolver.resolve(baseUri + "#type2", schemaLocation, this.getClass());
+        assertNotNull(xsdResolver.getInputStream());
+        
+    }
 
 }

Added: cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd?rev=925995&view=auto
==============================================================================
--- cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd (added)
+++ cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd Mon Mar 22 08:28:44
2010
@@ -0,0 +1,37 @@
+<?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.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="urn:RelPath" xmlns:RP="urn:RelPath"
+	elementFormDefault="qualified">
+	<xs:complexType name="RPTest1CT_In">
+		<xs:sequence>
+			<xs:element name="RPTest1_CT_String" type="xs:string">
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:complexType name="RPTest1CT_Out">
+		<xs:sequence>
+			<xs:element name="RPTest1_Ele_String" type="xs:string">
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+
+</xs:schema>
\ No newline at end of file

Propchange: cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/common/common/src/test/resources/schemas/configuration/bar.xsd
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl?rev=925995&view=auto
==============================================================================
--- cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl (added)
+++ cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl Mon Mar 22 08:28:44 2010
@@ -0,0 +1,76 @@
+<?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 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://www.example.org/RelPathDocLit/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="RelPathDocLit"
+	targetNamespace="http://www.example.org/RelPathDocLit/" xmlns:xsd1="urn:RelPath">
+	<wsdl:types>
+		<xsd:schema targetNamespace="http://www.example.org/RelPathDocLit/">
+			<xsd:element name="NewOperation">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="in" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="NewOperationResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="out" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:schema>
+		<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+			<xsd:import namespace="urn:RelPath" schemaLocation="../schemas/configuration/bar.xsd">
+			</xsd:import>
+		</xsd:schema>
+	</wsdl:types>
+	<wsdl:message name="RelPathOperationRequest">
+		<wsdl:part name="parameters" type="xsd1:RPTest1CT_In" />
+	</wsdl:message>
+	<wsdl:message name="RelPathOperationResponse">
+		<wsdl:part name="parameters" type="xsd1:RPTest1CT_Out" />
+	</wsdl:message>
+	<wsdl:portType name="RelPathDocLit">
+		<wsdl:operation name="RelPathOperation">
+			<wsdl:input message="tns:RelPathOperationRequest" />
+			<wsdl:output message="tns:RelPathOperationResponse" />
+		</wsdl:operation>
+	</wsdl:portType>
+	<wsdl:binding name="RelPathDocLitSOAP" type="tns:RelPathDocLit">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<wsdl:operation name="RelPathOperation">
+			<soap:operation soapAction="http://www.example.org/RelPathDocLit/RelPathOperation"
/>
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:service name="RelPathDocLit">
+		<wsdl:port binding="tns:RelPathDocLitSOAP" name="RelPathDocLitSOAP">
+			<soap:address location="http://localhost:2580/process/RelPathDocLit" />
+		</wsdl:port>
+	</wsdl:service>
+</wsdl:definitions>

Propchange: cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/common/common/src/test/resources/wsdl/foo.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml



Mime
View raw message