I'm traveling right now but will look into this further when I get back
later in the week. I should be able to fix this to work properly.

  - Dennis

Original Message:
-----------------
From: Anibal Rego-Dacal [EMAIL PROTECTED]
Date: Sat, 8 May 2004 23:38:08 +0200 (CEST)
To: [EMAIL PROTECTED]
Subject: Re: [jibx-users] abstract mapping with value style attribute


I get the same error as before.
If I go back to using a mapping for TbScan  that extends an abstract base
for 
BaseTbScan, I still have the problem with the repeated attribute.
It is not enough, to change the TbScanPK class.
If I have only the TbScan and the TbScanPK class without the two base
classes, it works.
But if I have a TbScan which extends the BaseTbscan class, and a TbScanPK
without the base class, I have the attibute two times in the xml.
If the TbScanPK also extends a base class, I have the attribute four times
in the xml.
I would be grateful for a solution, because I can not change the class
hierarchy.

Thanks

Anibal

>I see. There's one simple change you can try for this, which is to add a 
><structure> element corresponding to the base class with no name and no 
>property, and to use the type attribute on the access to the PK to again 
>access the base class:
>
> <structure name="hawb_status" type="TbScan">
>   <value field="unique_id" name="unique_id"
>     style="attribute" usage="optional"/>
>   <structure type="BaseTbScan">
>     <structure field="_comp_id" type="BaseTbScanPK">
>       <value style="attribute" field="_dfPod" name="id"
>         get-method="getDfPod"/>
>       <value field="_dfPacknr" name="piece_no" usage="optional"/>
>       <value field="_dfScandat" name="date" usage="optional"/>
>       <value field="_dfScantime" name="time" usage="optional"/>
>     </structure>
>   </structure>
>   ...
>
>In theory, this should let you access the parent class information as 
>part of the binding definition for the child class. I don't know that 
>this has ever been tested, though, so no guarantees. If the current JiBX 
>code doesn't let you do the <structure type="BaseTbScan">... you can 
>enter it as a bug and I'll look into getting it fixed (probably for beta
4).
>
>If this doesn't work, your other approach for now is to go back to using 
>a <mapping> for TbScan that extends an abstract base <mapping> for 
>BaseTbScan. You're going to have to make some change to the PK classes 
>to get this to work, though, since you don't have a separate element for 
>the PK and therefore can't define it using a <mapping>.
>
>  - Dennis
>
>[EMAIL PROTECTED] wrote:
>
>>I got this exception when I tested your suggestion:
>>
>> [bind] org.jibx.runtime.JiBXException: Field _comp_id not found in class
TbScan at tag "structure"(line 9, col 44, in binding-hawb-status.xml)
>>
>>It only works if  the fields are defined  in the TbScan and not in the
base class.
>>
>>Thanks 
>>
>>Anibal
>>
>>
>>  
>>
>>>Okay, I was confused on what you were trying to do in the original 
>>>mapping. Abstract mappings are intended to be extended by other mappings 
>>>and not used directly, and non-abstract mappings need to have an 
>>>associated element name - you were trying to use abstract mappings as 
>>>though they were regular mappings, just without an element name. I don't 
>>>think you need to use mappings in your case, though - you can just put 
>>>everything inline. Here's a cut-and-pasted version of your binding that 
>>>should do what you want (untested, so there may be cut-and-paste errors, 
>>>but it should at least show you the approach):
>>>
>>>       <mapping name="hawbs" class="States" ordered="false">
>>>               <value field="agent" name="agent" usage="optional"/>
>>>               <collection field="statusList" usage="optional">
>>>                       <structure name="hawb_status" type="TbScan">
>>>                               <value field="unique_id" 
>>>name="unique_id" style="attribute"
>>>                                       usage="optional"/>
>>>                               <structure field="_comp_id" 
>>>type="TbScanPK" >
>>>                                       <value style="attribute" 
>>>field="_dfPod" name="id" get-method="getDfPod"/>
>>>                                       <value field="_dfPacknr" 
>>>name="piece_no" usage="optional"/>
>>>                                       <value field="_dfScandat" 
>>>name="date" usage="optional"/>
>>>                                       <value field="_dfScantime" 
>>>name="time" usage="optional"/>
>>>                               </structure>
>>>                               <structure name="status" usage="optional">
>>>                                       <value field="_dfScananlass" 
>>>name="code" style="attribute"
>>>                                               usage="optional"/>
>>>                               </structure>
>>>                       </structure>
>>>               </collection>
>>>       </mapping>
>>>
>>>I wouldn't think you actually want the <mapping> to be unordered, but 
>>>left this in since you had it as part of the original version.
>>>
>>> - Dennis
>>>
>>>    
>>>
>>
>>
>>[EMAIL PROTECTED] wrote:
>>
>>  
>>
>>>I do not want an abstract mapping to extend another abstract mapping.
>>>There is a structure within the element with another mapping extending
an abstract mapping.
>>>These are my classes:
>>>
>>>public class TbScan extends BaseTbScan {
>>>     private String unique_id;
>>>       ...
>>>}
>>>
>>>public abstract class BaseTbScan  implements Serializable {
>>>     private TbScanPK _comp_id;
>>>     // fields
>>>     private java.lang.Integer _dfScananlass;
>>>       ...
>>>}
>>>
>>>
>>>public class TbScanPK extends BaseTbScanPK {
>>>      ...
>>>}
>>>
>>>public class BaseTbScanPK implements Serializable {
>>>     private java.lang.String _dfPod;
>>>     private java.lang.Integer _dfPacknr;
>>>     private java.sql.Date _dfScandat;
>>>     private java.sql.Time _dfScantime;
>>>       ...
>>>}
>>>
>>>How can I map this or is not possible?
>>>
>>>Thanks
>>>
>>>Anibal
>>>








-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to 
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
jibx-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-users


--------------------------------------------------------------------
mail2web - Check your email from the web at
http://mail2web.com/ .




-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
jibx-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to