View Javadoc

1   package pl.caltha.forms.internal.model;
2   
3   import java.io.ByteArrayInputStream;
4   import java.io.ByteArrayOutputStream;
5   import java.io.IOException;
6   
7   import org.dom4j.Document;
8   
9   /***
10   * Container for DOM instance documents.
11   *
12   * @author <a href="mailto:zwierzem@ngo.pl">Damian Gajda</a>
13   * @version $Id: AbstractInstance.java,v 1.1 2005/01/19 06:55:35 pablo Exp $
14   */
15  public abstract class AbstractInstance
16  implements java.io.Serializable
17  {
18      protected String schemaURI;
19      protected Document instanceDocument;
20  
21      public AbstractInstance(String schemaURI, Document instanceDocument)
22      {
23          this.schemaURI = schemaURI;
24          this.instanceDocument = instanceDocument;
25      }
26  
27      //------------------------------------------------------------------------
28      // pl.caltha.forms.Instance methods
29      
30      public String getSchemaURI()
31      {
32          return schemaURI;
33      }
34  
35      public Document getDocument()
36      {
37          return instanceDocument;
38      }
39  
40      //------------------------------------------------------------------------
41      public static byte[] documentAsByteArray(Document document)
42      throws IOException
43      {
44          ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
45          com.sosnoski.xmls.XmlsOutput sout = new com.sosnoski.xmls.Dom4jOutput();
46          sout.writeDocument(document, out);
47          return out.toByteArray();
48      }
49  
50      public static Document documentFromByteArray(byte[] bytes)
51      throws IOException
52      {
53          com.sosnoski.xmls.XmlsInput sin = new com.sosnoski.xmls.Dom4jInput();
54          ByteArrayInputStream dis = new ByteArrayInputStream(bytes);
55          Document document = (Document)(sin.readDocument(dis));
56          //("Exception reading serialized form at byte " + (bytes.length-dis.available()-sin.getBytesRemaining()-1));
57          return document;
58      }
59  
60      private void writeObject(java.io.ObjectOutputStream out)
61      throws IOException
62      {
63          // 1. serialize schemaURI
64          out.writeObject(schemaURI);
65          // 2. serialize document
66          out.writeObject(documentAsByteArray(instanceDocument));
67      }
68      
69      private void readObject(java.io.ObjectInputStream in)
70      throws IOException, ClassNotFoundException
71      {
72          // 1. deserialize schemaURI
73          schemaURI = (String)(in.readObject());
74          // 2. deserialize document
75          byte[] documentBytes = (byte[])(in.readObject());
76          instanceDocument = documentFromByteArray(documentBytes);
77      }
78  }