Thomas, thanks again. It doesn't work, when I leave out line 103, it just does not find the respective fields. What helps, however, is to copy the AbstractCommand definition directly into the Alert and rid of line 103 this way. This works for me. So I think my problem is solved now, but of course would still be interested in a "cleaner" way to do it.
Markus Thomas Jones-Low schrieb: > Markus Meyer wrote: > >> Thomas, >> >> Thomas Jones-Low schrieb: >> >>> In the <mapping class="AbstractCommand"> there is a <structure >>> field="credential">, you need to add either a name or a map-as to this >>> this tag. >>> >>> >> thanks for the pointer. Unfortunately, your suggestions did not work. >> Infact, Jibx does not seem to need the name or map-as because the >> mapping from the field name to the type is done using the java source. >> Infact, looking through the "binding.xml" file, there are relatively few >> "name" tags at all, and most seem to be infered automatically. >> >> I found, however, another interesting behaviour. When I put the "Cred" >> tag before the "Data" tag (i.e. next to the "CmdID") tag, the data is >> read in properly, like this: >> >> <Alert><CmdID>2</CmdID><Cred/><Data>201</Data></Alert> >> >> When I put the "Cred" tag _after_ "Data", the XML fails to read: >> >> <Alert><CmdID>2</CmdID><Data>201</Data><Cred/></Alert> >> >> Looking at the "binding.xml" file, we see this: >> >> 88 <mapping class="com.funambol.framework.core.AbstractCommand" >> abstract="true" ordered="false"> >> 89 <structure name="CmdID" field="cmdID" usage="optional"> >> 90 <value field="cmdID" style="text"/> >> 91 </structure> >> 92 <value name="NoResp" field="noResp" format="formatBoolean" >> usage="optional"/> >> 93 <structure field="credential" usage="optional"/> >> 94 </mapping> >> ... >> 102 <mapping name="Alert" class="com.funambol.framework.core.Alert" >> extends="com.funambol.framework.core.AbstractCommand" ordered="false"> >> 103 <structure >> map-as="com.funambol.framework.core.AbstractCommand" usage="optional"/> >> 104 <value name="Data" field="data" usage="optional"/> >> 105 <value name="Correlator" field="correlator" >> usage="optional"/> >> 106 <collection field="items" >> item-type="com.funambol.framework.core.Item" usage="optional"/> >> 107 </mapping> >> >> It seems that although for both classes "ordered=false" is set, Jibx >> first wants to read all tags within the base class AbstractCommand >> (namely "CmdID" and "Cred", then goes on to read the Alert class' tags >> (namely "Data"). If we put the "Data" between the "CmdID" and "Cred" it >> is confused and throws the error. >> >> Is this the expected behaviour of Jibx? Is there a workaround (other >> than giving up the hierarchical classes)? >> >> >> > This is something to try: Try removing line 103. > > What your mapping says is: All of the AbstractCommand fields (in any > order) and then the Data, Correlator fields (in any order). But the > AbstractCommand fields are a single structure, and must be grouped > together. > > The <mapping extended=""> automatically includes the fields from the > extended class, there isn't any reason to repeat structure in the Alert > mapping. > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ jibx-users mailing list jibx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jibx-users