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

Reply via email to