Resolved by adding the following to the end of the binding file:

        <mapping class="java.lang.Object" abstract="true" choice="true"
ordered="false">
                <namespace uri="http://www.opentravel.org/OTA/2003/05";
default="elements"/>
        </mapping>

This is a 'dummy' mapping but the result is the global names and namespace
arrays get populated :-)

> -----Original Message-----
> From: Paul Mahoney [mailto:[EMAIL PROTECTED] 
> Sent: 18 November 2008 19:50
> To: 'jibx-users@lists.sourceforge.net'
> Subject: bindingFactory.getElementNames() array values are ALL null
> 
> My apologies, the following description is involved and 
> requires some study.
> 
> I have run into a problem with JibX. I using version 1.1.5 as 
> that is the version installed with Axis 2.1.4. However I feel 
> the issue is with my bindings an not an axis issue.
> 
> I have a large collection of binding files. A simple one is 
> given here:
> --------------------------------------------------------------
> --------------------
> <binding direction="both" value-style="attribute">
>       <namespace uri="http://www.opentravel.org/OTA/2003/05"; 
> default="elements"/>
> 
>       <include path="OTA_AirCommonTypes.xml"/>
> 
>       <mapping name="OTA_PingRQ" class="uk.co.xact.ota.OTA_PingRQ">
>               <value name="EchoToken" field="echoToken" 
> usage="optional"/>
>               <value name="TimeStamp" field="timeStamp" 
> usage="optional"/>
>               <value name="Target" field="target" 
> deserializer="uk.co.xact.ota.commonTypes.oTA_PayloadStdAttribu
> tes.Target.get" usage="optional"/>
>               <value name="Version" field="version"/>
>               <value name="TransactionIdentifier" 
> field="transactionIdentifier" usage="optional"/>
>               <value name="SequenceNmbr" field="sequenceNmbr" 
> usage="optional"/>
>               <value name="TransactionStatusCode" 
> field="transactionStatusCode" 
> deserializer="uk.co.xact.ota.commonTypes.oTA_PayloadStdAttribu
> tes.TransactionStatusCode.get" usage="optional"/>
>               <value name="RetransmissionIndicator" 
> field="retransmissionIndicator" usage="optional"/>
>               <value name="PrimaryLangID" 
> field="primaryLangID" usage="optional"/>
>               <value name="AltLangID" field="altLangID" 
> usage="optional"/>
>               <value name="EchoData" field="echoData" 
> style="element"/>
>       </mapping>
> </binding> 
> --------------------------------------------------------------
> --------------------
> 
> As you see, the top level name OTA_PingRQ is mapped to 
> uk.co.xact.ota.OTA_PingRQ.
> 
> In my test code I use the following line to get the binding factory:
> 
>   bindingFactoryRQ = BindingDirectory.getFactory(OTA_PingRQ.class);
> 
> My basic questions is why bindingFactoryRQ.getElementNames() 
> return an array of null values. The mapping OTA_PingRQ is not 
> abstract.
> 
> The method bindingFactoryRQ.getElementNamespaces() also 
> returns an array of nulls. But this might be expected since 
> the mapping is in the default namespace.
> 
> Despite this, my junit test to marshal and unmarshal sample 
> xml files works fine. But thing go wrong for axis2. The issue 
> here is that within the AXIS skeleton code for the service it 
> uses the following code in the MessageReceiverInOut class:
> 
> --------------------------------------------------------------
> ----------------------
> private org.apache.axiom.om.OMElement mappedChild(Object 
> value, org.apache.axiom.om.OMFactory factory) {
>         org.jibx.runtime.IMarshallable mrshable = 
> (org.jibx.runtime.IMarshallable)value;
>         org.apache.axiom.om.OMDataSource src = new 
> org.apache.axis2.jibx.JiBXDataSource(mrshable, bindingFactory);
>         int index = mrshable.JiBX_getIndex();
>         org.apache.axiom.om.OMNamespace appns = 
> factory.createOMNamespace(bindingFactory.getElementNamespaces(
> )[index], "");
>         return factory.createOMElement(src, 
> bindingFactory.getElementNames()[index], appns);
>     }
> --------------------------------------------------------------
> ----------------------
>  
> The call to factory.creatOMNamespace() throws an NPE because 
> bindingFactory.getElementNamespaces()[index] = null.
> 
> I am using the WSDL2JAVA code generator with the following 
> 'top-level' binding file:
> 
> --------------------------------------------------------------
> ----------------------
> <binding direction="both" value-style="attribute">
>   <namespace uri="http://www.opentravel.org/OTA/2003/05"; 
> default="elements"/>
>   <include path="../../gensrc/jibx/OTA_PingRQ.xml"/>
>   <include path="../../gensrc/jibx/OTA_PingRS.xml"/>
> </binding>
> --------------------------------------------------------------
> ----------------------
> 
> The type section of the WSDL file is:
> --------------------------------------------------------------
> ----------------------
> <wsdl:types>
>  <xs:schema>
>   <xs:import 
> namespace="http://www.opentravel.org/OTA/2003/05"; 
> schemaLocation="http://www.xact.co.uk/ota/OTA_PingRQ.xsd"/>
>   <xs:import 
> namespace="http://www.opentravel.org/OTA/2003/05"; 
> schemaLocation="http://www.xact.co.uk/ota/OTA_PingRS.xsd"/>
>  </xs:schema>
> </wsdl:types>
> --------------------------------------------------------------
> ----------------------
> 
> Any pointers on why the array values are all null would be 
> most appreciated.
> 
> Regards
> 
> Paul
> 


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to