package com.github.ftrossbach.kiqr.client.service.rest; import com.github.ftrossbach.kiqr.client.service.GenericBlockingKiqrClient; import com.github.ftrossbach.kiqr.client.service.SpecificBlockingKiqrClient; import com.github.ftrossbach.kiqr.commons.config.querymodel.requests.Window; import org.apache.kafka.common.serialization.Serde; import java.util.Map; import java.util.Optional; /** * Created by ftr on 10/03/2017. */ public class SpecificBlockingRestKiqrClientImpl<K,V> implements SpecificBlockingKiqrClient<K,V>{ private final String store; private final Class<K> keyClass; private final Class<V> valueClass; private final Serde<K> keySerde; private final Serde<V> valueSerde; private final GenericBlockingKiqrClient genericClient; public SpecificBlockingRestKiqrClientImpl(String host, int port, String store, Class<K> keyClass, Class<V> valueClass, Serde<K> keySerde, Serde<V> valueSerde) { this.keyClass = keyClass; this.valueClass = valueClass; this.keySerde = keySerde; this.valueSerde = valueSerde; this.genericClient = initGenericService(host, port); this.store = store; } public SpecificBlockingRestKiqrClientImpl(GenericBlockingKiqrClient genericClient, String store, Class<K> keyClass, Class<V> valueClass, Serde<K> keySerde, Serde<V> valueSerde) { this.keyClass = keyClass; this.valueClass = valueClass; this.keySerde = keySerde; this.valueSerde = valueSerde; this.genericClient = genericClient; this.store = store; } protected GenericBlockingKiqrClient initGenericService(String host, int port){ return new GenericBlockingRestKiqrClientImpl(host, port); } @Override public Optional<V> getScalarKeyValue( K key) { return genericClient.getScalarKeyValue(store, keyClass, key, valueClass, keySerde, valueSerde); } @Override public Map<K, V> getAllKeyValues() { return genericClient.getAllKeyValues(store, keyClass, valueClass, keySerde, valueSerde); } @Override public Map<K, V> getRangeKeyValues( K from, K to) { return genericClient.getRangeKeyValues(store, keyClass, valueClass, keySerde, valueSerde, from, to); } @Override public Map<Long, V> getWindow( K key, long from, long to) { return genericClient.getWindow(store, keyClass, key, valueClass, keySerde, valueSerde, from, to); } @Override public Optional<Long> count(String store) { return genericClient.count(store); } @Override public Map<Window, V> getSession(K key) { return genericClient.getSession(store, keyClass, key, valueClass, keySerde, valueSerde); } }