All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.async.rmi.MarshalledObject Maven / Gradle / Ivy

package org.async.rmi;

import org.async.rmi.server.MarshalInputStream;
import org.async.rmi.server.MarshalOutputStream;

import java.io.*;
import java.util.Arrays;

/**
 * Created by Barak Bar Orion
 * 11/19/14.
 */
public class MarshalledObject implements Externalizable {

    private byte[] bytes;

    public MarshalledObject() {
    }

    public MarshalledObject(T object) throws IOException {
        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
             MarshalOutputStream marshalOutputStream = new MarshalOutputStream(byteArrayOutputStream)) {
            marshalOutputStream.writeObject(object);
            bytes = byteArrayOutputStream.toByteArray();
        }
    }

    @SuppressWarnings("unchecked")
    public T get() throws IOException, ClassNotFoundException {
        try(ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
        MarshalInputStream marshalInputStream = new MarshalInputStream(byteArrayInputStream)){
            return (T)marshalInputStream.readObject();
        }
    }

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(bytes);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        bytes = (byte[]) in.readObject();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        MarshalledObject that = (MarshalledObject) o;

        return Arrays.equals(bytes, that.bytes);

    }

    @Override
    public int hashCode() {
        return Arrays.hashCode(bytes);
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy