package com.bagri.client.hazelcast.task; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; import com.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; public abstract class QueryAwareTask extends TransactionAwareTask { protected String query; protected Map<String, Object> params; protected Properties context; public QueryAwareTask() { super(); } public QueryAwareTask(String clientId, long txId, String query, Map<String, Object> params, Properties context) { super(clientId, txId); this.query = query; this.params = params; this.context = context; } @Override public void readData(ObjectDataInput in) throws IOException { super.readData(in); query = in.readUTF(); int size = in.readInt(); if (size > 0) { params = new HashMap<>(size); for (int i=0; i < size; i++) { params.put(in.readUTF(), in.readObject()); } } context = in.readObject(); } @Override public void writeData(ObjectDataOutput out) throws IOException { super.writeData(out); out.writeUTF(query); if (params == null) { out.writeInt(0); } else { out.writeInt(params.size()); for (Map.Entry<String, Object> param: params.entrySet()) { out.writeUTF(param.getKey()); out.writeObject(param.getValue()); } } out.writeObject(context); } }