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

Reply via email to