cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Freeman Fang <freeman.f...@gmail.com>
Subject Re: svn commit: r1513711 - in /cxf/trunk: core/src/main/java/org/apache/cxf/databinding/source/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ systests/databinding/src/test/java/org/apache/cxf/systest/source/
Date Thu, 15 Aug 2013 05:24:50 GMT
Hi Jason,

It's in org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor where create the XMLStreamDataWriter
and set the schema into the XMLStreamDataWriter if it determine this message need validate,
it's in the setDataWriterValidation method.
-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat
Web: http://fusesource.com | http://www.redhat.com/
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: @Freeman小屋



On 2013-8-15, at 下午1:14, Jason Pell wrote:

> Just wondering where the code to turn off out schema validation is going to
> land? Its gone from message mode out interceptor but the diff does not seem
> to add it in anywhere.
> 
> I am without a computer so I can't check the code out to look but wanted to
> make sure it was not lost-
> On Aug 14, 2013 11:53 AM, <ffang@apache.org> wrote:
> 
>> Author: ffang
>> Date: Wed Aug 14 01:53:02 2013
>> New Revision: 1513711
>> 
>> URL: http://svn.apache.org/r1513711
>> Log:
>> [CXF-5169]move the out message schemavalidate to source databinding
>> 
>> Modified:
>> 
>> cxf/trunk/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
>> 
>> cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/MessageModeOutInterceptor.java
>> 
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/ClientServerSourceTest.java
>> 
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/GreeterImpl.java
>> 
>> Modified:
>> cxf/trunk/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
>> URL:
>> http://svn.apache.org/viewvc/cxf/trunk/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java?rev=1513711&r1=1513710&r2=1513711&view=diff
>> 
>> ==============================================================================
>> ---
>> cxf/trunk/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
>> (original)
>> +++
>> cxf/trunk/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
>> Wed Aug 14 01:53:02 2013
>> @@ -28,12 +28,15 @@ import javax.xml.stream.XMLStreamReader;
>> import javax.xml.stream.XMLStreamWriter;
>> import javax.xml.transform.Source;
>> import javax.xml.transform.dom.DOMSource;
>> +import javax.xml.transform.stream.StreamSource;
>> import javax.xml.validation.Schema;
>> 
>> import org.w3c.dom.Document;
>> import org.w3c.dom.DocumentFragment;
>> import org.w3c.dom.Node;
>> 
>> +import org.xml.sax.SAXException;
>> +
>> import org.apache.cxf.common.i18n.Message;
>> import org.apache.cxf.common.logging.LogUtils;
>> import org.apache.cxf.databinding.DataWriter;
>> @@ -46,6 +49,8 @@ import org.apache.cxf.staxutils.W3CDOMSt
>> public class XMLStreamDataWriter implements DataWriter<XMLStreamWriter> {
>>     private static final Logger LOG =
>> LogUtils.getL7dLogger(XMLStreamDataWriter.class);
>> 
>> +    private Schema schema;
>> +
>>     public void write(Object obj, MessagePartInfo part, XMLStreamWriter
>> output) {
>>         write(obj, output);
>>     }
>> @@ -55,14 +60,24 @@ public class XMLStreamDataWriter impleme
>>             XMLStreamReader reader = null;
>>             if (obj instanceof DataSource) {
>>                 DataSource ds = (DataSource)obj;
>> +                if (schema != null) {
>> +                    StreamSource ss = new
>> StreamSource(ds.getInputStream());
>> +                    schema.newValidator().validate(ss);
>> +                }
>>                 reader =
>> StaxUtils.createXMLStreamReader(ds.getInputStream());
>>                 StaxUtils.copy(reader, writer);
>>                 reader.close();
>>             } else if (obj instanceof Node) {
>> +                if (schema != null) {
>> +                    schema.newValidator().validate(new
>> DOMSource((Node)obj));
>> +                }
>>                 Node nd = (Node)obj;
>>                 writeNode(nd, writer);
>>             } else {
>>                 Source s = (Source) obj;
>> +                if (schema != null) {
>> +                    schema.newValidator().validate(s);
>> +                }
>>                 if (s instanceof DOMSource
>>                     && ((DOMSource) s).getNode() == null) {
>>                     return;
>> @@ -74,6 +89,9 @@ public class XMLStreamDataWriter impleme
>>                             e.getClass().getCanonicalName(),
>> e.getMessage());
>>         } catch (IOException e) {
>>             throw new Fault(new Message("COULD_NOT_WRITE_XML_STREAM",
>> LOG), e);
>> +        } catch (SAXException e) {
>> +            throw new Fault("COULD_NOT_WRITE_XML_STREAM_CAUSED_BY", LOG,
>> e,
>> +                            e.getClass().getCanonicalName(),
>> e.getMessage());
>>         }
>>     }
>> 
>> @@ -119,6 +137,7 @@ public class XMLStreamDataWriter impleme
>>     }
>> 
>>     public void setSchema(Schema s) {
>> +        this.schema = s;
>>     }
>> 
>>     public void setAttachments(Collection<Attachment> attachments) {
>> 
>> 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=1513711&r1=1513710&r2=1513711&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
>> Wed Aug 14 01:53:02 2013
>> @@ -34,15 +34,11 @@ 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;
>> @@ -53,7 +49,6 @@ 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;
>> @@ -64,13 +59,10 @@ 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;
>> @@ -90,7 +82,6 @@ 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;
>> @@ -303,50 +294,6 @@ public class MessageModeOutInterceptor e
>>         }
>>     }
>> 
>> -    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/databinding/src/test/java/org/apache/cxf/systest/source/ClientServerSourceTest.java
>> URL:
>> http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/ClientServerSourceTest.java?rev=1513711&r1=1513710&r2=1513711&view=diff
>> 
>> ==============================================================================
>> ---
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/ClientServerSourceTest.java
>> (original)
>> +++
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/ClientServerSourceTest.java
>> Wed Aug 14 01:53:02 2013
>> @@ -87,7 +87,7 @@ public class ClientServerSourceTest exte
>>         DOMSource ds = new DOMSource(doc);
>>         DOMSource resp = port.sayHi(ds);
>>         assertEquals("We should get the right response", "Bonjour",
>> -                     DOMUtils.getContent(getElement(resp.getNode())));
>> +
>> DOMUtils.getContent(getElement(resp.getNode().getFirstChild().getFirstChild())));
>> 
>>         doc = DOMUtils.newDocument();
>>         Element el = doc.createElementNS("
>> http://apache.org/hello_world_soap_http_source/source/types",
>> 
>> Modified:
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/GreeterImpl.java
>> URL:
>> http://svn.apache.org/viewvc/cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/GreeterImpl.java?rev=1513711&r1=1513710&r2=1513711&view=diff
>> 
>> ==============================================================================
>> ---
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/GreeterImpl.java
>> (original)
>> +++
>> cxf/trunk/systests/databinding/src/test/java/org/apache/cxf/systest/source/GreeterImpl.java
>> Wed Aug 14 01:53:02 2013
>> @@ -44,9 +44,11 @@ public class GreeterImpl implements Gree
>>         Document doc = DOMUtils.newDocument();
>>         Element el = doc.createElementNS("
>> http://apache.org/hello_world_soap_http_source/source/types",
>>             "ns1:sayHiResponse");
>> -        el.appendChild(doc.createTextNode("Bonjour"));
>> +        Element el2 = doc.createElementNS("
>> http://apache.org/hello_world_soap_http_source/source/types",
>> +            "ns1:responseType");
>> +        el2.appendChild(doc.createTextNode("Bonjour"));
>> +        el.appendChild(el2);
>>         doc.appendChild(el);
>> -
>>         return new DOMSource(doc);
>>     }
>>     private Element getElement(Node nd) {
>> 
>> 
>> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message