diff options
Diffstat (limited to 'src/main/java/derms/io')
| -rw-r--r-- | src/main/java/derms/io/Serial.java | 24 |
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; + } +} |