Thanks I'll check out if your approach will work for me.
Regards Paul > -----Original Message----- > From: Alex Dickinson [mailto:[EMAIL PROTECTED] > Sent: 10 October 2008 20:14 > To: JiBX users > Subject: Re: [jibx-users] Unmarshalling optional and empty structures > > We ran in to a similar problem where we had to set a boolean depending > on whether the element was present or not. To do so, we used a custom > serializer (included below), with the following <value> element: > > <value name='confirmed' > usage='optional' > test-method='isValuePresent' > get-method='isValuePresent' > set-method='setvaluePresent' > serializer='EmptyElementSerializer.serialize' > deserializer='EmptyElementSerializer.deserialize' /> > > > public final class EmptyElementSerializer > { > private static final String EMPTY_STRING = ""; > > > private EmptyElementSerializer() > { > } > > public static String serialize(boolean b) > { > return b ? EMPTY_STRING : null; > } > > public static boolean deserialize(String val) > { > return val != null && > ((val.length() == 0) || Boolean.parseBoolean(val)); > } > } > > Cheers, > Alex > > Paul Mahoney wrote: > > Hi > > > > I have the following binding: > > > > <mapping name="OTA_PingRS" class="uk.co.xact.ota.OTA_PingRS"> > > <value name="EchoToken" field="echoToken" usage="optional"/> > > <value name="TimeStamp" field="timeStamp" usage="optional"/> > > <value name="Target" field="target" > deserializer="uk.co.xact.ota.commonType.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.commonType.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"/> > > <structure ordered="false" choice="true"> > > <structure name="Errors" field="errors" usage="optional"/> > > <structure usage="optional"> > > <structure name="Success" field="success" > usage="optional"/> > > <structure name="Warnings" field="warnings" > usage="optional"/> > > <value name="EchoData" field="echoData" > style="element" usage="optional"/> > > </structure> > > </structure> > > </mapping> > > > > When jibx (1.1.5) unmarshals the message: > > > > <?xml version="1.0" encoding="UTF-8"?> > > <OTA_PingRS xmlns="http://www.opentravel.org/OTA/2003/05" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 > > OTA_PingRS.xsd" TimeStamp="2003-03-17T11:09:49-05:00" > Target="Production" Version="1.001" SequenceNmbr="1"> > > <Success/> > > <EchoData>Are you There</EchoData> > > </OTA_PingRS> > > > > The object for the <Success/> element is not created, so if I > > immediately marshal the object tree I get: > > > > <OTA_PingRS xmlns="http://www.opentravel.org/OTA/2003/05" > TimeStamp="2003-03-17T11:09:49-05:00" Target="Production" > Version="1.001" SequenceNmbr="1"> > > <EchoData>Are you There</EchoData> > > </OTA_PingRS> > > > > As you can see, the <Success/> element is missing. > > > > Is there a way to tell the unmarshaller to create the > object mapped to > > the <Success/> element? Obviously I don't want it if the > element is not > > in the XML, but I do if it is... even though it's empty. > > > > Regards > > Paul > > *----* > > *Paul Mahoney, Director, X-Act Solutions Limited* > > *smail: 71 South Cliff, Bexhill-on-Sea, East Sussex, TN39 3EE* > > *phone: +44 (0) 1424 731240* > > *email: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > > > > > > > > -------------------------------------------------------------- > ---------- > > > > > -------------------------------------------------------------- > ----------- > > 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 > > > > -------------------------------------------------------------- > ----------- > 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 > ------------------------------------------------------------------------- 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