Hi stefan,
I'll need to take a look into it. Thanks for the example.
--Keith
[EMAIL PROTECTED] wrote:
>
> Hello there again!
>
> I still have the problem unmarshalling arrays of java interfaces. I post
> this message again, maybe it was lost somewhere. I just downloaded the
> lastest CVS version of Castor but the problem still exists. Is this a bug?
> Please look at the following simple example:
>
> Class1:
>
> public class ArrayTest implements ArrayTestInt {
> private String[] strings = null;
> }
>
> Class 2:
>
> public class ArrayTest2 implements ArrayTestInt {
> private String[] strings = null;
> }
>
> Class3:
>
> public class ArrayTest3 {
>
> private ArrayTestInt[] tests;
>
> public ArrayTestInt[] getTests() {
> return tests;
> }
>
> public void setTests(ArrayTestInt[] tests) {
> this.tests = tests;
> }
> }
>
> Interface1:
>
> public interface ArrayTestInt {
> }
>
> TesterClass:
>
> import java.io.Serializable;
>
> public class ArrayTester {
>
> public static void main(String[] args) {
> ArrayTest test = new ArrayTest();
> ArrayTest2 test2 = new ArrayTest2();
>
> ArrayTest3 test3 = new ArrayTest3();
>
> test3.setTests(new ArrayTestInt[] { test, test2 });
>
> ByteArrayOutputStream stream = new ByteArrayOutputStream();
> PrintWriter writer = new PrintWriter(stream);
>
> try {
> Marshaller.marshal(test3, writer);
> System.out.println(stream.toString());
> } catch(Exception e) {
> }
>
> StringReader reader = new StringReader(stream.toString());
> try {
> ArrayTest3 test4 = (ArrayTest3)
> Unmarshaller.unmarshal(ArrayTest3.class, reader);
> } catch(Exception e) {
> }
> }
> }
>
> I convert an object with an array of objects of type ArrayTestInt into xml
> and get the following output:
>
> <?xml version="1.0"?>
> <array-test3><tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="java:ArrayTest"/><tests xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:ArrayTest2
> "/></array-test3>
>
> When I convert this back into an object I get the following exception:
>
> org.xml.sax.SAXException: unable to add 'tests' to <array-test3> due to the
> following exception:
> >>>--- Begin Exception ---<<<
> java.lang.IllegalArgumentException: array element type mismatch
> at java.lang.reflect.Array.set(Native Method)
> at
>
>org.exolab.castor.mapping.loader.J1CollectionHandlers$1.add(J1CollectionHandlers.java:109)
> at
> org.exolab.castor.mapping.loader.FieldHandlerImpl.setValue(FieldHandlerImpl.java:513)
> at
> org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:526)
> at
> org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1392)
> at
>
>org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1180)
> at
>
>org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1861)
> at
>
>org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1234)
> at
> org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
> at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:952)
> at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:338)
> at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:270)
> at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:391)
> at XMLUtilities.convertXMLToObject(XMLUtilities.java:96)
> at ArrayTester.main(ArrayTester.java:16)
> >>>---- End Exception ----<<<
>
> at
> org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:557)
> at
> org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1392)
> at
>
>org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1180)
> at
>
>org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1861)
> at
>
>org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1234)
> at
> org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
> at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:952)
> at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:338)null
>
> at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:270)
> at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:391)
> at XMLUtilities.convertXMLToObject(XMLUtilities.java:96)
> at ArrayTester.main(ArrayTester.java:16)
>
> I don't want to use a mapping file because my real objects are a bit
> complicated. Could you tell me what I should do to solve my problem?
> I searched the mail archive and found a similiar problem posted in february
> 2001 but I didn't find any answer. Please help!
>
> Thanks in advance
>
> stefan
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev