Gillings, Jeff (RBI-US)
Fri, 11 Jul 2008 12:34:05 -0700
I would like to have a mapping that inherits the value-style set by the enclosing element. Based on this page: http://jibx.sourceforge.net/details/value-element.html It says style: "defaults to the value set by the innermost containing element with a value-style attribute, which will always be either the "attribute" or "element" choice." Given the following XML I want to unmarshall: <customer_add_response><customer customer_id="100749" user_code="303"/></customer_add_response> If the value-style is set on the rbi.it.think.jdomain.Customer mapping, the values are unmarshalled into the Customer object as you would expect. Here is the binding. <binding> <mapping class="rbi.it.think.jdomain.Customer" abstract="true" value-style="attribute"> <value field="customerId" name="customer_id" usage="optional"/> <value field="customerCategory" name="customer_category" usage="optional"/> <value field="userCode" name="user_code" usage="optional"/> </mapping> <mapping class="rbi.it.think.jdomain.Response" abstract="true"/> <mapping name="customer_add_response" class="rbi.it.think.jdomain.CustomerAddResponse" extends="rbi.it.think.jdomain.Response"> <structure map-as="rbi.it.think.jdomain.Response"/> <structure field="customer" name="customer" usage="optional"/> </mapping> </binding> But, if I put the value-style instead on any enclosing element of the Customer (and remove it from Customer), the values do not get unmarshalled. e.g. if I put value-style="attribute" on structure as: <mapping name="customer_add_response" class="rbi.it.think.jdomain.CustomerAddResponse" extends="rbi.it.think.jdomain.Response"> <structure map-as="rbi.it.think.jdomain.Response"/> <structure field="customer" name="customer" usage="optional" value-style"attribute"/> </mapping> Or on mapping as: <mapping name="customer_add_response" class="rbi.it.think.jdomain.CustomerAddResponse" extends="rbi.it.think.jdomain.Response" value-style="attribute"> <structure map-as="rbi.it.think.jdomain.Response"/> <structure field="customer" name="customer" usage="optional"/> </mapping> I do not get any values unmarshalled into the Customer obj. Note that the unmarshal does not throw an exception. It just does not set the values. Here are the pojos: public class Customer implements java.io.Serializable { public int customerId; public String customerCategory; public String userCode; public Date creationDate; } public class Response implements java.io.Serializable { } public class CustomerAddResponse extends Response implements java.io.Serializable { public Customer customer; public CustomerIdentifier customerIdentifier; } The reason I want to specify the value-style above the Customer object, is that I want to reuse the Customer mapping in other Request (not shown) mappings where The value-style needs to be "element".
------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________ jibx-users mailing list jibx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jibx-users