I have no insight into why this is happening, but it seems to me that
Strouble is asking for trouble. I don't know your motivation in wanting
such a class, but since it appears from your one example that there is
some relation between the D and the S, would it not be possible to store
only the double value and implement a getter for the String value in
terms of the stored double?
The reason I ask you this is because I have such a class that implements
a TelephoneNumber. It stores it as a ten-digit string stripped of all
formatting, and then has a getFormatted() method that returns a
presentable representation. If this is not going to work with Jibx, it
would be good to know this before I get too far into it, and make other
plans.
Will Brown wrote:
> Hello jibbixers,
>
> here an annoying problem I need help solving.
>
> I have defined a two-field Java class called Strouble, to hold a
> double value and a String value. The idea is to keep both the raw data
> (double) and the formatted (String) representation of one floating
> point number in objects of this class.
>
> I now have a quite complex data object called Company containing many
> Stroubles which I want to be marshalled into XML showing both the
> double and String value. This worked before (I'm quite sure) but after
> I changed the structure of my binding file it stopped working.
>
> Here are scaled down versions of the classes:
>
> public class Company {
> private Strouble xxx;
> .....
> public Company()
> {
> test = new Strouble();
> test.setD(1234.5678);
> test.setS("1,234.6");
> }
> }
> public class Strouble {
> protected double d;
> protected String s;
> public Strouble(double d, String s)
> {
> this.d = d;
> this.s = s;
> }
> }
>
> And here is a scaled down version of the binding file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <binding direction="output">
> <mapping class="x.y.z.Response" name="data">
> <collection field="responseitems">
> <structure type="x.y.z.ResponseItem">
> <value field="error" name="error" usage="optional"/>
> <structure field="company" name="company" usage="optional">
> <value field="xxx" name="xxx"/>
> .....
> </structure>
> </structure>
> </collection>
> </mapping>
> <mapping class="x.y.z.Strouble" abstract="true">
> <value field="d" name="d"/>
> <value field="s" name="s"/>
> </mapping>
> </binding>
>
> And here is the output I get:
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <data>
> <company>
> <test>[EMAIL PROTECTED]</test>
> .....
> </company>
> </data>
>
> As you see, I don't get the d and s fields of the Strouble type, but
> rather something that looks like a pointer reference. The Company
> object is embedded like so:
>
> class Response { // the outermost <structure>
> ArrayList<ResponseItem> responseitems; // the <collection>
> }
>
> class ResponseItem { // the inner <structure>
> String error;
> Company company;
> }
>
> The idea is that a Response consists of several response-items, and a
> response-item is either an error message, or a Company. They are both
> usage="optional" so I always let precisely one of them be null. I had
> an earlier version where the company was not so deeply nested and then
> I think the Strouble marshalling worked fine.
>
> Why is my mapping ignored? What can I do about it?
>
> Best regards,
> Doc
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save $100.
> Use priority code J8TL2D2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> ------------------------------------------------------------------------
>
> _______________________________________________
> jibx-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jibx-users
>
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users