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"));
+ }
}