cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ff...@apache.org
Subject 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 Wed, 14 Aug 2013 01:53:02 GMT
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
View raw message