Hello,
I am trying to create a service to return a composite of response elements from
other services. I am able to successfully serialize the response by obtaining
an OMElement like this:
OMElement elem =
response.getOMElement(
GetDcDataResponse.MY_QNAME,
OMAbstractFactory.getOMFactory()
);
String rspStr = elem.toString();
System.out.println(rspStr);
This produces this output:
<ns5:getDcDataResponse xmlns:ns5="http://acme.com/dc/xsd">
<ns5:responseHeader>
<ns1:responseCode
xmlns:ns1="http://acme.com/xsd/v1_0">0</ns1:responseCode>
<ns1:responseDescription
xmlns:ns1="http://acme.com/xsd/v1_0"></ns1:responseDescription>
</ns5:responseHeader>
<ns5:dcResponseData1>
<Array1 xmlns="http://acme.com/dc/xsd/d1">
<Id>10</Id>
<TypeCode>BT</TypeCode>
<Amount>0.0</Amount>
</Array1>
<Array1 xmlns="http://acme.com/dc/xsd/d1">
<Id>10</Id>
<TypeCode>RT</TypeCode>
<Amount>0.0</Amount>
</Array1>
<ns3:ArrayCount
xmlns:ns3="http://acme.com/dc/xsd/d1">4</ns3:ctrbRateArrayCount>
</ns5:dcResponseData1>
<ns5:dcResponseData2>
<Array2 xmlns="http://acme.com/dc/xsd/d2">
<Id>10</Id>
<BrandCode>PB</BrandCode>
<Amount>3232939.34</Amount>
</Array2>
<ns2:ArrayCount
xmlns:ns2="http://acme.com/dc/xsd/d2">2</ns2:dcBalArrayCount>
</ns5:dcResponseData2>
</ns5:getDcDataResponse>
My issue is that even though this is perfectly valid XML, the
MTOMAwareOMBuilder chokes on this response because it is maintaining a list of
prefix to namespace mappings and it incorrectly thinks that the "" prefix is
trying to be used for both http://acme.com/dc/xsd/d1 and
http://acme.com/dc/xsd/d2. It seems like part of the problem is that the
dcResponseData1 and dcResponseData2 ADB beans do not declare a MY_QNAME - they
instead rely on the parent QName (see below):
public class DcResponseData1
implements org.apache.axis2.databinding.ADBBean{
/* This type was generated from the piece of schema that had
name = DcResponseData1
Namespace URI = http://acme.com/dc/xsd/d2
Namespace Prefix = ns2
*/
public class DcResponseData2
implements org.apache.axis2.databinding.ADBBean{
/* This type was generated from the piece of schema that had
name = DcResponseData2
Namespace URI = http://acme.com/dc/xsd/d1
Namespace Prefix = ns3
*/
Is there a way to force ADB to always create MY_QNAME on all generated beans so
that there are no "" prefixes in the serialized XML or is there a way for me to
not use the MTOMAwareOMBuilder?
Thanks,
Wally Dennis