Hello list
Sorry for my double post, however I needed some answers from whom who know
castor better :)
Diogo

-----Original Message-----
From: Diogo Quintela (EF) [mailto:[EMAIL PROTECTED] 
Sent: ter�a-feira, 24 de Maio de 2005 12:36
To: [email protected]
Cc: [EMAIL PROTECTED]
Subject: [castor-user] Marshall with location not working properly !

Hello List
I have the following XML and MAPPING FILE. (bellow ....)

When I have one list as described below (think only LstContaDP1) 
--------------------------------------------------------------------
        <LstContaDP1>
                <data>
                        <row>
                                <field1>...</field1>
                        </row>
                        <row>
                                ...
                        </row>
                </data>
        </LstContaDP1>
--------------------------------------------------------------------

That works great with the following map
--------------------------------------------------------------------
        <field name="entries" type="pt.ef.ConsultaDPResponseEntry"
         collection="array">
                <bind-xml name="row" node="element"
location="LstContaDP1/data">
                        <class name="pt.ef.ConsultaDPResponseEntry" 
                        auto-complete="false">  
                        ...
                        </class>
                </bind-xml>
        </field>
--------------------------------------------------------------------

The problem is that now I have to support two similar lists, where the types
are different.
--------------------------------------------------------------------
        <LstContaDP1>
                <data>
                        <row>
                                <field1>...</field1>
                        </row>
                        <row>
                                ...
                        </row>
                </data>
        </LstContaDP1>
        <LstContaDP2>
                <data>
                        <row>
                                <field1>...</field1>
                        </row>
                        <row>
                                ...
                        </row>
                </data>
        </LstContaDP2>
--------------------------------------------------------------------

So I made the following modification to my mapping file.
--------------------------------------------------------------------
        <field name="entries" type="pt.ef.ConsultaDPResponseEntry"
         collection="array">
                <bind-xml name="row" node="element"
location="LstContaDP1/data">
                        <class name="pt.ef.ConsultaDPResponseEntry" 
                        auto-complete="false">  
                        ...
                        </class>
                </bind-xml>
        </field>
        <field name="entries" type="pt.ef.ConsultaDPResponseEntryEx"
         collection="array">
                <bind-xml name="row" node="element"
location="LstContaDP2/data">
                        <class name="pt.ef.ConsultaDPResponseEntryEx" 
                        auto-complete="false">  
                        ...
                        </class>
                </bind-xml>
        </field>
--------------------------------------------------------------------
Marshal is OK.
Unmarshal blows with exception. 
It seems that whenever is unmarshiling list LstContaDP2 is trying to use a
wrong mapping ??

Any help is needed...
TIA
Diogo Quintela

--------------------------------------------------------------------
EXCEPTION
--------------------------------------------------------------------
unable to find FieldDescriptor for 'MontReforco' in ClassDescriptor of
consulta-dPResponse-entry{fil
e: [not available]; line: 2; column: 1253}
        at
org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:671)
        at
org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:565)
        at
apis.multicanal.CastorRegressionTest.doTestJava2XML2Java(CastorRegressionTes
t.java:211)
        at
apis.multicanal.CastorRegressionTest.doTestCastorSerialization(CastorRegress
ionTest.java:175)
        at
apis.multicanal.CastorRegressionTest.testCastorSerialization(CastorRegressio
nTest.java:78)
        at java.lang.reflect.Method.invoke(Native Method)

Caused by: org.xml.sax.SAXException: unable to find FieldDescriptor for
'MontReforco' in ClassDescri
ptor of consulta-dPResponse-entry
        at
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:18
61)
        at
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:13
38)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown
Source)
        at org.apache.xerces.impl.XMLNamespaceBinder.startElement(Unknown
Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unkno
wn Source)

--------------------------------------------------------------------
XML
--------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<Response status="1862885235" errorMsg="class java.lang.String">
    <IndMais>0</IndMais>
    <LstContaDP1>
        <data>
            <row>
                <NrContaDP>class java.lang.String</NrContaDP>
                <SaldoDisp>123123123.12</SaldoDisp>
                <CodMoeda>class java.lang.String</CodMoeda>
                <TxSpread>123123123.12000</TxSpread>
                <DtInicioAplic>20050524</DtInicioAplic>
                <DtConstituicao>20050524</DtConstituicao>
                <DtRenov>20050524</DtRenov>
                <DtVencim>20050524</DtVencim>
                <IndRenov>0</IndRenov>
                <QtRenov>1159412333</QtRenov>
                <QtDiasPrazo>606947846</QtDiasPrazo>
                <CodFamilia>250228104</CodFamilia>
                <DescFamilia>class java.lang.String</DescFamilia>
                <CodProduto>class java.lang.String</CodProduto>
            </row>
        </data>
    </LstContaDP1>
    <LstContaDP2>
        <data>
            <row>
                <NrContaDP>class java.lang.String</NrContaDP>
                <MontReforco>123123123.12</MontReforco>
                <CodPeriodic>l</CodPeriodic>
                <DtInicioReforco>20050524</DtInicioReforco>
            </row>
        </data>
    </LstContaDP2>
    <HostResult>1026125759</HostResult>
    <HostMsg>class java.lang.String</HostMsg>
