]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.common/src/org/simantics/db/common/CommitMetadata.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / CommitMetadata.java
1 package org.simantics.db.common;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.io.ObjectInputStream;
6 import java.io.ObjectOutputStream;
7 import java.util.Date;
8
9 import org.simantics.db.Metadata;
10 import org.simantics.db.Session;
11 import org.simantics.db.common.utils.Logger;
12
13 public class CommitMetadata implements Metadata {
14     final boolean DEBUG = true;
15     public final long opid;
16     public final Date date;
17     public CommitMetadata(long opid) {
18         this.opid = opid;
19         this.date = new Date();
20     }
21     public CommitMetadata(long opid, Date date) {
22         this.opid = opid;
23         this.date = date;
24     }
25     @Override
26     public byte[] serialise(Session session) {
27         try {
28             ByteArrayOutputStream os = new ByteArrayOutputStream();
29             ObjectOutputStream oos = new ObjectOutputStream(os);
30             oos.writeLong(opid);
31             oos.writeObject(date);
32             oos.close();
33             return os.toByteArray();
34         } catch (Exception e) {
35             Logger.defaultLogError(e.toString());
36             if (DEBUG)
37                 e.printStackTrace();
38         }
39         return new byte[0];
40     }
41     public static CommitMetadata deserialise(Session session, byte[] input) {
42         try {
43             ByteArrayInputStream is = new ByteArrayInputStream(input);
44             ObjectInputStream ois = new ObjectInputStream(is);
45             long opid = ois.readLong();
46             Object date = ois.readObject();
47             ois.close();
48             if (date instanceof Date)
49                 return new CommitMetadata(opid, (Date)date);
50         } catch (Throwable e) {
51             Logger.defaultLogError(e);
52         }
53         return null;
54     }
55 }