Author: scheu
Date: Sat Aug  2 06:21:33 2008
New Revision: 681968

URL: http://svn.apache.org/viewvc?rev=681968&view=rev
Log:
WSCOMMONS-367
Code Contributor: Nick Gallardo
Test Contributor:Rich Scheuerle
Fix to SOAP11BuilderHelper to support CDATA

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAP11BuilderHelper.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAP11BuilderHelper.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAP11BuilderHelper.java?rev=681968&r1=681967&r2=681968&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAP11BuilderHelper.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAP11BuilderHelper.java
 Sat Aug  2 06:21:33 2008
@@ -147,9 +147,11 @@
             while (token != XMLStreamReader.END_ELEMENT) {
                 if (token == XMLStreamReader.CHARACTERS) {
                     factory.createOMText(value, parser.getText());
+                } else if (token == XMLStreamReader.CDATA) {
+                    factory.createOMText(value, parser.getText());
                 } else {
                     throw new SOAPProcessingException(
-                            "Only Characters are allowed here");
+                    "Only Characters are allowed here");
                 }
                 token = parser.next();
             }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java?rev=681968&r1=681967&r2=681968&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilderTest.java
 Sat Aug  2 06:21:33 2008
@@ -664,4 +664,30 @@
         this.assertTrue(localName.equals("Fault"));
         this.assertTrue(!parser.isReadBody());
     }
+    
+    public void testFaultWithCDATA() throws Exception {
+        String soap11Fault = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<SOAP-ENV:Envelope 
xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\";>" +
+                    "<SOAP-ENV:Body>" +
+                    "<SOAP-ENV:Fault>" +
+                        "<faultcode>SOAP-ENV:Server</faultcode>" +
+                        "<faultstring xml:lang=\"en\"><![CDATA[handleMessage 
throws SOAPFaultException for 
ThrowsSOAPFaultToClientHandlersTest]]></faultstring>" +
+                        "<detail>" +
+                            "<somefaultentry/>" +
+                        "</detail>" +
+                        "<faultactor>faultActor</faultactor>" +
+                        "</SOAP-ENV:Fault>" +
+                    "</SOAP-ENV:Body>" +
+                "</SOAP-ENV:Envelope>";
+        XMLStreamReader soap11Parser = XMLInputFactory.newInstance()
+                .createXMLStreamReader(new StringReader(soap11Fault));
+        StAXSOAPModelBuilder soap11Builder = new 
StAXSOAPModelBuilder(soap11Parser, null);
+        OMElement element = soap11Builder.getDocumentElement();
+        element.build();
+        assertTrue(element instanceof SOAPEnvelope);
+        SOAPEnvelope se =  (SOAPEnvelope) element;
+        SOAPFault fault = se.getBody().getFault();
+        SOAPFaultReason reason = fault.getReason();
+        assertTrue(reason.getText().equals("handleMessage throws 
SOAPFaultException for ThrowsSOAPFaultToClientHandlersTest"));
+    }
 }


Reply via email to