[
http://jira.codehaus.org/browse/JIBX-72?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dennis Sosnoski closed JIBX-72.
-------------------------------
> WISHLIST: Empty Element existence as an property setter for boolean fields
> --------------------------------------------------------------------------
>
> Key: JIBX-72
> URL: http://jira.codehaus.org/browse/JIBX-72
> Project: JiBX
> Issue Type: Wish
> Components: core
> Reporter: Chris Chen
> Assignee: Dennis Sosnoski
> Fix For: JiBX 1.2
>
>
> As discussed in the mailing list a while back (I have attached the email
> below), it would be nice to allow a way to use the presence of an empty
> element to indicate boolean value.
> For instance, the existence of <required/> will automatically set an
> arbitrarily designated boolean field to be set to true. During marshalling,
> if the boolean field is false, then such an element will not be marshalled.
> From our previous discussion, Dennis indicated that it might be a bit
> complicated to add support for such behavior. I am thinking of something
> that might be easy to implement. Perhaps by adding another option to the
> style attribute will help. For instance:
> <value name="required" field="required" style="booleanElement"/>
> With the indicated style, jibx will know that during unmarshalling, the
> existence of the element will automatically set the field to true. With this
> style, the <value> is implicitly declared optional (usage="optional") by
> default.
> During marshalling, if false, then this element is not written out. If true,
> then the element is written out as an empty element.
> I believe this might help to ease the implementation of such a feature
> without too much code changes.
> =================================================================================
> You might be able to do part of what you want by playing games with
> deserializers, if you"re only unmarshalling XML. Try using a custom
> deserializer that always returns "true", like:
>
> public static boolean presenceDeserializer(String value) {
> return true;
> }
>
> and set up the binding to use this deserializer method for the
> <required/> element, binding the element to feature1Required. If the
> <required/> element is present the deserializer will get called; if the
> element isn"t present the boolean will just have the default "false"
> value. You could also do something similar for the <feature1> element -
> say that it contains a <value type="text" .../> which you bind to the
> feature1Supported flag, using the same presenceDeserializer.
>
> This gets more complicated if you need to marshal as well as unmarshal.
> In theory you should be able to do this with test-methods for the
> values, but it might get messy. This would also mean more changes to
> your code, while for unmarshalling you can do essentially everything in
> the binding definition.
>
> I suppose for 2.0 I could generalize the test-method to also support a
> test-field, or just define some way of associating an element directly
> with a boolean. That gets ugly, though, in that you want it both for
> simple elements (corresponding to <value> elements in the binding
> definition) and those with substructure (corresponding to <structure>
> elements). I think this has come up a few times, though, so some easier
> way of handling the situation would be nice.
>
> - Dennis
>
> Mocky Habeeb wrote:
>
> >I don"t believe there is a better way to do that than with your own
> >marshaller since you"re not directly mapping a value in the xml to your
> >java. I think the custom marshaller is the way to go, it seems like you
> >want to extend what JiBX can do.
> >
> >Mocky
> >
> >
> >
> >-----Original Message-----
> >From: jibx-users-ad...@li...
> >[mailto:jibx-users-ad...@li...] On Behalf Of Chris Chen
> >Sent: Saturday, April 16, 2005 3:28 AM
> >To: jibx-us...@li...
> >Subject: [jibx-users] Binding File question
> >
> >
> >Hi,
> >
> >I am wondering if anyone can tell me if it"s possible to map the
> >following XML to a class:
> >
> >The XML is something like this:
> >
> ><features>
> > <feature1>
> > <required/>
> > </feature1>
> ></features>
> >
> >The class is something like this:
> >
> >class Features {
> > boolean feature1Supported;
> > boolean feature1Required;
> >
> > //additional set/get methods
> >}
> >
> >Is it possible with JiBX to define the binding file such that I can set
> >a boolean value when a certain element exists (ie. <required/> in this
> >case)? If so, how do I go about handling subelements and mapping them
> >to the Features class as shown above? I"ve been pondering this for a
> >while. The only way I can currently deal with this is through custom
> >marshallers and unmarshallers.
> >
> >I am wondering if there is a better way other than writing custom code.
> >
> >Thank you for your time,
> >Chris
> >
> >
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
jibx-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-devs