DS-Lab / src / main / java / dslab / rmi / serialize / ClientSerializer.java
ClientSerializer.java
Raw
package dslab.rmi.serialize;

import dslab.protocol.ProtocolException;
import dslab.rmi.serialize.Executors.ThrowingSupplier;

import java.util.List;

import static java.util.stream.Collectors.joining;

/**
 * Client serializers are used on the client side of a client-server type interaction
 */
public abstract class ClientSerializer extends Serializer {

    public String serialize(Enum<?> command, Object arguments) {

        String result = command.toString();

        if (arguments == null)
            return result;

        if (arguments instanceof List)
            return result + " " + ((List<?>) arguments).stream()
                    .map(Object::toString)
                    .collect(joining(","));

        return result + " " + arguments;
    }

    public abstract ThrowingSupplier<?, ? extends ProtocolException> deserialize(String response) throws ParseException;
}