ObjectCodec.java 796 Bytes
package com.diligrp.cashier.shared.codec;

import java.io.*;

public final class ObjectCodec implements ByteCodec<Object> {

    public static ByteCodec<Object> INSTANCE = new ObjectCodec();

    @Override
    public Object decode(byte[] payload)  throws IOException {
        try (ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(payload))) {
            return is.readObject();
        } catch (Exception ex) {
            throw new IOException(ex);
        }
    }

    @Override
    public byte[] encode(Object payload) throws IOException {
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        ObjectOutputStream os = new ObjectOutputStream(buffer);
        os.writeObject(payload);
        os.close();
        return buffer.toByteArray();
    }
}