Why not connect thru TCP socket and parse the contents?
Yes/No?
Martin-
----- Original Message ----- From: "Mark Chamness" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, May 17, 2005 1:09 PM
Subject: RE: [castor-user] a sequence of objects can be serialized but not deserialized



Hi,
Castor appears to require a root element to unmarshall objects. How would it handle a continuous stream of objects over a network?


By the way, is the website down?  http://www.castor.org/

-mark

-----Original Message-----
From: Mark Chamness [mailto:[EMAIL PROTECTED]
Sent: Thursday, May 12, 2005 9:11 AM
To: [email protected]
Subject: [castor-user] a sequence of objects can be serialized but not deserialized


While sequence of objects can be serialized to a stream, they can't be deserialized. The motivation for this comes from experience
with java serialization:
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());


and then...

int i = ois.readInt();
String today = (String) ois.readObject();
Date date = (Date) ois.readObject();

The error message for the following test case is:
Parsing Error : The markup in the document following the root element must be well-formed.


public void testMarshalMultipleObjects() throws Exception
{
TestObject testObject1 = new TestObject();
testObject1.testString = "test one";
TestObject testObject2 = new TestObject();
testObject2.testString = "test two";
StringWriter stringWriter = new StringWriter();
Marshaller marshaller = new Marshaller(stringWriter);
marshaller.setSupressXMLDeclaration(true); //doesn't matter
marshaller.marshal(testObject1);
marshaller.marshal(testObject2);
StringReader stringReader = new StringReader(stringWriter.toString());
Unmarshaller unmarshaller = new Unmarshaller(TestObject.class);
TestObject newTestObject1 = (TestObject) unmarshaller.unmarshal(stringReader);//fails
TestObject newTestObject2 = (TestObject) unmarshaller.unmarshal(stringReader);
Assert.assertEquals(testObject1.testString, newTestObject1.testString);
Assert.assertEquals(testObject2.testString, newTestObject2.testString);
}



public class TestObject { public String testString;

public TestObject()
{
}

public String getTestString()
{
return testString;
}

public void setTestString(String testString)
{
this.testString = testString;
}
}





Reply via email to