package com.lambdaworks.redis.cluster; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; import com.lambdaworks.redis.cluster.api.StatefulRedisClusterConnection; import com.lambdaworks.redis.cluster.models.partitions.RedisClusterNode; /** * Dynamic selection of nodes. * * @param <API> API type. * @param <CMD> Command command interface type to invoke multi-node operations. * @param <K> Key type. * @param <V> Value type. * @author Mark Paluch */ abstract class DynamicNodeSelection<API, CMD, K, V> extends AbstractNodeSelection<API, CMD, K, V> { private final Predicate<RedisClusterNode> selector; public DynamicNodeSelection(StatefulRedisClusterConnection<K, V> globalConnection, Predicate<RedisClusterNode> selector, ClusterConnectionProvider.Intent intent) { super(globalConnection, intent); this.selector = selector; } @Override protected List<RedisClusterNode> nodes() { return globalConnection.getPartitions().getPartitions().stream().filter(selector).collect(Collectors.toList()); } }