[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jibx-users
Subject:    Re: [jibx-users] Problems with named abstract mappings
From:       Dennis Sosnoski <dms () sosnoski ! com>
Date:       2006-03-08 22:50:32
Message-ID: 440F5FB8.8050400 () sosnoski ! com
[Download RAW message or body]

Hi Dave,

The basic problem here is that you're defining the ClientAccountNumber 
mapping without any actual values, so JiBX will just merrily process the 
start and end tag while ignoring any text in between. In your case, you 
want the text to be treated as a value that goes into the created object 
(and is passed in the constructor). This is what you're already doing in 
the later example. To make this work in the first case, you just need to 
add a type="xxx" attribute to override the field type stated in the code:

	<!-- Account -->
	<mapping class="domain.Account" name="account"
		ordered="true">
		<value name="number" field="number" type="domain.ClientAccountNumber"/>
	</mapping>

and delete the other <mappings> completely. That's really the easiest 
way to handle this, since you want to use the value for the constructor 
of the object.

  - Dennis

davejenk@paradise.net.nz wrote:

>Hi,
>I have the following (abbreviated) mappings
>
>	<!-- Account -->
>	<mapping class="domain.Account" name="account"
>		ordered="true">
>		<structure name="number" field="number" map-as="clientAccountNumber"/>
>	</mapping>
>
>	<!-- Client Account Number -->
>	<mapping abstract="true"
>		class="domain.ClientAccountNumber"
>		type-name="clientAccountNumber"
>		extends="domain.AccountNumber">
>	</mapping>
>
>	<!-- Account Number -->
>	<mapping abstract="true"
>		class="domain.AccountNumber">
>	</mapping>
>
>Account contains an AccountNumber of subtype ClientAccountNumber.
>AccountNumber contains only abstract methods.
>
>The incoming xml looks like this:
>
><account><number>123456789012345</number></account>
>
>After unmarshalling the Account the AccountNumber property is null.
>
>
>
>The ClientAccountNumber mapping works elsewhere, where the containing object has
>an ClientAccountNumber property (not an AccountNumber type).
>
>	<mapping class="domain.TransactionSummary"
>		name="transactionSummary" ordered="false">
>		<value name="clientAccountNumber" field="clientAccountNumber"
>			usage="optional" />
>
>
>
>The ClientAccountNumber class has a single arg contructor that takes the account
>number property value.
>
>If I extend the ClientAccountNumber mapping to include the account number
>property I get a binding compiler error:
>
>java.lang.IllegalStateException: Internal error: Expected
>domain.ClientAccountNumber on stack, found domain.AccountNumber
>
>Any ideas?
>
>cheers
>
>Dave
>  
>


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic