Author: ffang
Date: Fri Sep 16 10:26:25 2011
New Revision: 1171492
URL: http://svn.apache.org/viewvc?rev=1171492&view=rev
Log:
[CXF-3125]Add -validate option to wsdl2service
Added:
cxf/trunk/tools/wsdlto/misc/src/test/resources/misctools_wsdl/hello_world_mixed_style.wsdl
Modified:
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/processor/AbstractWSDLToProcessor.java
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml
cxf/trunk/tools/wsdlto/misc/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java
Modified:
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/processor/AbstractWSDLToProcessor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/processor/AbstractWSDLToProcessor.java?rev=1171492&r1=1171491&r2=1171492&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/processor/AbstractWSDLToProcessor.java
(original)
+++
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/processor/AbstractWSDLToProcessor.java
Fri Sep 16 10:26:25 2011
@@ -115,6 +115,9 @@ public class AbstractWSDLToProcessor imp
}
WSDLDefinitionBuilder builder = new WSDLDefinitionBuilder(bus);
wsdlDefinition = builder.build(wsdlURL);
+ if (env.optionSet(ToolConstants.CFG_VALIDATE_WSDL)) {
+ validate(wsdlDefinition, env, bus);
+ }
WSDLManager mgr = bus.getExtension(WSDLManager.class);
mgr.removeDefinition(wsdlDefinition);
@@ -194,5 +197,9 @@ public class AbstractWSDLToProcessor imp
System.err.println("Parsing schema warning " +
exception.toString());
}
}
+
+ public boolean validate(final Definition def, ToolContext context, Bus
bus) throws ToolException {
+ return new WSDL11Validator(def, context, bus).isValid();
+ }
}
Modified:
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml?rev=1171492&r1=1171491&r2=1171492&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml
(original)
+++
cxf/trunk/tools/wsdlto/misc/src/main/java/org/apache/cxf/tools/misc/wsdl2service.xml
Fri Sep 16 10:26:25 2011
@@ -233,6 +233,14 @@ wsdl2service -transport http -e servicen
<switch>quiet</switch>
<switch>q</switch>
</option>
+ <option id="validate" maxOccurs="1">
+ <annotation>
+ To validate the wsdl before generating the wsdl
service part. Usage of
+ this option is highly recommended.
+ </annotation>
+ <switch>validate</switch>
+ </option>
+
</optionGroup>
<argument id="wsdlurl" minOccurs="1" maxOccurs="1">
Modified:
cxf/trunk/tools/wsdlto/misc/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/misc/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java?rev=1171492&r1=1171491&r2=1171492&view=diff
==============================================================================
---
cxf/trunk/tools/wsdlto/misc/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java
(original)
+++
cxf/trunk/tools/wsdlto/misc/src/test/java/org/apache/cxf/tools/misc/processor/WSDLToServiceProcessorTest.java
Fri Sep 16 10:26:25 2011
@@ -350,4 +350,30 @@ public class WSDLToServiceProcessorTest
}
}
}
+
+ @Test
+ public void testWSDLValidation() throws Exception {
+ //intend to use a wsdl which will break WSIBPValidator
+
+ WSDLToServiceProcessor processor = new WSDLToServiceProcessor();
+
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/misctools_wsdl/hello_world_mixed_style.wsdl"));
+ env.put(ToolConstants.CFG_TRANSPORT, new String("soap"));
+ env.put(ToolConstants.CFG_BINDING_ATTR, new
String("Greeter_SOAPBinding"));
+ env.put(ToolConstants.CFG_SERVICE, new String("serviceins"));
+ env.put(ToolConstants.CFG_PORT, new String("portins"));
+ env.put(ToolConstants.CFG_VALIDATE_WSDL,
ToolConstants.CFG_VALIDATE_WSDL);
+ processor.setEnvironment(env);
+
+ try {
+ processor.process();
+ fail("Do not catch expected tool exception for breaking
WSIBPValidator!");
+ } catch (Exception e) {
+ if (!(e instanceof ToolException && e.toString()
+ .indexOf("Mixed style, invalid WSDL") >= 0)) {
+ fail("Do not catch tool exception for breaking
WSIBPValidator!, "
+ + "catch other unexpected exception!");
+ }
+ }
+ }
}
Added:
cxf/trunk/tools/wsdlto/misc/src/test/resources/misctools_wsdl/hello_world_mixed_style.wsdl
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/misc/src/test/resources/misctools_wsdl/hello_world_mixed_style.wsdl?rev=1171492&view=auto
==============================================================================
---
cxf/trunk/tools/wsdlto/misc/src/test/resources/misctools_wsdl/hello_world_mixed_style.wsdl
(added)
+++
cxf/trunk/tools/wsdlto/misc/src/test/resources/misctools_wsdl/hello_world_mixed_style.wsdl
Fri Sep 16 10:26:25 2011
@@ -0,0 +1,271 @@
+<?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="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:tns="http://apache.org/hello_world_soap_http"
+ xmlns:x1="http://apache.org/hello_world_soap_http/types"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://apache.org/hello_world_soap_http"
name="HelloWorld">
+ <wsdl:types>
+ <schema
targetNamespace="http://apache.org/hello_world_soap_http/types"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:x1="http://apache.org/hello_world_soap_http/types"
elementFormDefault="qualified">
+ <element name="sayHi">
+ <complexType/>
+ </element>
+ <element name="sayHiResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMe">
+ <complexType>
+ <sequence>
+ <element name="requestType" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeSometime">
+ <complexType>
+ <sequence>
+ <element name="requestType"
type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeSometimeResponse">
+ <complexType>
+ <sequence>
+ <element name="responseType"
type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="greetMeOneWay">
+ <complexType>
+ <sequence>
+ <element name="requestType" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="testDocLitFault">
+ <complexType>
+ <sequence>
+ <element name="faultType" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="testDocLitFaultResponse">
+ <complexType>
+ <sequence/>
+ </complexType>
+ </element>
+ <complexType name="ErrorCode">
+ <sequence>
+ <element name="minor" type="xsd:short"/>
+ <element name="major" type="xsd:short"/>
+ </sequence>
+ </complexType>
+ <element name="NoSuchCodeLit">
+ <complexType>
+ <sequence>
+ <element name="code" type="x1:ErrorCode"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="BadRecordLit" type="xsd:string"/>
+ <xsd:complexType name="BadRecord">
+ <xsd:sequence>
+ <xsd:element name="reason" type="xsd:string"/>
+ <xsd:element name="code" type="xsd:short"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <complexType name="addNumbers">
+ <sequence>
+ <element name="arg0" type="xsd:int"/>
+ <element name="arg1" type="xsd:int"/>
+ </sequence>
+ </complexType>
+ <element name="addNumbers" type="x1:addNumbers"/>
+ <complexType name="addNumbersResponse">
+ <sequence>
+ <element name="return" type="xsd:int"/>
+ </sequence>
+ </complexType>
+ <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+ <element name="BareDocument" type="xsd:string"/>
+ <element name="BareDocumentResponse">
+ <complexType>
+ <sequence>
+ <element name="company" type="xsd:string"/>
+ </sequence>
+ <attribute name="id" type="xsd:int"/>
+ </complexType>
+ </element>
+ </schema>
+ </wsdl:types>
+ <wsdl:message name="sayHiRequest">
+ <wsdl:part name="in" element="x1:sayHi"/>
+ </wsdl:message>
+ <wsdl:message name="sayHiResponse">
+ <wsdl:part name="out" element="x1:sayHiResponse"/>
+ </wsdl:message>
+ <wsdl:message name="greetMeRequest">
+ <wsdl:part name="in" element="x1:greetMe"/>
+ </wsdl:message>
+ <wsdl:message name="greetMeResponse">
+ <wsdl:part name="out" element="x1:greetMeResponse"/>
+ </wsdl:message>
+ <wsdl:message name="greetMeSometimeRequest">
+ <wsdl:part name="in" element="x1:greetMeSometime"/>
+ </wsdl:message>
+ <wsdl:message name="greetMeSometimeResponse">
+ <wsdl:part name="out" element="x1:greetMeSometimeResponse"/>
+ </wsdl:message>
+ <wsdl:message name="greetMeOneWayRequest">
+ <wsdl:part name="in" element="x1:greetMeOneWay"/>
+ </wsdl:message>
+ <wsdl:message name="testDocLitFaultRequest">
+ <wsdl:part name="in" element="x1:testDocLitFault"/>
+ </wsdl:message>
+ <wsdl:message name="testDocLitFaultResponse">
+ <wsdl:part name="out" element="x1:testDocLitFaultResponse"/>
+ </wsdl:message>
+ <wsdl:message name="NoSuchCodeLitFault">
+ <wsdl:part name="NoSuchCodeLit" element="x1:NoSuchCodeLit"/>
+ </wsdl:message>
+ <wsdl:message name="BadRecordLitFault">
+ <wsdl:part name="BadRecordLit" element="x1:BadRecordLit"/>
+ </wsdl:message>
+ <wsdl:message name="testDocLitBareRequest">
+ <wsdl:part name="in" element="x1:BareDocument"/>
+ </wsdl:message>
+ <wsdl:message name="testDocLitBareResponse">
+ <wsdl:part name="out" element="x1:BareDocumentResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="Greeter">
+ <wsdl:operation name="sayHi">
+ <wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
+ <wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="greetMe">
+ <wsdl:input name="greetMeRequest" message="tns:greetMeRequest"/>
+ <wsdl:output name="greetMeResponse" message="tns:greetMeResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="greetMeSometime">
+ <wsdl:input name="greetMeSometimeRequest"
message="tns:greetMeSometimeRequest"/>
+ <wsdl:output name="greetMeSometimeResponse"
message="tns:greetMeSometimeResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="greetMeOneWay">
+ <wsdl:input name="greetMeOneWayRequest"
message="tns:greetMeOneWayRequest"/>
+ </wsdl:operation>
+ <wsdl:operation name="testDocLitFault">
+ <wsdl:input name="testDocLitFaultRequest"
message="tns:testDocLitFaultRequest"/>
+ <wsdl:output name="testDocLitFaultResponse"
message="tns:testDocLitFaultResponse"/>
+ <wsdl:fault name="NoSuchCodeLitFault"
message="tns:NoSuchCodeLitFault"/>
+ <wsdl:fault name="BadRecordLitFault"
message="tns:BadRecordLitFault"/>
+ </wsdl:operation>
+ <wsdl:operation name="testDocLitBare">
+ <wsdl:input name="testDocLitBareRequest"
message="tns:testDocLitBareRequest"/>
+ <wsdl:output name="testDocLitBareResponse"
message="tns:testDocLitBareResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter">
+ <!--soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/-->
+ <wsdl:operation name="sayHi">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="greetMe">
+ <soap:operation style="rpc"/>
+ <wsdl:input>
+ <soap:body use="literal"
namespace="http://apache.org/hello_world_soap_http"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"
namespace="http://apache.org/hello_world_soap_http"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="greetMeSometime">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="greetMeOneWay">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="testDocLitFault">
+ <soap:operation style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="NoSuchCodeLitFault">
+ <soap:fault name="NoSuchCodeLitFault" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="BadRecordLitFault">
+ <soap:fault name="BadRecordLitFault" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="testDocLitBare">
+ <soap:operation style="document"
soapAction="http://apache.org/hello_world_soap_http/testDocLitBare"/>
+ <wsdl:input name="testDocLitBareRequest">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="testDocLitBareResponse">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SOAPService">
+ <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
+ <soap:address
location="http://localhost:9000/SoapContext/SoapPort"/>
+ <wswa:UsingAddressing
xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
+ </wsdl:port>
+ </wsdl:service>
+ <wsdl:service name="SOAPService_Test1">
+ <wsdl:port name="SoapPort_Test1" binding="tns:Greeter_SOAPBinding">
+ <soap:address location="http://localhost:9100"/>
+ </wsdl:port>
+ <wsdl:port name="SoapPort_Test2" binding="tns:Greeter_SOAPBinding">
+ <soap:address location="http://localhost:9101"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
+