When serializing CDATA STAX Parser throws IllegalArgumentException
------------------------------------------------------------------

                 Key: WSCOMMONS-341
                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-341
             Project: WS-Commons
          Issue Type: Bug
          Components: AXIOM
            Reporter: Tim Mitchell


We are hitting a problem when a SOAPEnvelope containing CDATA is serialised 
using the SOAPEnvelope.serializeAndConsume():

java.lang.IllegalArgumentException: The specified CDATA text was null.
        at 
com.ibm.xml.xlxp.api.stax.msg.StAXMessageProvider.throwIllegalArgumentException(StAXMessageProvider.java:41)
        at 
com.ibm.xml.xlxp.api.stax.XMLStreamWriterImpl.writeCData(XMLStreamWriterImpl.java:675)
        at 
com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl$XMLStreamWriterProxy.writeCData(XMLOutputFactoryImpl.java:163)
        at 
org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeCData(MTOMXMLStreamWriter.java:212)
        at 
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeCData(StreamingOMSerializer.java:426)
        at 
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeNode(StreamingOMSerializer.java:137)
        at 
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:92)
        at 
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:76)
        at 
org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSerializerUtil.java:572)
        at 
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:232)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:958)
        at 
org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:471)
        at 
org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:68)
        at 
org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
        at 
org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
        at 
org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
        at 
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at 
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
        at 
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        at 
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at 
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
        at 
org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
        at 
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:189)
        at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
        at 
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:364)
        at 
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:208)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:450)
        at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401)
        at 
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
        at 
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
        at 
org.prototype.PrototypeHTTPClient.sendMessage(PrototypeHTTPClient.java:275)

I have debugged the problem and have found that in 
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeCData() it 
does writer.writeCData(reader.getText());. The reader.getText() invokes the 
OMStAXWrapper.getText() which checks to see if it the currentElement  is of a 
certain type, and CData isn't one of the types it checks, so it returns null, 
and this causes the exception.
Should the CDATA type be added to hasText() ? 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to