[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AW: Serializing parse trees



Title: Serializing parse trees
Ok,
I think I solved the problem. It seems the to be a problem of the
LinkedList class. That class implements it's own methods
for serialization.
Somehow these methods are called before the serialized TypedLinkedList
object is restored. That leads to the null pointer exception.
My solution is to let TypedLinkedList implement the Externalization
interface as follows.
 
   public synchronized void writeExternal(ObjectOutput out)
        throws java.io.IOException
   {
      out.writeObject(cast);
 
      LinkedList oDummy = new LinkedList(this);
 
      out.writeObject(oDummy);
   }
 
   public synchronized void readExternal(ObjectInput in)
        throws java.io.IOException, ClassNotFoundException
   {
      cast = (Cast)in.readObject();
 
      this.clear();
 
      LinkedList oDummy = (LinkedList)in.readObject();
 
      this.addAll(oDummy);
   }
It's a bit odd but it works.
 
Cheers, Thomas
 

==========================================================================
Thomas Leonhardt           email  leonhardt@informatik.tu-darmstadt.de
TU Darmstadt               WWW    http://www.pi.informatik.tu-darmstadt.de
FG Praktische Informatik   phone  +49 / (0)6151 / 16 - 5313
D-64283 Darmstadt          fax    +49 / (0)6151 / 16 - 5472
Germany
==========================================================================
 

-----Ursprüngliche Nachricht-----
Von: owner-sablecc-list@sable.mcgill.ca [mailto:owner-sablecc-list@sable.mcgill.ca]Im Auftrag von Thomas Leonhardt
Gesendet: Dienstag, 8. Mai 2001 13:41
An: sablecc-list@sable.mcgill.ca
Betreff: Serializing parse trees

Hi,
I'm trying to serialize a Start object of the java grammar.
I'm doing this by adding "implements java.io.Serializable" to the
Node class and all the inner classes.
The serialization works fine but I can't deserialize the object.
I get the following null pointer exception:
 java.lang.NullPointerException
     at tud.inf.pi.sablecc.java2.node.TypedLinkedList.add(TypedLinkedList.java:51)
     at java.util.LinkedList.readObject(LinkedList.java:687)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.io.ObjectInputStream.invokeObjectReader(ObjectInputStream.java:2213)
     at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1410)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
     at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2262)
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
     at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
     at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2262)
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
     at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
     at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2262)
     at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
     at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
     at tud.inf.pi.toolkit.scanner.Scanner.loadParseTree(Scanner.java:511)
     at tud.inf.pi.toolkit.scanner.Scanner.run(Scanner.java:391)
     at java.lang.Thread.run(Thread.java:484)

Because the serialization works, I don't know were to look for the error.

Any hints welcome,
Thomas


==========================================================================
Thomas Leonhardt           email  leonhardt@informatik.tu-darmstadt.de
TU Darmstadt               WWW    http://www.pi.informatik.tu-darmstadt.de
FG Praktische Informatik   phone  +49 / (0)6151 / 16 - 5313
D-64283 Darmstadt          fax    +49 / (0)6151 / 16 - 5472
Germany
==========================================================================