diff --git a/src/main/java/io/lettuce/core/AbstractRedisAsyncCommands.java b/src/main/java/io/lettuce/core/AbstractRedisAsyncCommands.java index 48ebae4ed7..ccacbfdefa 100644 --- a/src/main/java/io/lettuce/core/AbstractRedisAsyncCommands.java +++ b/src/main/java/io/lettuce/core/AbstractRedisAsyncCommands.java @@ -48,7 +48,6 @@ import io.lettuce.core.protocol.CommandType; import io.lettuce.core.protocol.ProtocolKeyword; import io.lettuce.core.protocol.RedisCommand; -import reactor.core.publisher.Mono; import java.time.Duration; import java.time.Instant; @@ -56,6 +55,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Supplier; import static io.lettuce.core.ClientOptions.DEFAULT_JSON_PARSER; import static io.lettuce.core.protocol.CommandType.EXEC; @@ -87,7 +87,7 @@ public abstract class AbstractRedisAsyncCommands implements RedisAclAsyncC private final RedisJsonCommandBuilder jsonCommandBuilder; - private final Mono parser; + private final Supplier parser; /** * Initialize a new instance. @@ -96,7 +96,8 @@ public abstract class AbstractRedisAsyncCommands implements RedisAclAsyncC * @param codec the codec for command encoding * @param parser the implementation of the {@link JsonParser} to use */ - public AbstractRedisAsyncCommands(StatefulConnection connection, RedisCodec codec, Mono parser) { + public AbstractRedisAsyncCommands(StatefulConnection connection, RedisCodec codec, + Supplier parser) { this.parser = parser; this.connection = connection; this.commandBuilder = new RedisCommandBuilder<>(codec); @@ -3391,7 +3392,7 @@ public RedisFuture>> clusterLinks() { @Override public JsonParser getJsonParser() { - return this.parser.block(); + return this.parser.get(); } private byte[] encodeFunction(String functionCode) { diff --git a/src/main/java/io/lettuce/core/AbstractRedisReactiveCommands.java b/src/main/java/io/lettuce/core/AbstractRedisReactiveCommands.java index 9732aeaae5..ce0a6a386f 100644 --- a/src/main/java/io/lettuce/core/AbstractRedisReactiveCommands.java +++ b/src/main/java/io/lettuce/core/AbstractRedisReactiveCommands.java @@ -97,7 +97,7 @@ public abstract class AbstractRedisReactiveCommands private final RedisJsonCommandBuilder jsonCommandBuilder; - private final Mono parser; + private final Supplier parser; private final ClientResources clientResources; @@ -112,7 +112,8 @@ public abstract class AbstractRedisReactiveCommands * @param codec the codec for command encoding. * @param parser the implementation of the {@link JsonParser} to use */ - public AbstractRedisReactiveCommands(StatefulConnection connection, RedisCodec codec, Mono parser) { + public AbstractRedisReactiveCommands(StatefulConnection connection, RedisCodec codec, + Supplier parser) { this.connection = connection; this.parser = parser; this.commandBuilder = new RedisCommandBuilder<>(codec); @@ -149,7 +150,7 @@ private EventExecutorGroup getScheduler() { @Override public JsonParser getJsonParser() { - return parser.block(); + return parser.get(); } @Override diff --git a/src/main/java/io/lettuce/core/ClientOptions.java b/src/main/java/io/lettuce/core/ClientOptions.java index 9f1f1c33d9..5d1e2160d2 100644 --- a/src/main/java/io/lettuce/core/ClientOptions.java +++ b/src/main/java/io/lettuce/core/ClientOptions.java @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; +import java.util.function.Supplier; import io.lettuce.core.api.StatefulConnection; import io.lettuce.core.internal.LettuceAssert; @@ -69,7 +70,7 @@ public class ClientOptions implements Serializable { public static final SocketOptions DEFAULT_SOCKET_OPTIONS = SocketOptions.create(); - public static final Mono DEFAULT_JSON_PARSER = Mono.defer(() -> Mono.fromCallable(() -> { + public static final Supplier DEFAULT_JSON_PARSER = () -> { try { Iterator services = ServiceLoader.load(JsonParser.class).iterator(); return services.hasNext() ? services.next() : null; @@ -77,7 +78,7 @@ public class ClientOptions implements Serializable { throw new RedisJsonException("Could not load JsonParser, please consult the guide" + "at https://redis.github.io/lettuce/user-guide/redis-json/", e); } - })); + }; public static final SslOptions DEFAULT_SSL_OPTIONS = SslOptions.create(); @@ -105,7 +106,7 @@ public class ClientOptions implements Serializable { private final Charset scriptCharset; - private final Mono jsonParser; + private final Supplier jsonParser; private final SocketOptions socketOptions; @@ -204,7 +205,7 @@ public static class Builder { private Charset scriptCharset = DEFAULT_SCRIPT_CHARSET; - private Mono jsonParser = DEFAULT_JSON_PARSER; + private Supplier jsonParser = DEFAULT_JSON_PARSER; private SocketOptions socketOptions = DEFAULT_SOCKET_OPTIONS; @@ -399,7 +400,7 @@ public Builder scriptCharset(Charset scriptCharset) { * @see JsonParser * @since 6.5 */ - public Builder jsonParser(Mono parser) { + public Builder jsonParser(Supplier parser) { LettuceAssert.notNull(parser, "JsonParser must not be null"); this.jsonParser = parser; @@ -652,7 +653,7 @@ public Charset getScriptCharset() { * @return the implementation of the {@link JsonParser} to use. * @since 6.5 */ - public Mono getJsonParser() { + public Supplier getJsonParser() { return jsonParser; } diff --git a/src/main/java/io/lettuce/core/RedisAsyncCommandsImpl.java b/src/main/java/io/lettuce/core/RedisAsyncCommandsImpl.java index 87bae13e02..4e20755197 100644 --- a/src/main/java/io/lettuce/core/RedisAsyncCommandsImpl.java +++ b/src/main/java/io/lettuce/core/RedisAsyncCommandsImpl.java @@ -5,7 +5,7 @@ import io.lettuce.core.cluster.api.async.RedisClusterAsyncCommands; import io.lettuce.core.codec.RedisCodec; import io.lettuce.core.json.JsonParser; -import reactor.core.publisher.Mono; +import java.util.function.Supplier; /** * An asynchronous and thread-safe API for a Redis connection. @@ -24,7 +24,8 @@ public class RedisAsyncCommandsImpl extends AbstractRedisAsyncCommands connection, RedisCodec codec, Mono parser) { + public RedisAsyncCommandsImpl(StatefulRedisConnection connection, RedisCodec codec, + Supplier parser) { super(connection, codec, parser); } diff --git a/src/main/java/io/lettuce/core/RedisJsonCommandBuilder.java b/src/main/java/io/lettuce/core/RedisJsonCommandBuilder.java index ee7e8cf97b..9aff2e5942 100644 --- a/src/main/java/io/lettuce/core/RedisJsonCommandBuilder.java +++ b/src/main/java/io/lettuce/core/RedisJsonCommandBuilder.java @@ -20,9 +20,9 @@ import io.lettuce.core.protocol.BaseRedisCommandBuilder; import io.lettuce.core.protocol.Command; import io.lettuce.core.protocol.CommandArgs; -import reactor.core.publisher.Mono; import java.util.List; +import java.util.function.Supplier; import static io.lettuce.core.protocol.CommandType.*; @@ -34,9 +34,9 @@ */ class RedisJsonCommandBuilder extends BaseRedisCommandBuilder { - private final Mono parser; + private final Supplier parser; - RedisJsonCommandBuilder(RedisCodec codec, Mono theParser) { + RedisJsonCommandBuilder(RedisCodec codec, Supplier theParser) { super(codec); parser = theParser; } @@ -118,7 +118,7 @@ Command> jsonArrpop(K key, JsonPath jsonPath, int index) { } } - return createCommand(JSON_ARRPOP, new JsonValueListOutput<>(codec, parser.block()), args); + return createCommand(JSON_ARRPOP, new JsonValueListOutput<>(codec, parser.get()), args); } Command> jsonArrtrim(K key, JsonPath jsonPath, JsonRangeArgs range) { @@ -167,7 +167,7 @@ Command> jsonGet(K key, JsonGetArgs options, JsonPath... j } } - return createCommand(JSON_GET, new JsonValueListOutput<>(codec, parser.block()), args); + return createCommand(JSON_GET, new JsonValueListOutput<>(codec, parser.get()), args); } Command jsonMerge(K key, JsonPath jsonPath, JsonValue value) { @@ -194,7 +194,7 @@ Command> jsonMGet(JsonPath jsonPath, K... keys) { args.add(jsonPath.toString()); } - return createCommand(JSON_MGET, new JsonValueListOutput<>(codec, parser.block()), args); + return createCommand(JSON_MGET, new JsonValueListOutput<>(codec, parser.get()), args); } Command jsonMSet(List> arguments) { diff --git a/src/main/java/io/lettuce/core/RedisReactiveCommandsImpl.java b/src/main/java/io/lettuce/core/RedisReactiveCommandsImpl.java index de01957391..620b5510ae 100644 --- a/src/main/java/io/lettuce/core/RedisReactiveCommandsImpl.java +++ b/src/main/java/io/lettuce/core/RedisReactiveCommandsImpl.java @@ -7,6 +7,8 @@ import io.lettuce.core.json.JsonParser; import reactor.core.publisher.Mono; +import java.util.function.Supplier; + /** * A reactive and thread-safe API for a Redis Sentinel connection. * @@ -25,7 +27,7 @@ public class RedisReactiveCommandsImpl extends AbstractRedisReactiveComman * @param parser the implementation of the {@link JsonParser} to use */ public RedisReactiveCommandsImpl(StatefulRedisConnection connection, RedisCodec codec, - Mono parser) { + Supplier parser) { super(connection, codec, parser); } diff --git a/src/main/java/io/lettuce/core/StatefulRedisConnectionImpl.java b/src/main/java/io/lettuce/core/StatefulRedisConnectionImpl.java index 14ba7b5701..b6c7f6e896 100644 --- a/src/main/java/io/lettuce/core/StatefulRedisConnectionImpl.java +++ b/src/main/java/io/lettuce/core/StatefulRedisConnectionImpl.java @@ -27,6 +27,7 @@ import java.util.Collection; import java.util.List; import java.util.function.Consumer; +import java.util.function.Supplier; import java.util.stream.Collectors; import io.lettuce.core.api.StatefulRedisConnection; @@ -67,7 +68,7 @@ public class StatefulRedisConnectionImpl extends RedisChannelHandler private final PushHandler pushHandler; - private final Mono parser; + private final Supplier parser; protected MultiOutput multi; @@ -94,7 +95,7 @@ public StatefulRedisConnectionImpl(RedisChannelWriter writer, PushHandler pushHa * @param parser the parser to use for JSON commands. */ public StatefulRedisConnectionImpl(RedisChannelWriter writer, PushHandler pushHandler, RedisCodec codec, - Duration timeout, Mono parser) { + Duration timeout, Supplier parser) { super(writer, timeout); diff --git a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java index 840a6ef1ff..d8f8e40923 100644 --- a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java +++ b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterAsyncCommandsImpl.java @@ -29,13 +29,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.ThreadLocalRandom; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Predicate; +import java.util.function.Supplier; import java.util.stream.Collectors; import io.lettuce.core.*; @@ -64,7 +64,6 @@ import io.lettuce.core.protocol.Command; import io.lettuce.core.protocol.CommandType; import io.lettuce.core.protocol.ConnectionIntent; -import reactor.core.publisher.Mono; /** * An advanced asynchronous and thread-safe API for a Redis Cluster connection. @@ -89,11 +88,11 @@ public class RedisAdvancedClusterAsyncCommandsImpl extends AbstractRedisAs * @param codec Codec used to encode/decode keys and values. * @param parser the implementation of the {@link JsonParser} to use * @deprecated since 5.1, use - * {@link #RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Mono)}. + * {@link #RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Supplier)}. */ @Deprecated public RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnectionImpl connection, RedisCodec codec, - Mono parser) { + Supplier parser) { super(connection, codec, parser); this.codec = codec; } @@ -104,7 +103,7 @@ public RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnectionImpl< * @param connection the stateful connection * @param codec Codec used to encode/decode keys and values. * @deprecated since 5.1, use - * {@link #RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Mono)}. + * {@link #RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Supplier)}. */ @Deprecated public RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnectionImpl connection, RedisCodec codec) { @@ -120,7 +119,7 @@ public RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnectionImpl< * @param parser the implementation of the {@link JsonParser} to use */ public RedisAdvancedClusterAsyncCommandsImpl(StatefulRedisClusterConnection connection, RedisCodec codec, - Mono parser) { + Supplier parser) { super(connection, codec, parser); this.codec = codec; } diff --git a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java index 0fa184b37d..36d211fb3d 100644 --- a/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java +++ b/src/main/java/io/lettuce/core/cluster/RedisAdvancedClusterReactiveCommandsImpl.java @@ -32,6 +32,7 @@ import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Predicate; +import java.util.function.Supplier; import java.util.stream.Collectors; import io.lettuce.core.json.JsonParser; @@ -78,11 +79,11 @@ public class RedisAdvancedClusterReactiveCommandsImpl extends AbstractRedi * @param codec Codec used to encode/decode keys and values. * @param parser the implementation of the {@link JsonParser} to use * @deprecated since 5.2, use - * {@link #RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Mono)}. + * {@link #RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Supplier)}. */ @Deprecated public RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnectionImpl connection, RedisCodec codec, - Mono parser) { + Supplier parser) { super(connection, codec, parser); this.codec = codec; } @@ -93,7 +94,7 @@ public RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnectionIm * @param connection the stateful connection. * @param codec Codec used to encode/decode keys and values. * @deprecated since 5.2, use - * {@link #RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Mono)}. + * {@link #RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnection, RedisCodec, Supplier)}. */ @Deprecated public RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnectionImpl connection, @@ -110,7 +111,7 @@ public RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnectionIm * @param parser the implementation of the {@link JsonParser} to use */ public RedisAdvancedClusterReactiveCommandsImpl(StatefulRedisClusterConnection connection, RedisCodec codec, - Mono parser) { + Supplier parser) { super(connection, codec, parser); this.codec = codec; } diff --git a/src/main/java/io/lettuce/core/cluster/RedisClusterClient.java b/src/main/java/io/lettuce/core/cluster/RedisClusterClient.java index c5ef64c708..3c0c8729dc 100644 --- a/src/main/java/io/lettuce/core/cluster/RedisClusterClient.java +++ b/src/main/java/io/lettuce/core/cluster/RedisClusterClient.java @@ -582,7 +582,7 @@ ConnectionFuture> connectToNodeAsync(RedisC * @return new instance of StatefulRedisConnectionImpl */ protected StatefulRedisConnectionImpl newStatefulRedisConnection(RedisChannelWriter channelWriter, - PushHandler pushHandler, RedisCodec codec, Duration timeout, Mono parser) { + PushHandler pushHandler, RedisCodec codec, Duration timeout, Supplier parser) { return new StatefulRedisConnectionImpl<>(channelWriter, pushHandler, codec, timeout, parser); } @@ -726,7 +726,7 @@ private CompletableFuture> connectCl */ protected StatefulRedisClusterConnectionImpl newStatefulRedisClusterConnection( RedisChannelWriter channelWriter, ClusterPushHandler pushHandler, RedisCodec codec, Duration timeout, - Mono parser) { + Supplier parser) { return new StatefulRedisClusterConnectionImpl(channelWriter, pushHandler, codec, timeout, parser); } diff --git a/src/main/java/io/lettuce/core/cluster/StatefulRedisClusterConnectionImpl.java b/src/main/java/io/lettuce/core/cluster/StatefulRedisClusterConnectionImpl.java index c84193491b..d967ada1ed 100644 --- a/src/main/java/io/lettuce/core/cluster/StatefulRedisClusterConnectionImpl.java +++ b/src/main/java/io/lettuce/core/cluster/StatefulRedisClusterConnectionImpl.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import java.util.function.Supplier; import java.util.stream.Collectors; import io.lettuce.core.AbstractRedisClient; @@ -77,7 +78,7 @@ public class StatefulRedisClusterConnectionImpl extends RedisChannelHandle protected final RedisCodec codec; - protected final Mono parser; + protected final Supplier parser; protected final RedisAdvancedClusterCommands sync; @@ -113,7 +114,7 @@ public StatefulRedisClusterConnectionImpl(RedisChannelWriter writer, ClusterPush * @param parser the JSON parser */ public StatefulRedisClusterConnectionImpl(RedisChannelWriter writer, ClusterPushHandler pushHandler, RedisCodec codec, - Duration timeout, Mono parser) { + Duration timeout, Supplier parser) { super(writer, timeout); this.pushHandler = pushHandler; diff --git a/src/main/java/io/lettuce/core/masterreplica/StatefulRedisMasterReplicaConnectionImpl.java b/src/main/java/io/lettuce/core/masterreplica/StatefulRedisMasterReplicaConnectionImpl.java index ad1b5a53f6..babafd51e4 100644 --- a/src/main/java/io/lettuce/core/masterreplica/StatefulRedisMasterReplicaConnectionImpl.java +++ b/src/main/java/io/lettuce/core/masterreplica/StatefulRedisMasterReplicaConnectionImpl.java @@ -1,12 +1,12 @@ package io.lettuce.core.masterreplica; import java.time.Duration; +import java.util.function.Supplier; import io.lettuce.core.ReadFrom; import io.lettuce.core.StatefulRedisConnectionImpl; import io.lettuce.core.codec.RedisCodec; import io.lettuce.core.json.JsonParser; -import reactor.core.publisher.Mono; import static io.lettuce.core.ClientOptions.DEFAULT_JSON_PARSER; @@ -36,7 +36,7 @@ class StatefulRedisMasterReplicaConnectionImpl extends StatefulRedisConnec * @param parser the JSON parser to use */ StatefulRedisMasterReplicaConnectionImpl(MasterReplicaChannelWriter writer, RedisCodec codec, Duration timeout, - Mono parser) { + Supplier parser) { super(writer, NoOpPushHandler.INSTANCE, codec, timeout, parser); } diff --git a/src/main/java/io/lettuce/core/sentinel/RedisSentinelReactiveCommandsImpl.java b/src/main/java/io/lettuce/core/sentinel/RedisSentinelReactiveCommandsImpl.java index e02cf4d960..af5937d4e2 100644 --- a/src/main/java/io/lettuce/core/sentinel/RedisSentinelReactiveCommandsImpl.java +++ b/src/main/java/io/lettuce/core/sentinel/RedisSentinelReactiveCommandsImpl.java @@ -21,6 +21,7 @@ import java.net.SocketAddress; import java.util.Map; +import java.util.function.Supplier; import io.lettuce.core.AbstractRedisReactiveCommands; import io.lettuce.core.ClientListArgs; @@ -52,7 +53,7 @@ public class RedisSentinelReactiveCommandsImpl extends AbstractRedisReacti private final SentinelCommandBuilder commandBuilder; public RedisSentinelReactiveCommandsImpl(StatefulConnection connection, RedisCodec codec, - Mono parser) { + Supplier parser) { super(connection, codec, parser); commandBuilder = new SentinelCommandBuilder(codec); } diff --git a/src/main/java/io/lettuce/core/sentinel/StatefulRedisSentinelConnectionImpl.java b/src/main/java/io/lettuce/core/sentinel/StatefulRedisSentinelConnectionImpl.java index f5a9a9c625..2eb2090461 100644 --- a/src/main/java/io/lettuce/core/sentinel/StatefulRedisSentinelConnectionImpl.java +++ b/src/main/java/io/lettuce/core/sentinel/StatefulRedisSentinelConnectionImpl.java @@ -21,6 +21,7 @@ import java.time.Duration; import java.util.Collection; +import java.util.function.Supplier; import io.lettuce.core.ConnectionState; import io.lettuce.core.RedisChannelHandler; @@ -34,7 +35,6 @@ import io.lettuce.core.sentinel.api.async.RedisSentinelAsyncCommands; import io.lettuce.core.sentinel.api.reactive.RedisSentinelReactiveCommands; import io.lettuce.core.sentinel.api.sync.RedisSentinelCommands; -import reactor.core.publisher.Mono; import static io.lettuce.core.ClientOptions.DEFAULT_JSON_PARSER; @@ -74,7 +74,7 @@ public StatefulRedisSentinelConnectionImpl(RedisChannelWriter writer, RedisCodec * @param parser the parser used to parse JSON responses */ public StatefulRedisSentinelConnectionImpl(RedisChannelWriter writer, RedisCodec codec, Duration timeout, - Mono parser) { + Supplier parser) { super(writer, timeout); diff --git a/src/test/java/biz/paluch/redis/extensibility/MyExtendedRedisClusterClient.java b/src/test/java/biz/paluch/redis/extensibility/MyExtendedRedisClusterClient.java index 1ac2848077..f0d7383363 100644 --- a/src/test/java/biz/paluch/redis/extensibility/MyExtendedRedisClusterClient.java +++ b/src/test/java/biz/paluch/redis/extensibility/MyExtendedRedisClusterClient.java @@ -20,6 +20,7 @@ package biz.paluch.redis.extensibility; import java.time.Duration; +import java.util.function.Supplier; import javax.enterprise.inject.Alternative; @@ -51,7 +52,7 @@ public MyExtendedRedisClusterClient() { @Override protected StatefulRedisClusterConnectionImpl newStatefulRedisClusterConnection( RedisChannelWriter channelWriter, ClusterPushHandler pushHandler, RedisCodec codec, Duration timeout, - Mono parser) { + Supplier parser) { return new MyRedisClusterConnection<>(channelWriter, pushHandler, codec, timeout, parser); } diff --git a/src/test/java/biz/paluch/redis/extensibility/MyRedisClusterConnection.java b/src/test/java/biz/paluch/redis/extensibility/MyRedisClusterConnection.java index 04632e463c..a1152b9760 100644 --- a/src/test/java/biz/paluch/redis/extensibility/MyRedisClusterConnection.java +++ b/src/test/java/biz/paluch/redis/extensibility/MyRedisClusterConnection.java @@ -20,6 +20,7 @@ package biz.paluch.redis.extensibility; import java.time.Duration; +import java.util.function.Supplier; import io.lettuce.core.RedisChannelWriter; import io.lettuce.core.cluster.ClusterPushHandler; @@ -37,7 +38,7 @@ class MyRedisClusterConnection extends StatefulRedisClusterConnectionImpl { public MyRedisClusterConnection(RedisChannelWriter writer, ClusterPushHandler pushHandler, RedisCodec codec, - Duration timeout, Mono parser) { + Duration timeout, Supplier parser) { super(writer, pushHandler, codec, timeout, parser); } diff --git a/src/test/java/io/lettuce/core/ClientOptionsUnitTests.java b/src/test/java/io/lettuce/core/ClientOptionsUnitTests.java index bb2d0f91a0..49811ea5c8 100644 --- a/src/test/java/io/lettuce/core/ClientOptionsUnitTests.java +++ b/src/test/java/io/lettuce/core/ClientOptionsUnitTests.java @@ -40,7 +40,7 @@ void testDefault() { assertThat(options.getReadOnlyCommands().isReadOnly(new Command<>(CommandType.SET, null))).isFalse(); assertThat(options.getReadOnlyCommands().isReadOnly(new Command<>(CommandType.PUBLISH, null))).isFalse(); assertThat(options.getReadOnlyCommands().isReadOnly(new Command<>(CommandType.GET, null))).isTrue(); - assertThat(options.getJsonParser().block()).isInstanceOf(DefaultJsonParser.class); + assertThat(options.getJsonParser().get()).isInstanceOf(DefaultJsonParser.class); } @Test @@ -66,8 +66,8 @@ void testCopy() { @Test void jsonParser() { JsonParser parser = new CustomJsonParser(); - ClientOptions options = ClientOptions.builder().jsonParser(Mono.justOrEmpty(parser)).build(); - assertThat(options.getJsonParser().block()).isInstanceOf(CustomJsonParser.class); + ClientOptions options = ClientOptions.builder().jsonParser(() -> parser).build(); + assertThat(options.getJsonParser().get()).isInstanceOf(CustomJsonParser.class); } static class CustomJsonParser implements JsonParser { diff --git a/src/test/java/io/lettuce/core/RedisJsonCommandBuilderUnitTests.java b/src/test/java/io/lettuce/core/RedisJsonCommandBuilderUnitTests.java index 4106a711c2..22f3aed345 100644 --- a/src/test/java/io/lettuce/core/RedisJsonCommandBuilderUnitTests.java +++ b/src/test/java/io/lettuce/core/RedisJsonCommandBuilderUnitTests.java @@ -49,7 +49,7 @@ class RedisJsonCommandBuilderUnitTests { public static final JsonPath MY_PATH = JsonPath.of("$..commuter_bikes"); - RedisJsonCommandBuilder builder = new RedisJsonCommandBuilder<>(StringCodec.UTF8, Mono.just(PARSER)); + RedisJsonCommandBuilder builder = new RedisJsonCommandBuilder<>(StringCodec.UTF8, () -> PARSER); @Test void shouldCorrectlyConstructJsonArrappend() { diff --git a/src/test/java/io/lettuce/core/json/RedisJsonIntegrationTests.java b/src/test/java/io/lettuce/core/json/RedisJsonIntegrationTests.java index 76fdd0661f..b8d4ac924c 100644 --- a/src/test/java/io/lettuce/core/json/RedisJsonIntegrationTests.java +++ b/src/test/java/io/lettuce/core/json/RedisJsonIntegrationTests.java @@ -601,7 +601,7 @@ void withCustomParser() { RedisURI redisURI = RedisURI.Builder.redis("127.0.0.1").withPort(16379).build(); try (RedisClient client = RedisClient.create(redisURI)) { - client.setOptions(ClientOptions.builder().jsonParser(Mono.just(new CustomParser())).build()); + client.setOptions(ClientOptions.builder().jsonParser(CustomParser::new).build()); StatefulRedisConnection connection = client.connect(StringCodec.UTF8); RedisCommands redis = connection.sync(); assertThat(redis.getJsonParser()).isInstanceOf(CustomParser.class);