You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/04/06 18:36:27 UTC

svn commit: r1310459 - in /cxf/branches/2.4.x-fixes: ./ common/common/src/main/java/org/apache/cxf/staxutils/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/ rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/

Author: dkulp
Date: Fri Apr  6 16:36:26 2012
New Revision: 1310459

URL: http://svn.apache.org/viewvc?rev=1310459&view=rev
Log:
Merged revisions 1307446 via  svn merge from
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes

........
  r1307446 | dkulp | 2012-03-30 10:36:54 -0400 (Fri, 30 Mar 2012) | 10 lines
  
  Merged revisions 1307438 via  git cherry-pick from
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1307438 | dkulp | 2012-03-30 10:21:08 -0400 (Fri, 30 Mar 2012) | 3 lines
  
    [CXF-4181] Another fix for SAAJ and fault handling that should allow the
    SAAJInInterceptor to retain all the information about the faults
  
  ........
........

Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java
    cxf/branches/2.4.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
    cxf/branches/2.4.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java?rev=1310459&r1=1310458&r2=1310459&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java (original)
+++ cxf/branches/2.4.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java Fri Apr  6 16:36:26 2012
@@ -68,6 +68,11 @@ public class W3CDOMStreamWriter implemen
         currentNode = e;
         ((W3CNamespaceContext)context).setElement(e);
     }
+    public W3CDOMStreamWriter(Document owner, Element e) {
+        this.document = owner;
+        currentNode = e;
+        ((W3CNamespaceContext)context).setElement(e);
+    }
     
     public Element getCurrentNode() {
         if (currentNode instanceof Element) {

Modified: cxf/branches/2.4.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java?rev=1310459&r1=1310458&r2=1310459&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java (original)
+++ cxf/branches/2.4.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java Fri Apr  6 16:36:26 2012
@@ -29,10 +29,8 @@ import java.util.ResourceBundle;
 
 import javax.xml.namespace.QName;
 import javax.xml.soap.AttachmentPart;
-import javax.xml.soap.Detail;
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFault;
 import javax.xml.soap.SOAPHeader;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.soap.SOAPPart;
@@ -54,8 +52,6 @@ import org.apache.cxf.binding.soap.SoapH
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
 import org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor;
-import org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor;
-import org.apache.cxf.binding.soap.interceptor.Soap12FaultInInterceptor;
 import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.injection.NoJSR250Annotations;
 import org.apache.cxf.databinding.DataBinding;
@@ -224,67 +220,12 @@ public class SAAJInInterceptor extends A
                 soapMessage.getSOAPPart().getEnvelope().addHeader();
             }
             
-
-            if (hasFault(message, xmlReader)) {
-                SoapFault fault = 
-                    message.getVersion() instanceof Soap11 
-                    ? Soap11FaultInInterceptor.unmarshalFault(message, xmlReader)
-                    : Soap12FaultInInterceptor.unmarshalFault(message, xmlReader);
-<<<<<<< HEAD
-                if (fault.getFaultCode() != null) {
-                    soapFault.setFaultCode(fault.getFaultCode());
-                }
-                if (fault.getMessage() != null) {
-                    soapFault.setFaultString(fault.getMessage());
-                }
-                if (fault.getRole() != null) {
-                    soapFault.setFaultActor(fault.getRole());
-                }
-                if (fault.getDetail() != null
-                    && fault.getDetail().getFirstChild() != null) {
-=======
->>>>>>> 941b6cf... [CXF-4181] Fix for SAAJ + SOAP 1.2 fault...
-                    
-                SOAPFault soapFault = 
-                    soapMessage.getSOAPPart().getEnvelope().getBody().getFault();
-                if (soapFault == null) {
-                    soapFault = 
-                        soapMessage.getSOAPPart().getEnvelope().getBody().addFault();
-                    if (fault.getFaultCode() != null) {
-                        SAAJUtils.setFaultCode(soapFault, fault.getFaultCode());
-                    }
-                    if (fault.getMessage() != null) {
-                        soapFault.setFaultString(fault.getMessage());
-                    }
-                    if (fault.getRole() != null) {
-                        soapFault.setFaultActor(fault.getRole());
-                    }
-                    if (fault.getDetail() != null
-                        && fault.getDetail().getFirstChild() != null) {
-                        
-                        Detail detail = null;
-                        Node child = fault.getDetail().getFirstChild();
-                        if (child != null) {
-                            detail = soapFault.addDetail();
-                        }
-                        while (child != null) {
-                            if (Node.ELEMENT_NODE == child.getNodeType()) {
-                                Node importedChild = soapMessage.getSOAPPart().importNode(child, true);
-                                detail.appendChild(importedChild);
-                            }
-                            child = child.getNextSibling();
-                        }
-                    }
-                }
-                DOMSource bodySource = new DOMSource(soapFault);
-                xmlReader = StaxUtils.createXMLStreamReader(bodySource);
-            } else { 
-                StaxUtils.readDocElements(soapMessage.getSOAPBody(), xmlReader, true, true);
-                DOMSource bodySource = new DOMSource(soapMessage.getSOAPPart().getEnvelope().getBody());
-                xmlReader = StaxUtils.createXMLStreamReader(bodySource);
-                xmlReader.nextTag();
-                xmlReader.nextTag(); // move past body tag
-            }
+            StaxUtils.readDocElements(soapMessage.getSOAPPart().getEnvelope().getBody(),
+                                      xmlReader, true, true);
+            DOMSource bodySource = new DOMSource(soapMessage.getSOAPPart().getEnvelope().getBody());
+            xmlReader = StaxUtils.createXMLStreamReader(bodySource);
+            xmlReader.nextTag();
+            xmlReader.nextTag(); // move past body tag
             message.setContent(XMLStreamReader.class, xmlReader);           
         } catch (SOAPException soape) {
             throw new SoapFault(new org.apache.cxf.common.i18n.Message(
@@ -342,15 +283,4 @@ public class SAAJInInterceptor extends A
             elem = DOMUtils.getNextElement(elem);
         }
     }
-
-
-    private static boolean hasFault(SoapMessage message, 
-                                    XMLStreamReader xmlReader) {
-        try {
-            QName name = xmlReader.getName();
-            return message.getVersion().getFault().equals(name);
-        } catch (Exception e) {
-            return false;
-        }
-    }
 }

Modified: cxf/branches/2.4.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java?rev=1310459&r1=1310458&r2=1310459&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptorTest.java Fri Apr  6 16:36:26 2012
@@ -33,7 +33,7 @@ import javax.xml.soap.SOAPMessage;
 import javax.xml.stream.XMLStreamReader;
 
 import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
 
 import org.apache.cxf.BusFactory;
 import org.apache.cxf.binding.soap.Soap12;
@@ -126,8 +126,15 @@ public class SAAJInInterceptorTest exten
         assertEquals("soap:Server", fault.getFaultCode());
         assertEquals("This is a fault string", fault.getFaultString());
         Detail faultDetail = fault.getDetail();
-        NodeList faultDetailChildNodes = faultDetail.getChildNodes();
-        assertEquals(2, faultDetailChildNodes.getLength());
+        int count = 0;
+        Node nd = faultDetail.getFirstChild();
+        while (nd != null) {
+            if (nd instanceof Element) {
+                count++;
+            }
+            nd = nd.getNextSibling();
+        }
+        assertEquals(2, count);
         
         Iterator<?> detailEntries = faultDetail.getDetailEntries();
         DetailEntry detailEntry = (DetailEntry)detailEntries.next();