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
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
57 return document;
58 }
59
60 private void writeObject(java.io.ObjectOutputStream out)
61 throws IOException
62 {
63
64 out.writeObject(schemaURI);
65
66 out.writeObject(documentAsByteArray(instanceDocument));
67 }
68
69 private void readObject(java.io.ObjectInputStream in)
70 throws IOException, ClassNotFoundException
71 {
72
73 schemaURI = (String)(in.readObject());
74
75 byte[] documentBytes = (byte[])(in.readObject());
76 instanceDocument = documentFromByteArray(documentBytes);
77 }
78 }