Why is this validation being done in the MessageModeOutInterceptor instead of 
the org.apache.cxf.databinding.source.XMLStreamDataWriter which is part of the 
Source databinding?    The incoming validation is done in the Source 
databinding.

Dan



On Aug 13, 2013, at 6:37 AM, [email protected] wrote:

> Author: ffang
> Date: Tue Aug 13 10:37:58 2013
> New Revision: 1513427
> 
> URL: http://svn.apache.org/r1513427
> Log:
> [CXF-5169]DISPATCH/PROVIDER doesn't work for OUT message validation
> 
> Added:
>    
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/hello_world_with_restriction.wsdl
>    
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/GreetMeDocLiteralRespExceedLength.xml
> Modified:
>    
> cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/MessageModeOutInterceptor.java
>    
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageDocProvider.java
>    
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/ProviderClientServerTest.java
>    
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/XML_GreetMeDocLiteralResp.xml
> 
> Modified: 
> cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/MessageModeOutInterceptor.java
> URL: 
> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/MessageModeOutInterceptor.java?rev=1513427&r1=1513426&r2=1513427&view=diff
> ==============================================================================
> --- 
> cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/MessageModeOutInterceptor.java
>  (original)
> +++ 
> cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/MessageModeOutInterceptor.java
>  Tue Aug 13 10:37:58 2013
> @@ -34,10 +34,15 @@ import javax.xml.soap.SOAPPart;
> import javax.xml.stream.XMLStreamException;
> import javax.xml.stream.XMLStreamWriter;
> import javax.xml.transform.Source;
> +import javax.xml.transform.dom.DOMSource;
> +import javax.xml.validation.Schema;
> 
> import org.w3c.dom.DocumentFragment;
> import org.w3c.dom.Node;
> 
> +import org.xml.sax.SAXException;
> +
> +import org.apache.cxf.annotations.SchemaValidation.SchemaValidationType;
> import org.apache.cxf.attachment.AttachmentDeserializer;
> import org.apache.cxf.binding.soap.Soap12;
> import org.apache.cxf.binding.soap.SoapFault;
> @@ -48,6 +53,7 @@ import org.apache.cxf.binding.soap.saaj.
> import org.apache.cxf.binding.soap.saaj.SAAJStreamWriter;
> import org.apache.cxf.binding.soap.saaj.SAAJUtils;
> import org.apache.cxf.helpers.IOUtils;
> +import org.apache.cxf.helpers.ServiceUtils;
> import org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor;
> import org.apache.cxf.interceptor.Fault;
> import org.apache.cxf.interceptor.StaxOutInterceptor;
> @@ -58,10 +64,13 @@ import org.apache.cxf.message.MessageImp
> import org.apache.cxf.message.MessageUtils;
> import org.apache.cxf.phase.AbstractPhaseInterceptor;
> import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.service.Service;
> import org.apache.cxf.service.model.BindingMessageInfo;
> import org.apache.cxf.service.model.BindingOperationInfo;
> +import org.apache.cxf.service.model.ServiceModelUtil;
> import org.apache.cxf.staxutils.StaxUtils;
> import org.apache.cxf.staxutils.W3CDOMStreamWriter;
> +import org.apache.cxf.ws.addressing.EndpointReferenceUtils;
> 
> public class MessageModeOutInterceptor extends 
> AbstractPhaseInterceptor<Message> {
>     MessageModeOutInterceptorInternal internal;
> @@ -81,6 +90,7 @@ public class MessageModeOutInterceptor e
>         this.bindingName = bname;
>     }
>     public void handleMessage(Message message) throws Fault {
> +        checkSchemaValidation(message);
>         BindingOperationInfo bop = 
> message.getExchange().get(BindingOperationInfo.class);
>         if (bop != null && !bindingName.equals(bop.getBinding().getName())) {
>             return;
> @@ -159,6 +169,7 @@ public class MessageModeOutInterceptor e
>         Object o = list.get(0);
>         if (o instanceof SOAPMessage) {
>             SOAPMessage soapMessage = (SOAPMessage)o;
> +            
>             if (soapMessage.countAttachments() > 0) {
>                 message.put("write.attachments", Boolean.TRUE);
>             }
> @@ -291,5 +302,51 @@ public class MessageModeOutInterceptor e
>             
> message.getInterceptorChain().add(SAAJOutEndingInterceptor.INSTANCE);
>         }
>     }
> +    
> +    private void checkSchemaValidation(Message message) {
> +        
> +        if (ServiceUtils.isSchemaValidationEnabled(SchemaValidationType.OUT, 
> message)) {
> +            Service service = 
> ServiceModelUtil.getService(message.getExchange());
> +            if (service == null) {
> +                return;
> +            }
> +            Schema schema = 
> EndpointReferenceUtils.getSchema(service.getServiceInfos().get(0),
> +                            message.getExchange().getBus());
> +            if (schema == null) {
> +                return;
> +            }
> +            MessageContentsList list = 
> (MessageContentsList)message.getContent(List.class);
> +            if (list == null || list.isEmpty()) {
> +                return;
> +            }
> +            Object o = list.get(0);
> +            SOAPMessage soapMessage = null;
> +            
> +            if (o instanceof SOAPMessage) {
> +                soapMessage = (SOAPMessage)o;
> +                
> +                try {
> +                    DOMSource source = new 
> DOMSource(soapMessage.getSOAPBody().getFirstChild());
> +                    schema.newValidator().validate(source);
> +                } catch (SAXException e) {
> +                    throw new Fault(e);
> +                } catch (IOException e) {
> +                    throw new Fault(e);
> +                } catch (SOAPException e) {
> +                    throw new Fault(e);
> +                }
> +            } else if (o instanceof Source) {
> +                Source source = (Source)o;
> +                try {
> +                    schema.newValidator().validate(source);
> +                } catch (SAXException e) {
> +                    throw new Fault(e);
> +                } catch (IOException e) {
> +                    throw new Fault(e);
> +                }
> +            }
> +        }
> +        
> +    }
> 
> }
> 
> Modified: 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageDocProvider.java
> URL: 
> http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageDocProvider.java?rev=1513427&r1=1513426&r2=1513427&view=diff
> ==============================================================================
> --- 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageDocProvider.java
>  (original)
> +++ 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageDocProvider.java
>  Tue Aug 13 10:37:58 2013
> @@ -50,7 +50,7 @@ import org.apache.cxf.helpers.DOMUtils;
> //wsdlLocation = "/trunk/testutils/src/main/resources/wsdl/hello_world.wsdl"
> @WebServiceProvider(portName = "SoapProviderPort", serviceName = 
> "SOAPProviderService",
>                     targetNamespace = 
> "http://apache.org/hello_world_soap_http";,
> - wsdlLocation = "/wsdl/hello_world.wsdl")
> + wsdlLocation = 
> "/org/apache/cxf/systest/provider/hello_world_with_restriction.wsdl")
> @ServiceMode(value = Service.Mode.MESSAGE)            
> public class HWSoapMessageDocProvider implements Provider<SOAPMessage> {
> 
> @@ -62,6 +62,7 @@ public class HWSoapMessageDocProvider im
> 
>     private SOAPMessage sayHiResponse;
>     private SOAPMessage greetMeResponse;
> +    private SOAPMessage greetMeResponseExceedMaxLengthRestriction;
> 
>     public HWSoapMessageDocProvider() {
> 
> @@ -73,6 +74,9 @@ public class HWSoapMessageDocProvider im
>             is = 
> getClass().getResourceAsStream("resources/GreetMeDocLiteralResp.xml");
>             greetMeResponse =  factory.createMessage(null, is);
>             is.close();
> +            is = 
> getClass().getResourceAsStream("resources/GreetMeDocLiteralRespExceedLength.xml");
> +            greetMeResponseExceedMaxLengthRestriction =  
> factory.createMessage(null, is);
> +            is.close();
>         } catch (Exception ex) {
>             ex.printStackTrace();
>         }
> @@ -103,6 +107,8 @@ public class HWSoapMessageDocProvider im
>             String v = DOMUtils.getContent(el);
>             if (v.contains("Return sayHi")) {
>                 response = sayHiResponse;
> +            } else if (v.contains("exceed maxLength")) {
> +                response = greetMeResponseExceedMaxLengthRestriction;
>             } else if (v.contains("throwFault")) {
>                 try {
>                     SOAPFactory f = SOAPFactory.newInstance(); 
> 
> Modified: 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/ProviderClientServerTest.java
> URL: 
> http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/ProviderClientServerTest.java?rev=1513427&r1=1513426&r2=1513427&view=diff
> ==============================================================================
> --- 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/ProviderClientServerTest.java
>  (original)
> +++ 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/ProviderClientServerTest.java
>  Tue Aug 13 10:37:58 2013
> @@ -21,11 +21,17 @@ package org.apache.cxf.systest.provider;
> 
> import java.lang.reflect.UndeclaredThrowableException;
> import java.net.URL;
> +import java.util.HashMap;
> +import java.util.Map;
> 
> import javax.xml.namespace.QName;
> import javax.xml.ws.Endpoint;
> import javax.xml.ws.soap.SOAPFaultException;
> 
> +import org.apache.cxf.interceptor.LoggingInInterceptor;
> +import org.apache.cxf.interceptor.LoggingOutInterceptor;
> +import org.apache.cxf.jaxws.EndpointImpl;
> +import org.apache.cxf.message.Message;
> import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
> import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
> import org.apache.cxf.testutil.common.TestUtil;
> @@ -43,7 +49,14 @@ public class ProviderClientServerTest ex
> 
>         protected void run() {
>             Object implementor = new HWSoapMessageDocProvider();
> -            Endpoint.publish(ADDRESS, implementor);                          
>        
> +            Endpoint ep = Endpoint.create(implementor);
> +            Map<String, Object> map = new HashMap<String, Object>();
> +            map.put(Message.SCHEMA_VALIDATION_ENABLED, Boolean.TRUE);
> +            ep.setProperties(map);
> +            ((EndpointImpl)ep).getInInterceptors().add(new 
> LoggingInInterceptor());
> +            ((EndpointImpl)ep).getOutInterceptors().add(new 
> LoggingOutInterceptor());
> +            ep.publish(ADDRESS);
> +            
>         }
> 
>         public static void main(String[] args) {
> @@ -112,4 +125,47 @@ public class ProviderClientServerTest ex
> 
>     }
> 
> +    
> +    @Test
> +    public void testSOAPMessageModeDocLitWithSchemaValidation() throws 
> Exception {
> +        
> +        QName serviceName = 
> +            new QName("http://apache.org/hello_world_soap_http";, 
> "SOAPProviderService");
> +        QName portName = 
> +            new QName("http://apache.org/hello_world_soap_http";, 
> "SoapProviderPort");
> +
> +        URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
> +        assertNotNull(wsdl);
> +
> +        SOAPService service = new SOAPService(wsdl, serviceName);
> +        assertNotNull(service);
> +
> +        
> +        try {
> +            Greeter greeter = service.getPort(portName, Greeter.class);
> +            setAddress(greeter, ADDRESS);
> +            try {
> +                greeter.greetMe("this is a greetMe message which length is 
> more " 
> +                    + "than 30 so that I wanna a schema validation error");
> +                fail("Should have thrown an exception");
> +            } catch (Exception ex) {
> +                //expected 
> +                assertTrue(ex.getMessage().contains("cvc-maxLength-valid"));
> +            }
> +            
> +            try {
> +                String ret = greeter.greetMe("exceed maxLength");
> +                System.out.println("the ret is " + ret);
> +                fail("Should have thrown an exception");
> +            } catch (Exception ex) {
> +                //expected 
> +                assertTrue(ex.getMessage().contains("cvc-maxLength-valid"));
> +            }
> +            
> +        } catch (UndeclaredThrowableException ex) {
> +            throw (Exception)ex.getCause();
> +        }
> +        
> +    }
> +
> }
> 
> Added: 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/hello_world_with_restriction.wsdl
> URL: 
> http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/hello_world_with_restriction.wsdl?rev=1513427&view=auto
> ==============================================================================
> --- 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/hello_world_with_restriction.wsdl
>  (added)
> +++ 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/hello_world_with_restriction.wsdl
>  Tue Aug 13 10:37:58 2013
> @@ -0,0 +1,419 @@
> +<?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="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="greetMe">
> +                <complexType>
> +                    <sequence>
> +                        <element name="requestType">
> +                            <simpleType>
> +                                <restriction base="string">
> +                                    <maxLength value="30"></maxLength>
> +                                </restriction>
> +                            </simpleType>
> +                        </element>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="greetMeResponse">
> +                <complexType>
> +                    <sequence>
> +                        <element name="responseType">
> +                            <simpleType>
> +                                <restriction base="string">
> +                                    <maxLength value="30"></maxLength>
> +                                </restriction>
> +                            </simpleType>
> +                        </element>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +
> +            <element name="testNillable">
> +                <complexType>
> +                    <sequence>
> +                        <element name="NillElem" nillable="true" 
> type="string"/>
> +                        <element name="intElem" type="int"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="testNillableResponse">
> +                <complexType>
> +                    <sequence>
> +                        <element name="responseType" nillable="true" 
> type="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +
> +            <element name="greetMeLater">
> +                <complexType>
> +                    <sequence>
> +                        <element name="requestType" type="long"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="greetMeLaterResponse">
> +                <complexType>
> +                    <sequence>
> +                        <element name="responseType" type="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="greetMeSometime">
> +                <complexType>
> +                    <sequence>
> +                        <element name="requestType" type="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="greetMeSometimeResponse">
> +                <complexType>
> +                    <sequence>
> +                        <element name="responseType" type="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="greetMeOneWay">
> +                <complexType>
> +                    <sequence>
> +                        <element name="requestType" type="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="testDocLitFault">
> +                <complexType>
> +                    <sequence>
> +                        <element name="faultType" type="string"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="testDocLitFaultResponse">
> +                <complexType>
> +                    <sequence/>
> +                </complexType>
> +            </element>
> +            <complexType name="ErrorCode">
> +                <sequence>
> +                    <element name="minor" type="short"/>
> +                    <element name="major" type="short"/>
> +                </sequence>
> +            </complexType>
> +            <element name="NoSuchCodeLit">
> +                <complexType>
> +                    <sequence>
> +                        <element name="code" type="x1:ErrorCode"/>
> +                    </sequence>
> +                </complexType>
> +            </element>
> +            <element name="BadRecordLit" type="string"/>
> +            <complexType name="BadRecord">
> +                <sequence>
> +                    <element name="reason" type="string"/>
> +                    <element name="code" type="short"/>
> +                </sequence>
> +            </complexType>
> +            <complexType name="addNumbers">
> +                <sequence>
> +                    <element name="arg0" type="int"/>
> +                    <element name="arg1" type="int"/>
> +                </sequence>
> +            </complexType>
> +            <element name="addNumbers" type="x1:addNumbers"/>
> +            <complexType name="addNumbersResponse">
> +                <sequence>
> +                    <element name="return" type="int"/>
> +                </sequence>
> +            </complexType>
> +            <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
> +            <complexType name="stringStruct">
> +                <sequence>
> +                    <element name="arg0" type="string"/>
> +                    <element name="arg1" type="string"/>
> +                </sequence>
> +            </complexType>
> +            <element name="BareDocument" type="string"/>
> +            <element name="BareDocumentResponse">
> +                <complexType>
> +                    <sequence>
> +                        <element name="company" type="string"/>
> +                    </sequence>
> +                    <attribute name="id" type="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="testNillableRequest">
> +        <wsdl:part name="in" element="x1:testNillable"/>
> +    </wsdl:message>
> +    <wsdl:message name="testNillableResponse">
> +        <wsdl:part name="out" element="x1:testNillableResponse"/>
> +    </wsdl:message>
> +    <wsdl:message name="greetMeLaterRequest">
> +        <wsdl:part name="in" element="x1:greetMeLater"/>
> +    </wsdl:message>
> +    <wsdl:message name="greetMeLaterResponse">
> +        <wsdl:part name="out" element="x1:greetMeLaterResponse"/>
> +    </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 message="tns:sayHiRequest"/>
> +            <wsdl:output message="tns:sayHiResponse"/>
> +        </wsdl:operation>
> +        <wsdl:operation name="greetMe">
> +            <wsdl:input message="tns:greetMeRequest"/>
> +            <wsdl:output message="tns:greetMeResponse"/>
> +        </wsdl:operation>
> +        <wsdl:operation name="testNillable">
> +            <wsdl:input  message="tns:testNillableRequest"/>
> +            <wsdl:output  message="tns:testNillableResponse"/>
> +        </wsdl:operation>
> +        <wsdl:operation name="greetMeLater">
> +            <wsdl:input  message="tns:greetMeLaterRequest"/>
> +            <wsdl:output  message="tns:greetMeLaterResponse"/>
> +        </wsdl:operation>
> +        <wsdl:operation name="greetMeSometime">
> +            <wsdl:input  message="tns:greetMeSometimeRequest"/>
> +            <wsdl:output  message="tns:greetMeSometimeResponse"/>
> +        </wsdl:operation>
> +        <wsdl:operation name="greetMeOneWay">
> +            <wsdl:input  message="tns:greetMeOneWayRequest"/>
> +        </wsdl:operation>
> +        <wsdl:operation name="testDocLitFault">
> +            <wsdl:input  message="tns:testDocLitFaultRequest"/>
> +            <wsdl:output  message="tns:testDocLitFaultResponse"/>
> +            <wsdl:fault name="NoSuchCodeLitFault" 
> message="tns:NoSuchCodeLitFault"/>
> +            <wsdl:fault name="BadRecordLitFault" 
> message="tns:BadRecordLitFault"/>
> +        </wsdl:operation>
> +
> +    </wsdl:portType>
> +
> +    <wsdl:portType name="DocLitBare">
> +        <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="document" 
> 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="document"/>
> +            <wsdl:input>
> +                <soap:body use="literal"/>
> +            </wsdl:input>
> +            <wsdl:output>
> +                <soap:body use="literal"/>
> +            </wsdl:output>
> +        </wsdl:operation>
> +        <wsdl:operation name="testNillable">
> +            <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="greetMeLater">
> +            <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="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:binding>
> +    <wsdl:binding name="Doc_Lit_Bare_SOAPBinding" type="tns:DocLitBare">
> +        <soap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"/>
> +        <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"/>
> +        </wsdl:port>
> +
> +        <wsdl:port name="SoapPort1" binding="tns:Greeter_SOAPBinding">
> +            <soap:address 
> location="http://localhost:7000/SoapContext/SoapPort"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +
> +    <wsdl:service name="SOAPProviderService">
> +        <wsdl:port name="SoapProviderPort" binding="tns:Greeter_SOAPBinding">
> +            <soap:address 
> location="http://localhost:9003/SoapContext/SoapProviderPort"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +
> +    <wsdl:service name="SOAPDispatchService">
> +        <wsdl:port name="SoapDispatchPort" binding="tns:Greeter_SOAPBinding">
> +            <soap:address 
> location="http://localhost:9006/SOAPDispatchService/SoapDispatchPort"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +
> +    <wsdl:service name="SOAPService_DocLitBare">
> +        <wsdl:port name="SoapPort2" binding="tns:Doc_Lit_Bare_SOAPBinding">
> +            <soap:address 
> location="http://localhost:7600/SoapContext/SoapPort"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +    <wsdl:service name="SOAPServiceAddressingDocLitBare">
> +        <wsdl:port name="SoapPort" binding="tns:Doc_Lit_Bare_SOAPBinding">
> +            <soap:address 
> location="http://localhost:7600/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:service name="SOAPServiceAddressing">
> +        <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
> +            <soap:address 
> location="http://localhost:9008/SoapContext/SoapPort"/>
> +            <wswa:UsingAddressing 
> xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +    <wsdl:service name="SOAPServiceConcurrencyTest">
> +        <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
> +            <soap:address 
> location="http://localhost:9009/SoapContext/SoapPort"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +    <wsdl:service name="SOAPServiceBogusAddressTest">
> +        <wsdl:port name="SoapPort" binding="tns:Greeter_SOAPBinding">
> +            <soap:address location="FOO"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +    <wsdl:service name="SOAPServiceMultiPortTypeTest">
> +        <wsdl:port name="GreeterPort" binding="tns:Greeter_SOAPBinding">
> +            <soap:address 
> location="http://localhost:9020/MultiPort/GreeterPort"/>
> +        </wsdl:port>
> +        <wsdl:port name="DocLitBarePort" 
> binding="tns:Doc_Lit_Bare_SOAPBinding">
> +            <soap:address 
> location="http://localhost:9021/MultiPort/DocBarePort"/>
> +        </wsdl:port>
> +    </wsdl:service>
> +</wsdl:definitions>
> +
> 
> Added: 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/GreetMeDocLiteralRespExceedLength.xml
> URL: 
> http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/GreetMeDocLiteralRespExceedLength.xml?rev=1513427&view=auto
> ==============================================================================
> --- 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/GreetMeDocLiteralRespExceedLength.xml
>  (added)
> +++ 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/GreetMeDocLiteralRespExceedLength.xml
>  Tue Aug 13 10:37:58 2013
> @@ -0,0 +1,20 @@
> +<?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.
> +-->
> +<SOAP-ENV:Envelope 
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><SOAP-ENV:Body><ns4:greetMeResponse
>  
> xmlns:ns4="http://apache.org/hello_world_soap_http/types";><ns4:responseType>this
>  is a greetMeResponse message which lenght exceed the maxLength 
> restriction</ns4:responseType></ns4:greetMeResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
> 
> Modified: 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/XML_GreetMeDocLiteralResp.xml
> URL: 
> http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/XML_GreetMeDocLiteralResp.xml?rev=1513427&r1=1513426&r2=1513427&view=diff
> ==============================================================================
> --- 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/XML_GreetMeDocLiteralResp.xml
>  (original)
> +++ 
> cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/provider/resources/XML_GreetMeDocLiteralResp.xml
>  Tue Aug 13 10:37:58 2013
> @@ -1,2 +1,2 @@
> <?xml version="1.0" encoding="utf-8" ?>
> -<ns4:greetMeResponse 
> xmlns:ns4="http://apache.org/hello_world_soap_http/types";><ns4:responseType>TestXMLBindingProviderMessage</ns4:responseType></ns4:greetMeResponse>
> \ No newline at end of file
> +<ns4:greetMeResponse 
> xmlns:ns4="http://apache.org/hello_world_xml_http/wrapped/types";><ns4:responseType>TestXMLBindingProviderMessage</ns4:responseType></ns4:greetMeResponse>
> 
> 

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to