aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java/com/libmailcore/NativeObject.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/libmailcore/NativeObject.java')
-rw-r--r--src/java/com/libmailcore/NativeObject.java26
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();
}