summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/io
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/derms/io')
-rw-r--r--src/main/java/derms/io/Serial.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/derms/io/Serial.java b/src/main/java/derms/io/Serial.java
new file mode 100644
index 0000000..b5b2299
--- /dev/null
+++ b/src/main/java/derms/io/Serial.java
@@ -0,0 +1,24 @@
+package derms.io;
+
+import java.io.*;
+import java.nio.ByteBuffer;
+
+public class Serial {
+ public static ByteBuffer encode(Serializable obj) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(obj);
+ oos.flush();
+ ByteBuffer buf = ByteBuffer.wrap(baos.toByteArray());
+ oos.close();
+ return buf;
+ }
+
+ public static <T extends Serializable> T decode(ByteBuffer buf, Class<T> clazz) throws IOException, ClassNotFoundException {
+ ObjectInputStream ois = new ObjectInputStream(
+ new ByteArrayInputStream(buf.array()));
+ T obj = clazz.cast(ois.readObject());
+ ois.close();
+ return obj;
+ }
+}