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; }