diff options
Diffstat (limited to 'src/java/com/libmailcore/NativeObject.java')
-rw-r--r-- | src/java/com/libmailcore/NativeObject.java | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/java/com/libmailcore/NativeObject.java b/src/java/com/libmailcore/NativeObject.java index d90b7283..a1923056 100644 --- a/src/java/com/libmailcore/NativeObject.java +++ b/src/java/com/libmailcore/NativeObject.java @@ -1,8 +1,10 @@ package com.libmailcore; import java.util.Map; +import java.io.Serializable; +import java.io.IOException; -public class NativeObject implements Cloneable { +public class NativeObject implements Cloneable, Serializable { protected void finalize() throws Throwable { super.finalize(); @@ -13,12 +15,26 @@ public class NativeObject implements Cloneable { private native void unsetupNative(); public native String toString(); public native Object clone() throws CloneNotSupportedException; - - protected native Map serializable(); - public static native NativeObject objectWithSerializable(Map serializable); private long nativeHandle; - + + private static final long serialVersionUID = 1L; + + protected void writeObject(java.io.ObjectOutputStream out) throws IOException { + byte[] data = serializableData(); + out.writeInt(data.length); + out.write(data, 0, data.length); + } + + protected void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { + int len = in.readInt(); + byte[] data = new byte[len]; + in.read(data, 0, len); + } + + private native byte[] serializableData(); + private native void importSerializableData(byte[] data); + static { MainThreadUtils.singleton(); } |