package com.bagri.client.hazelcast.serialize.query; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.bagri.client.hazelcast.serialize.DataSerializationFactoryImpl; import com.bagri.core.query.ExpressionBuilder; import com.bagri.core.query.ExpressionContainer; import com.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; import com.hazelcast.nio.serialization.StreamSerializer; public class ExpressionContainerSerializer implements StreamSerializer<ExpressionContainer> { @Override public void destroy() { } @Override public int getTypeId() { return DataSerializationFactoryImpl.cli_ExpressionContainer; } @Override public ExpressionContainer read(ObjectDataInput in) throws IOException { ExpressionBuilder eBuilder = in.readObject(); int size = in.readInt(); Map<String, Object> params = new HashMap<>(size); if (size > 0) { for (int i=0; i < size; i++) { params.put(in.readUTF(), in.readObject()); } } return new ExpressionContainer(eBuilder, params); } @Override public void write(ObjectDataOutput out, ExpressionContainer exp) throws IOException { out.writeObject(exp.getBuilder()); Map<String, Object> params = exp.getParams(); out.writeInt(params.size()); for (Map.Entry<String, Object> param: params.entrySet()) { out.writeUTF(param.getKey()); out.writeObject(param.getValue()); } } }