</Response>

--------------------------------------------------------------------
MAPPING.XML
--------------------------------------------------------------------

<class name="pt.ef.ConsultaDPResponse" auto-complete="false">         
<map-to xml="Response" />

<field name="more" type="string" handler="pt.ef.BooleanFieldHandler">
  <bind-xml name="IndMais" node="element" />
</field>

<field name="entries" type="pt.ef.ConsultaDPResponseEntry"
collection="array">
  <bind-xml name="row" node="element" location="LstContaDP1/data">
    <class name="pt.ef.ConsultaDPResponseEntry" auto-complete="false">  
    <field name="accountDP" type="string">
          <bind-xml name="NrContaDP" node="element" />
        </field>
    
        <field name="balance" type="string"
handler="pt.ef.AmountFieldHandler">
          <bind-xml name="SaldoDisp" node="element" />
        </field>
    
        <field name="currency" type="string">
          <bind-xml name="CodMoeda" node="element" />
        </field>
    
        <field name="tax" type="string" handler="pt.ef.TaxFieldHandler">
          <bind-xml name="TxSpread" node="element" />
        </field>
    
        <field name="beginDate" type="string"
handler="pt.ef.DateFieldHandler">
          <bind-xml name="DtInicioAplic" node="element" />
        </field>
    
        <field name="openDate" type="string"
handler="pt.ef.DateFieldHandler">
          <bind-xml name="DtConstituicao" node="element" />
        </field>
    
        <field name="dueDate" type="string"
handler="pt.ef.DateFieldHandler">
          <bind-xml name="DtRenov" node="element" />
        </field>
    
        <field name="accountDueDate" type="string"
handler="pt.ef.DateFieldHandler">
          <bind-xml name="DtVencim" node="element" />
        </field>
    
        <field name="renewable" type="string"
handler="pt.ef.BooleanFieldHandler">
          <bind-xml name="IndRenov" node="element" />
        </field>
    
        <field name="renewalCount" type="int">
          <bind-xml name="QtRenov" node="element" />
        </field>
    
        <field name="deadline" type="int">
          <bind-xml name="QtDiasPrazo" node="element" />
        </field>
    
        <field name="accountType" type="integer">
          <bind-xml name="CodFamilia" node="element" />
        </field>
    
        <field name="accountTypeDesc" type="string">
          <bind-xml name="DescFamilia" node="element" />
        </field>
    
        <field name="productCode" type="string">
          <bind-xml name="CodProduto" node="element" />
        </field>
    </class>
  </bind-xml>
</field>

<field name="entriesEx" type="pt.ef.ConsultaDPResponseEntryEx"
collection="array">
  <bind-xml name="row" node="element" location="LstContaDP2/data">
    <class name="pt.ef.ConsultaDPResponseEntryEx" auto-complete="false">    
        <field name="accountDP" type="string">
          <bind-xml name="NrContaDP" node="element" />
        </field>
    
        <field name="reenforceAmount" type="string"
handler="pt.ef.AmountFieldHandler">
          <bind-xml name="MontReforco" node="element" />
        </field>
    
        <field name="reenforcePeriodicity" type="char">
          <bind-xml name="CodPeriodic" node="element" />
        </field>
    
        <field name="firstReenforceDate" type="string"
handler="pt.ef.DateFieldHandler">
          <bind-xml name="DtInicioReforco" node="element" />
        </field>
    </class>
  </bind-xml>                
</field>

<field name="status" type="integer">
  <bind-xml name="status" node="attribute" />
</field>

<field name="msg" type="string">
  <bind-xml name="errorMsg" node="attribute" />
</field>

<field name="bankStatus" type="integer">
  <bind-xml name="HostResult" node="element" />
</field>

<field name="bankMsg" type="string">
  <bind-xml name="HostMsg" node="element" />
</field>

</class>
-----------------------------------
Diogo Bacelar Quintela
EF - Tecnologias de Informa��o, Lda.
Av. Ant�nio Serpa, 26 - 4� Dto.
1050-027 Lisboa, Portugal
Tel: (+351) 217 827 800
Fax: (+351) 217 827 830
Email: [EMAIL PROTECTED]
PGP: 0xF51A5AB9 


-------------------------------------------------
If you wish to unsubscribe from this list, please 
send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------


-------------------------------------------------
If you wish to unsubscribe from this list, please
send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------

Reply via email to