Hi,
We are receiving two elements from the SOAP response. The first element is
MTOM that contains the base64Binary data. The second element is a simple
String.
I am using maven axis2-wsdl2code-maven-plugin to generate the java code from
wsdl.
The maven generate the below code snippet
*************************************************************************************************************************************
*if* (reader.isStartElement() && *new*
javax.xml.namespace.QName("http://adobe.com/idp/services","MTOM"
).equals(reader.getName())){
reader.next();
*if* (*isReaderMTOMAware*(reader)
&&
java.lang.Boolean.*TRUE*
.equals(reader.getProperty(org.apache.axiom.om.OMConstants.*IS_BINARY*)))
{
//MTOM aware reader - get the *
datahandler* directly and put it in the object
object.setMTOM(
(javax.activation.DataHandler)
reader.getProperty(org.apache.axiom.om.OMConstants.*DATA_HANDLER*));
} *else* {
*if* (reader.getEventType() ==
javax.xml.stream.XMLStreamConstants.*START_ELEMENT* &&
reader.getName().equals(*new*
javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.*
XOP_NAMESPACE_URI*, org.apache.axiom.om.impl.MTOMConstants.*XOP_INCLUDE*)))
{
java.lang.String id =
org.apache.axiom.om.util.ElementHelper.*getContentID**(reader, **"UTF-8"**)*
;
object.setMTOM(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder)
((org.apache.axiom.om.impl.llom.OMStAXWrapper)
reader).getBuilder()).getDataHandler(id));
reader.next();
reader.next();
} *else* *if*(reader.hasText()) {
//Do the usual conversion
java.lang.String content =
reader.getText();
object.setMTOM(
org.apache.axis2.databinding.utils.ConverterUtil.*convertToBase64Binary*
(content));
reader.next();
}
}
reader.next();
}
***********************************************************************************************************************************
Actually the above code snippet parses the first element "MTOM" and then it
could not able to parse the second element "a simple string element"
If i add the below code snippet, it could able to parse the second element
*if* (*isReaderMTOMAware*(reader)
&&
java.lang.Boolean.*TRUE*
.equals(reader.getProperty(org.apache.axiom.om.OMConstants.*IS_BINARY*)))
{
//MTOM aware reader - get the *
datahandler* directly and put it in the object
object.setMTOM(
(javax.activation.DataHandler)
reader.getProperty(org.apache.axiom.om.OMConstants.*DATA_HANDLER*));
*reader.next()*
*
*
*
*
Can you please check why the parse could not able to handle the SOAP
response that has MTOM element followed by a simple element of type string?
Is it a bug in Axis2?
Thanks,
Gandhirajan
}