package org.infinispan.query.remote.impl.filter; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.infinispan.commons.CacheException; import org.infinispan.protostream.ProtobufUtil; import org.infinispan.protostream.SerializationContext; import org.infinispan.protostream.config.Configuration; import org.infinispan.query.remote.client.BaseProtoStreamMarshaller; /** * @author gustavonalle */ class IckleFilterConverterUtils { private static final BaseProtoStreamMarshaller paramMarshaller = new BaseProtoStreamMarshaller() { private final SerializationContext serializationContext = ProtobufUtil.newSerializationContext(Configuration.builder().build()); @Override protected SerializationContext getSerializationContext() { return serializationContext; } }; private IckleFilterConverterUtils() { } static String unmarshallQueryString(Object[] params) { try { return (String) paramMarshaller.objectFromByteBuffer((byte[]) params[0]); } catch (IOException | ClassNotFoundException e) { throw new CacheException(e); } } static Map<String, Object> unmarshallParams(Object[] params) { Map<String, Object> namedParams = null; try { if (params.length > 1) { namedParams = new HashMap<>((params.length - 1) / 2); int i = 1; while (i < params.length) { String name = (String) paramMarshaller.objectFromByteBuffer((byte[]) params[i++]); Object value = paramMarshaller.objectFromByteBuffer((byte[]) params[i++]); namedParams.put(name, value); } } } catch (IOException | ClassNotFoundException e) { throw new CacheException(e); } return namedParams; } }