I managed to risolve this error by using the following mapping file.
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd";>
<mapping>
  <description>Mapping per il file dei dati di test verso una lista di
TestDatabean</description>

  <class
name="it.aci.tabelleComuni.normalizzatoreResidenze.junit.bean.TestDataList">
        <field name="list" collection="arraylist"
type="it.aci.tabelleComuni.normalizzatoreResidenze.junit.bean.TestDataBean">
                <bind-xml name="test"/>
        </field>
  </class>

  <class
name="it.aci.tabelleComuni.normalizzatoreResidenze.junit.bean.TestDataBean">
                <field name="inputBean"
type="it.aci.tabelleComuni.normalizzatoreResidenze.bean.InputBean"
container="true">
                </field>
                <field name="id" type="int">
                <bind-xml name="id" node="element"/>
                </field>
                <field name="comuneEsito" type="int">
                <bind-xml name="comuneEsito" node="element"/>
                </field>
                <field name="comuneElaborazione" type="int">
                <bind-xml name="comuneElaborazione" node="element"/>
                </field>
                <field name="localitaEsito" type="int">
                <bind-xml name="localitaEsito" node="element"/>
                </field>
                <field name="localitaElaborazione" type="int">
                <bind-xml name="localitaElaborazione" node="element"/>
                </field>
                <field name="indirizzoEsito" type="int">
                <bind-xml name="indirizzoEsito" node="element"/>
                </field>
                <field name="indirizzoElaborazione" type="int">
                <bind-xml name="indirizzoElaborazione" node="element"/>
                </field>
  </class>
  
  <class name="it.aci.tabelleComuni.normalizzatoreResidenze.bean.InputBean">
        <field name="codiceProvincia" type="string"/>
        <field name="descrizioneComune" type="string"/>
        <field name="descrizioneLocalita" type="string"/>
        <field name="cap" type="string"/>
        <field name="descrizioneDug" type="string"/>
        <field name="indirizzoString" type="string"/>
        <field name="civico" type="string"/>
        <field name="comuneTipoCodifica" type="int"/>
        <field name="indirizzoTipoCodifica" type="int"/>
  </class>


</mapping>

Note the "container" attribute, which isn't documented in the official
documentation
(http://www.castor.org/xml-mapping.html#3.4-The-<field>-element) but in this
case saved my life!
Now I have just another new annoying error, about which I find little help
online. I get the following error when I execute my program:
The container object
(it.aci.tabelleComuni.normalizzatoreResidenze.bean.InputBean) cannot accept
the child object associated with the element 'comuneTipoCodifica' because
the container is already full!{file: [not available]; line: 13; column: 22}

Any ideas??? If I eliminate the comuneTipoCodifica and indirizzoTipoCodifica
fields from my data file, everything works fine.
Thanks in advance!



jvleminc wrote:
> 
> Hello,
> 
> I am having the following problem with a Castor XML->bean mapping. I don't
> manage to group a series of xml fields
> into a bean. Let me explain.
> The bean to be filled: TestDataBean.java
> public class TestDataBean extends BaseBean {
>       private int id;
>       private InputBean inputBean;
> 
>       private int comuneEsito; 
>       private int comuneElaborazione; 
>       private int localitaEsito;              
>       private int localitaElaborazione;               
>       private int indirizzoEsito; 
>       private int indirizzoElaborazione; 
>           /* getter + setter */
> }
> 
> where InputBean.java:
> public class InputBean  extends
> it.aci.tabelleComuni.normalizzatoreResidenze.utils.BaseBean  {
>     private java.lang.String cap;
>     private java.lang.String civico;
>     private java.lang.String descrizioneComune;
>     private java.lang.String descrizioneDug;
>     private java.lang.String descrizioneLocalita;
>     private java.lang.String indirizzoString;
>     private java.lang.String codiceProvincia;
>     private int comuneTipoCodifica;
>     private int indirizzoTipoCodifica;
>    /* getter + setter*/
> }
> 
> My input file xml: 
> <?xml version="1.0" encoding="UTF-8"?>
> <dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
> <test>
> <id>1</id>
> <comuneElaborazione>101</comuneElaborazione>
> <comuneEsito>100</comuneEsito>
> <localitaElaborazione>980</localitaElaborazione>
> <localitaEsito>900</localitaEsito>
> <indirizzoElaborazione>980</indirizzoElaborazione>
> <indirizzoEsito>900</indirizzoEsito>
> <codiceProvincia>AR</codiceProvincia>
> <descrizioneComune>CIVITELLA IN VAL DI CHIANA</descrizioneComune>
> <comuneTipoCodifica>999</comuneTipoCodifica>
> <indirizzoTipoCodifica>999</indirizzoTipoCodifica>
> </test>
> <!-- more tests -->
> </dataroot>
> 
> I want the fields that are not *Esito or *Elaborazione (such as
> codiceProvincia or descrizioneComune) to fill the InputBean, inside the
> TestDataBean, but whatever I try, I get a (correct) "unable to find
> FieldDescriptor for 'codiceProvincia' in ClassDescriptor of
> test-data-bean" error.
> My current mapping file is this one:
> <mapping>
>   <description>Mapping per il file dei dati di test verso una lista di
> TestDatabean</description>
> 
>   <class
> name="it.aci.tabelleComuni.normalizzatoreResidenze.junit.bean.TestDataList">
>       <field name="list" collection="arraylist"
> type="it.aci.tabelleComuni.normalizzatoreResidenze.junit.bean.TestDataBean">
>               <bind-xml name="test"/>
>       </field>
>   </class>
> 
>   <class
> name="it.aci.tabelleComuni.normalizzatoreResidenze.junit.bean.TestDataBean">
>               <field name="id" type="int">
>               <bind-xml name="id" node="element"/>
>               </field>
>               <field name="comuneEsito" type="int">
>               <bind-xml name="comuneEsito" node="element"/>
>               </field>
>               <field name="comuneElaborazione" type="int">
>               <bind-xml name="comuneElaborazione" node="element"/>
>               </field>
>               <field name="localitaEsito" type="int">
>               <bind-xml name="localitaEsito" node="element"/>
>               </field>
>               <field name="localitaElaborazione" type="int">
>               <bind-xml name="localitaElaborazione" node="element"/>
>               </field>
>               <field name="indirizzoEsito" type="int">
>               <bind-xml name="indirizzoEsito" node="element"/>
>               </field>
>               <field name="indirizzoElaborazione" type="int">
>               <bind-xml name="indirizzoElaborazione" node="element"/>
>               </field>
>   </class>
>   
>   <class
> name="it.aci.tabelleComuni.normalizzatoreResidenze.bean.InputBean">
>       <field name="codiceProvincia" type="string"/>
>       <field name="descrizioneComune" type="string"/>
>       <field name="descrizioneLocalita" type="string"/>
>       <field name="cap" type="string"/>
>       <field name="descrizioneDug" type="string"/>
>       <field name="indirizzoString" type="string"/>
>       <field name="civico" type="string"/>
>       <field name="comuneTipoCodifica" type="integer"/>
>       <field name="indirizzoTipoCodifica" type="integer"/>
>   </class>
> 
> </mapping>
> 
> It seems in need some inverse "collection" atribute somewhere inside my
> mapping, but I don't know how to indicate that several root fields have to
> be grouped into a sub-bean.
> 
> Any help is appreciated! Thanks in advance.
> 
> Joris
> 

-- 
View this message in context: 
http://www.nabble.com/Group-several-root-fields-into-a-sub-bean-tf3362109.html#a9354749
Sent from the Castor - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to