Hello

I'm trying to marshal/unmarshal part of an object graph where references to 
objects that shall not be marshalled are replaced by IDs that are unique per 
type.  As an example, let us assume we have the following two classes:

public class Customer {
  private String id;
  private String name;
  // getters and setters
}

public class Account {
  private String id;
  private Customer customer;
  private double balance;
  // getters and setters
}

That is, each customer has a unique ID string, and a customer can have multiple 
accounts, where each account has a unique ID string as well.

Let's now say we want to create an XML representation of all the accounts in 
the system without marshalling the customer objects themselves, but only their 
IDs.  For example, the XML could look as follows:

<accounts>
  <account>
    <id>A1</id>
    <customer-id>C1</customer-id>
    <balance>500.0</balance>
  </account>
  <account>
    <id>A2</id>
    <customer-id>C1</customer-id>
    <balance>-23.0</balance>
  </account>
  <account>
    <id>A3</id>
    <customer-id>C2</customer-id>
    <balance>11.0</balance>
  </account>
</accounts>

I achieved something like this by defining a mappings as follows:

<mapping name="customer" class="Customer">
  <value name="id" field="id" ident="def"/>
  <value name="name" field="name"/>
</mapping>

<mapping name="account" class="Account">
  <value name="id" field="id" ident="def"/>
  <value name="customer-id" field="customer" ident="ref"/>
  <value name="balance" field="balance"/>
</mapping>

<mapping name="accounts" class="AccountList">
  <collection field="items" item-type="Account" 
factory="org.jibx.runtime.Utility.arrayListFactory">
</mapping>

where class AccountList is a helper class and defined as follows:

public class AccountList {
  private List<Account> items;
  // getters and setters
}

Now, my problem is the unmarshalling.  I would have expected JiBX to create a 
series of Account objects and referenced Customer objects, where the Customer 
objects of course have only set the id property (since nothing else can be 
derived from the XML data).  In the specific example above, I would have 
expected JiBX to create three Account objects (A1, A2, and A3) as well as two 
Customer objects (C1, C2), where A1 and A2 reference C1 and A3 references C2.  
However, no Customer objects are created and the references in the Account 
objects are set to null.

How would you go about this?  What is the best way to achieve something like 
this?

Thanks in advance!

-Jonas
-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: 
http://www.gmx.net/de/go/multimessenger

-------------------------------------------------------------------------
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

Reply via email to