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] -------------------------------------------------

