1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package mnemosyne.archiver;
17
18 import mnemosyne.core.Persistable;
19
20 import java.io.ObjectOutputStream;
21 import java.io.OutputStream;
22 import java.io.IOException;
23
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.commons.logging.Log;
26
27 /***
28 * @version $Id: ArchiveOutputStream.java,v 1.1.1.1 2004/08/07 06:40:50 charlesblaxland Exp $
29 */
30 public class ArchiveOutputStream extends ObjectOutputStream
31 {
32 private static final Log log = LogFactory.getLog(ArchiveOutputStream.class);
33
34 public ArchiveOutputStream(OutputStream out)
35 throws IOException
36 {
37 super(out);
38 enableReplaceObject(true);
39 }
40
41 protected Object replaceObject(Object obj) throws IOException
42 {
43 if (obj instanceof Persistable)
44 {
45 Persistable persistable = (Persistable) obj;
46 if (!persistable.isArchiveVersion())
47 {
48 obj = persistable.getPersistentObject();
49 if (log.isTraceEnabled())
50 {
51 log.trace("Replaced object of type " + persistable.getClass().getName() + " with persistent object " + obj);
52 }
53 }
54 }
55
56 return obj;
57 }
58 }