Hi,

I just updated from subversion and the SAAJ Integration test seems to be
failing:

    [junit] Running org.apache.axis2.saaj.integration.IntegrationTest
    [junit] Tests run: 3, Failures: 0, Errors: 3, Time elapsed: 9.717
sec
    [junit] [ERROR] TEST
org.apache.axis2.saaj.integration.IntegrationTest FAILED


one of the failures is as follows:

  <testcase name="testSendReceiveMessageWithAttachment" time="3.094">
    <error message="java.lang.UnsupportedOperationException"
type="org.apache.axiom.om.OMException">org.apache.axiom.om.OMException:
java.lang.UnsupportedOperationException
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next
(StAXOMBuilder.java:280)
        at org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling
(OMElementImpl.java:263)
        at org.apache.axiom.om.impl.traverse.OMChildrenIterator.next
(OMChildrenIterator.java:111)
        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize
(OMElementImpl.java:766)
        at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize
(SOAPEnvelopeImpl.java:163)
        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize
(OMElementImpl.java:751)
        at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize
(OMNodeImpl.java:306)
        at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize
(OMNodeImpl.java:347)
        at org.apache.axiom.om.impl.llom.OMElementImpl.toString
(OMElementImpl.java:894)
        at java.lang.String.valueOf(String.java:2131)
        at java.lang.StringBuffer.append(StringBuffer.java:370)
        at org.apache.axis2.saaj.SOAPConnectionImpl.toOMSOAPEnvelope
(SOAPConnectionImpl.java:293)
        at org.apache.axis2.saaj.SOAPConnectionImpl.handleSOAPMessage
(SOAPConnectionImpl.java:147)
        at org.apache.axis2.saaj.SOAPConnectionImpl.call
(SOAPConnectionImpl.java:116)
        at
org.apache.axis2.saaj.integration.IntegrationTest.testSendReceiveMessageWithAttachment(IntegrationTest.java:127)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
Caused by: java.lang.UnsupportedOperationException
        at org.apache.axiom.om.impl.dom.DOMStAXWrapper.getProperty
(DOMStAXWrapper.java:880)
        at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText
(StAXBuilder.java:190)
        at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText
(StAXBuilder.java:168)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next
(StAXOMBuilder.java:222)
        ... 28 more
</error>
  </testcase>



As the stack trace says,
org.apache.axiom.om.impl.dom.DOMStAXWrapper.getProperty throws an
UnsupportedOperationException (always).  I'm guessing that these errors
may have arisen due to this change:

/webservices/commons/trunk/modules/axiom/src/org/apache/axiom/om/impl/builder/StAXBuilder.java
Revision 391323 - (view) (download) (as text) - [select for diffs] 
Modified Tue Apr 4 14:39:20 2006 UTC (3 hours, 22 minutes ago) by
chinthaka 
File length: 13046 byte(s) 
Diff to previous 391204 (colored) 
- problem: when serializing into a text node, we lose the fact that sometimes 
the text node's content is binary characters
    ==> hence, right now, to be safe we always serialize as base64

- solution for ADB (which may be used by others):
    - if the text content being generated is infact of binary nature (i.e., a 
DataHandler), then when a CHARACTERS event is generated 
by the ADB pull parser, the parser's getProperty() method will return true for 
"are you binary?"
    - if the value of that property is true, then parser.getProperty() for the 
"data handler" property will return a data handler 
which can be used to access the binary data

- we also change StaXOMBuilder to check this property and create the TextNode 
appropriately 

This commit will only change StAXOMBuilder and hopefully Ajith will change ADB 
for this.

(This commit has a small catch as getProperty method of XMLStreamReader will 
return IllegalArgumentException, which is a 
RuntimeException if the property is not found. So I had to catch this and 
create OMText within the catch statement. )


-Bill

Reply via email to