Hi Dennis, Thanks for your answer. I am not sure I understand your suggestion about treating the id values as strings. Where would those strings be stored in the unmarshalled object? Are you suggesting to add a customerId property of type string to the account class, and specify a pre-get method that fills in the customerId just before marshalling?
Thanks, -Jonas > Hi Jonas, > > When you use the ident="def"/"ref" technique in JiBX it expects you to > have the definition for each reference present in your document. In your > case, you're just defining the account id values (not referencing them) > and just referencing the customer id values (not defining them). There's > really no reason to use ident in this case, and if you instead just > remove the ident attributes and treat the id values as simple strings > you should get what you want. > > - Dennis > > Dennis M. Sosnoski > SOA and Web Services in Java > Training and Consulting > http://www.sosnoski.com - http://www.sosnoski.co.nz > Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117 > > > > [EMAIL PROTECTED] wrote: > > 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 > > -- Sensationsangebot verlängert: GMX FreeDSL - Telefonanschluss + DSL für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K1308T4569a ------------------------------------------------------------------------- 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