From f4680a180c65c22ee75008ef93a23aa4ccc34769 Mon Sep 17 00:00:00 2001 From: Guy Korland Date: Thu, 29 Nov 2018 06:00:53 +0200 Subject: [PATCH] DATAREDIS-749 - Upgrade to Jedis 3.0.0 M1. Upgrade dependency version to 3.0.0 M1. Adapt to API changes. Original pull request: #374. --- pom.xml | 2 +- .../connection/jedis/JedisClientUtils.java | 4 +-- .../jedis/JedisClusterGeoCommands.java | 4 +-- .../jedis/JedisClusterHashCommands.java | 2 +- .../jedis/JedisClusterKeyCommands.java | 2 +- .../jedis/JedisClusterServerCommands.java | 7 ++-- .../jedis/JedisClusterSetCommands.java | 2 +- .../jedis/JedisClusterStringCommands.java | 7 ++-- .../jedis/JedisClusterZSetCommands.java | 6 ++-- .../connection/jedis/JedisConnection.java | 20 ++--------- .../jedis/JedisConnectionFactory.java | 2 +- .../connection/jedis/JedisConverters.java | 33 +++++++++++++------ .../jedis/JedisExceptionConverter.java | 4 +-- .../connection/jedis/JedisGeoCommands.java | 4 +-- .../connection/jedis/JedisHashCommands.java | 2 +- .../connection/jedis/JedisKeyCommands.java | 2 +- .../jedis/JedisScriptReturnConverter.java | 2 +- .../connection/jedis/JedisServerCommands.java | 6 ++-- .../connection/jedis/JedisSetCommands.java | 2 +- .../connection/jedis/JedisStringCommands.java | 15 ++++----- .../redis/connection/jedis/JedisUtils.java | 8 ++--- .../connection/jedis/JedisZSetCommands.java | 6 ++-- .../jedis/JedisConnectionUnitTestSuite.java | 2 +- .../jedis/JedisConvertersUnitTests.java | 21 +++++++----- .../JedisExceptionConverterUnitTests.java | 4 +-- 25 files changed, 85 insertions(+), 84 deletions(-) diff --git a/pom.xml b/pom.xml index 3f4db9edf..c202db66e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ 1.4.8 2.6.0 5.1.3.RELEASE - 2.9.0 + 3.0.0-m1 1.01 4.1.22.Final spring.data.redis diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClientUtils.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClientUtils.java index 23f31709d..12d3d1ba5 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClientUtils.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClientUtils.java @@ -24,8 +24,8 @@ import redis.clients.jedis.Protocol; import redis.clients.jedis.Protocol.Command; import redis.clients.jedis.Queable; import redis.clients.jedis.Response; -import redis.clients.util.RedisOutputStream; -import redis.clients.util.SafeEncoder; +import redis.clients.jedis.util.RedisOutputStream; +import redis.clients.jedis.util.SafeEncoder; import java.lang.reflect.Field; import java.lang.reflect.Method; diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterGeoCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterGeoCommands.java index 1d0563d1f..4cfc0fc13 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterGeoCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterGeoCommands.java @@ -19,7 +19,7 @@ import lombok.NonNull; import lombok.RequiredArgsConstructor; import redis.clients.jedis.GeoCoordinate; import redis.clients.jedis.GeoUnit; -import redis.clients.jedis.params.geo.GeoRadiusParam; +import redis.clients.jedis.params.GeoRadiusParam; import java.util.HashMap; import java.util.List; @@ -258,7 +258,7 @@ class JedisClusterGeoCommands implements RedisGeoCommands { Assert.notNull(args, "Args must not be null!"); GeoUnit geoUnit = JedisConverters.toGeoUnit(radius.getMetric()); - redis.clients.jedis.params.geo.GeoRadiusParam geoRadiusParam = JedisConverters.toGeoRadiusParam(args); + redis.clients.jedis.params.GeoRadiusParam geoRadiusParam = JedisConverters.toGeoRadiusParam(args); try { return JedisConverters.geoRadiusResponseToGeoResultsConverter(radius.getMetric()) diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterHashCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterHashCommands.java index 37614e2ab..6da09c0ba 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterHashCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterHashCommands.java @@ -282,7 +282,7 @@ class JedisClusterHashCommands implements RedisHashCommands { redis.clients.jedis.ScanResult> result = connection.getCluster().hscan(key, JedisConverters.toBytes(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), result.getResult()); + return new ScanIteration<>(Long.valueOf(result.getCursor()), result.getResult()); } }.open(); } diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java index a0a26df5e..f272aeb9c 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java @@ -196,7 +196,7 @@ class JedisClusterKeyCommands implements RedisKeyCommands { ScanParams params = JedisConverters.toScanParams(options); redis.clients.jedis.ScanResult result = client.scan(Long.toString(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), + return new ScanIteration<>(Long.valueOf(result.getCursor()), JedisConverters.stringListToByteList().convert(result.getResult())); } }.open(); diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java index 3f65bd306..898d972f1 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java @@ -18,6 +18,7 @@ package org.springframework.data.redis.connection.jedis; import lombok.NonNull; import lombok.RequiredArgsConstructor; import redis.clients.jedis.BinaryJedis; +import redis.clients.jedis.Jedis; import java.util.ArrayList; import java.util.Collection; @@ -447,7 +448,7 @@ class JedisClusterServerCommands implements RedisClusterServerCommands { public List getClientList() { Collection map = connection.getClusterCommandExecutor() - .executeCommandOnAllNodes((JedisClusterCommandCallback) BinaryJedis::clientList).resultsAsList(); + .executeCommandOnAllNodes((JedisClusterCommandCallback) Jedis::clientList).resultsAsList(); ArrayList result = new ArrayList<>(); for (String infos : map) { @@ -464,7 +465,7 @@ class JedisClusterServerCommands implements RedisClusterServerCommands { public List getClientList(RedisClusterNode node) { return JedisConverters - .toListOfRedisClientInformation(executeCommandOnSingleNode(BinaryJedis::clientList, node).getValue()); + .toListOfRedisClientInformation(executeCommandOnSingleNode(Jedis::clientList, node).getValue()); } /* @@ -510,7 +511,7 @@ class JedisClusterServerCommands implements RedisClusterServerCommands { RedisClusterNode node = connection.getTopologyProvider().getTopology().lookup(target.getHost(), target.getPort()); - executeCommandOnSingleNode(client -> client.migrate(JedisConverters.toBytes(target.getHost()), target.getPort(), + executeCommandOnSingleNode(client -> client.migrate(target.getHost(), target.getPort(), key, dbIndex, timeoutToUse), node); } diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterSetCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterSetCommands.java index c6b917bc3..dc5971c41 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterSetCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterSetCommands.java @@ -451,7 +451,7 @@ class JedisClusterSetCommands implements RedisSetCommands { ScanParams params = JedisConverters.toScanParams(options); redis.clients.jedis.ScanResult result = connection.getCluster().sscan(key, JedisConverters.toBytes(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), result.getResult()); + return new ScanIteration<>(Long.valueOf(result.getCursor()), result.getResult()); } }.open(); } diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java index e1aaa9a5d..ba19d3fe3 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java @@ -19,6 +19,7 @@ import lombok.NonNull; import lombok.RequiredArgsConstructor; import redis.clients.jedis.BinaryJedis; import redis.clients.jedis.Connection; +import redis.clients.jedis.params.SetParams; import java.util.ArrayList; import java.util.Arrays; @@ -157,12 +158,12 @@ class JedisClusterStringCommands implements RedisStringCommands { } } else { - byte[] nxxx = JedisConverters.toSetCommandNxXxArgument(option); - byte[] expx = JedisConverters.toSetCommandExPxArgument(expiration); + SetParams params = JedisConverters.toSetCommandNxXxArgument(option, null); + JedisConverters.toSetCommandExPxArgument(expiration, params); try { return Converters - .stringToBoolean(connection.getCluster().set(key, value, nxxx, expx, expiration.getExpirationTime())); + .stringToBoolean(connection.getCluster().set(key, value, params)); } catch (Exception ex) { throw convertJedisAccessException(ex); } diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterZSetCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterZSetCommands.java index f985387e8..4645d7650 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterZSetCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterZSetCommands.java @@ -642,7 +642,7 @@ class JedisClusterZSetCommands implements RedisZSetCommands { if (ClusterSlotHashUtil.isSameSlotForAllKeys(allKeys)) { - ZParams zparams = new ZParams().weightsByDouble(weights.toArray()) + ZParams zparams = new ZParams().weights(weights.toArray()) .aggregate(ZParams.Aggregate.valueOf(aggregate.name())); try { @@ -698,7 +698,7 @@ class JedisClusterZSetCommands implements RedisZSetCommands { if (ClusterSlotHashUtil.isSameSlotForAllKeys(allKeys)) { - ZParams zparams = new ZParams().weightsByDouble(weights.toArray()) + ZParams zparams = new ZParams().weights(weights.toArray()) .aggregate(ZParams.Aggregate.valueOf(aggregate.name())); try { @@ -729,7 +729,7 @@ class JedisClusterZSetCommands implements RedisZSetCommands { redis.clients.jedis.ScanResult result = connection.getCluster().zscan(key, JedisConverters.toBytes(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), + return new ScanIteration<>(Long.valueOf(result.getCursor()), JedisConverters.tuplesToTuples().convert(result.getResult())); } }.open(); diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java index 88c2a74de..68949a754 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java @@ -23,7 +23,7 @@ import redis.clients.jedis.Pipeline; import redis.clients.jedis.Response; import redis.clients.jedis.Transaction; import redis.clients.jedis.exceptions.JedisDataException; -import redis.clients.util.Pool; +import redis.clients.jedis.util.Pool; import java.util.ArrayList; import java.util.Collections; @@ -74,7 +74,6 @@ public class JedisConnection extends AbstractRedisConnection { /** * flag indicating whether the connection needs to be dropped or not */ - private boolean broken = false; private volatile @Nullable JedisSubscription subscription; private volatile @Nullable Pipeline pipeline; private final int dbIndex; @@ -133,17 +132,7 @@ public class JedisConnection extends AbstractRedisConnection { } protected DataAccessException convertJedisAccessException(Exception ex) { - - if (ex instanceof NullPointerException) { - // An NPE before flush will leave data in the OutputStream of a pooled connection - broken = true; - } - DataAccessException exception = EXCEPTION_TRANSLATION.translate(ex); - if (exception instanceof RedisConnectionFailureException) { - broken = true; - } - return exception != null ? exception : new RedisSystemException(ex.getMessage(), ex); } @@ -293,12 +282,7 @@ public class JedisConnection extends AbstractRedisConnection { // return the connection to the pool if (pool != null) { - - if (broken) { - pool.returnBrokenResource(jedis); - } else { - jedis.close(); - } + jedis.close(); return; } // else close the connection normally (doing the try/catch dance) diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java index 0e5d1d0fc..311a89b99 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnectionFactory.java @@ -24,7 +24,7 @@ import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisSentinelPool; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.Protocol; -import redis.clients.util.Pool; +import redis.clients.jedis.util.Pool; import java.time.Duration; import java.util.Collection; diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java index 3bda7f2e2..50cbd5970 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java @@ -15,15 +15,16 @@ */ package org.springframework.data.redis.connection.jedis; -import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.jedis.BitOP; import redis.clients.jedis.GeoCoordinate; import redis.clients.jedis.GeoRadiusResponse; import redis.clients.jedis.GeoUnit; +import redis.clients.jedis.ListPosition; import redis.clients.jedis.ScanParams; import redis.clients.jedis.SortingParams; -import redis.clients.jedis.params.geo.GeoRadiusParam; -import redis.clients.util.SafeEncoder; +import redis.clients.jedis.params.GeoRadiusParam; +import redis.clients.jedis.params.SetParams; +import redis.clients.jedis.util.SafeEncoder; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -402,9 +403,9 @@ abstract public class JedisConverters extends Converters { return EXCEPTION_CONVERTER.convert(ex); } - public static LIST_POSITION toListPosition(Position source) { + public static ListPosition toListPosition(Position source) { Assert.notNull(source, "list positions are mandatory"); - return (Position.AFTER.equals(source) ? LIST_POSITION.AFTER : LIST_POSITION.BEFORE); + return (Position.AFTER.equals(source) ? ListPosition.AFTER : ListPosition.BEFORE); } public static byte[][] toByteArrays(Map source) { @@ -509,9 +510,13 @@ abstract public class JedisConverters extends Converters { * @return * @since 1.7 */ - public static byte[] toSetCommandExPxArgument(Expiration expiration) { - return EXPIRATION_TO_COMMAND_OPTION_CONVERTER.convert(expiration); - } + public static SetParams toSetCommandExPxArgument(Expiration expiration, SetParams params) { + params = params==null? SetParams.setParams() : params; + if(expiration.getTimeUnit() == TimeUnit.MILLISECONDS) { + return params.px(expiration.getExpirationTime()); + } + return params.ex((int)expiration.getExpirationTime()); + } /** * Converts a given {@link SetOption} to the according {@code SET} command argument.
@@ -528,8 +533,16 @@ abstract public class JedisConverters extends Converters { * @return * @since 1.7 */ - public static byte[] toSetCommandNxXxArgument(SetOption option) { - return SET_OPTION_TO_COMMAND_OPTION_CONVERTER.convert(option); + public static SetParams toSetCommandNxXxArgument(SetOption option, SetParams params) { + params = params==null? SetParams.setParams() : params; + switch(option) { + case SET_IF_PRESENT: + return params.xx(); + case SET_IF_ABSENT: + return params.nx(); + default: + return params; + } } private static byte[] boundaryToBytes(Boundary boundary, byte[] inclPrefix, byte[] exclPrefix) { diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverter.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverter.java index 5c53ba7f9..43b286814 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverter.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverter.java @@ -25,7 +25,7 @@ import org.springframework.data.redis.ClusterRedirectException; import org.springframework.data.redis.RedisConnectionFailureException; import org.springframework.data.redis.TooManyClusterRedirectionsException; -import redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException; +import redis.clients.jedis.exceptions.JedisClusterMaxAttemptsException; import redis.clients.jedis.exceptions.JedisConnectionException; import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.exceptions.JedisException; @@ -57,7 +57,7 @@ public class JedisExceptionConverter implements Converter, GeoResults>> converter = JedisConverters .geoRadiusResponseToGeoResultsConverter(within.getRadius().getMetric()); @@ -381,7 +381,7 @@ class JedisGeoCommands implements RedisGeoCommands { GeoUnit geoUnit = JedisConverters.toGeoUnit(radius.getMetric()); Converter, GeoResults>> converter = JedisConverters .geoRadiusResponseToGeoResultsConverter(radius.getMetric()); - redis.clients.jedis.params.geo.GeoRadiusParam geoRadiusParam = JedisConverters.toGeoRadiusParam(args); + redis.clients.jedis.params.GeoRadiusParam geoRadiusParam = JedisConverters.toGeoRadiusParam(args); try { if (isPipelined()) { diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisHashCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisHashCommands.java index 76e34926c..9ae8a5f3c 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisHashCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisHashCommands.java @@ -403,7 +403,7 @@ class JedisHashCommands implements RedisHashCommands { ScanResult> result = connection.getJedis().hscan(key, JedisConverters.toBytes(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), result.getResult()); + return new ScanIteration<>(Long.valueOf(result.getCursor()), result.getResult()); } @Override diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisKeyCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisKeyCommands.java index 7aa699842..6bb588562 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisKeyCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisKeyCommands.java @@ -228,7 +228,7 @@ class JedisKeyCommands implements RedisKeyCommands { ScanParams params = JedisConverters.toScanParams(options); redis.clients.jedis.ScanResult result = connection.getJedis().scan(Long.toString(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), + return new ScanIteration<>(Long.valueOf(result.getCursor()), JedisConverters.stringListToByteList().convert(result.getResult())); } diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptReturnConverter.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptReturnConverter.java index a6a920270..c6d63c9cb 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptReturnConverter.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisScriptReturnConverter.java @@ -15,7 +15,7 @@ */ package org.springframework.data.redis.connection.jedis; -import redis.clients.util.SafeEncoder; +import redis.clients.jedis.util.SafeEncoder; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java index c8e8d8d3b..066153272 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java @@ -495,15 +495,15 @@ class JedisServerCommands implements RedisServerCommands { if (isPipelined()) { pipeline(connection.newJedisResult(connection.getRequiredPipeline() - .migrate(JedisConverters.toBytes(target.getHost()), target.getPort(), key, dbIndex, timeoutToUse))); + .migrate(target.getHost(), target.getPort(), key, dbIndex, timeoutToUse))); return; } if (isQueueing()) { transaction(connection.newJedisResult(connection.getRequiredTransaction() - .migrate(JedisConverters.toBytes(target.getHost()), target.getPort(), key, dbIndex, timeoutToUse))); + .migrate(target.getHost(), target.getPort(), key, dbIndex, timeoutToUse))); return; } - connection.getJedis().migrate(JedisConverters.toBytes(target.getHost()), target.getPort(), key, dbIndex, + connection.getJedis().migrate(target.getHost(), target.getPort(), key, dbIndex, timeoutToUse); } catch (Exception ex) { throw convertJedisAccessException(ex); diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisSetCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisSetCommands.java index 13939225e..86b2804eb 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisSetCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisSetCommands.java @@ -479,7 +479,7 @@ class JedisSetCommands implements RedisSetCommands { redis.clients.jedis.ScanResult result = connection.getJedis().sscan(key, JedisConverters.toBytes(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), result.getResult()); + return new ScanIteration<>(Long.valueOf(result.getCursor()), result.getResult()); } protected void doClose() { diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisStringCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisStringCommands.java index 96fd2b63b..209c43448 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisStringCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisStringCommands.java @@ -19,6 +19,7 @@ import lombok.NonNull; import lombok.RequiredArgsConstructor; import redis.clients.jedis.BitPosParams; import redis.clients.jedis.Client; +import redis.clients.jedis.params.SetParams; import java.util.List; import java.util.Map; @@ -165,8 +166,7 @@ class JedisStringCommands implements RedisStringCommands { } else { try { - - byte[] nxxx = JedisConverters.toSetCommandNxXxArgument(option); + SetParams nxxx = JedisConverters.toSetCommandNxXxArgument(option, null); if (isPipelined()) { @@ -198,8 +198,8 @@ class JedisStringCommands implements RedisStringCommands { } } else { - byte[] nxxx = JedisConverters.toSetCommandNxXxArgument(option); - byte[] expx = JedisConverters.toSetCommandExPxArgument(expiration); + SetParams params = JedisConverters.toSetCommandNxXxArgument(option, null); + JedisConverters.toSetCommandExPxArgument(expiration, params); try { if (isPipelined()) { @@ -211,7 +211,7 @@ class JedisStringCommands implements RedisStringCommands { } pipeline(connection.newJedisResult( - connection.getRequiredPipeline().set(key, value, nxxx, expx, (int) expiration.getExpirationTime()), + connection.getRequiredPipeline().set(key, value, params), Converters.stringToBooleanConverter(), () -> false)); return null; } @@ -223,13 +223,12 @@ class JedisStringCommands implements RedisStringCommands { } transaction(connection.newJedisResult( - connection.getRequiredTransaction().set(key, value, nxxx, expx, (int) expiration.getExpirationTime()), + connection.getRequiredTransaction().set(key, value, params), Converters.stringToBooleanConverter(), () -> false)); return null; } - return Converters - .stringToBoolean(connection.getJedis().set(key, value, nxxx, expx, expiration.getExpirationTime())); + return Converters.stringToBoolean(connection.getJedis().set(key, value, params)); } catch (Exception ex) { throw convertJedisAccessException(ex); diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisUtils.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisUtils.java index 62ba59ed2..a1c857a1f 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisUtils.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisUtils.java @@ -16,14 +16,14 @@ package org.springframework.data.redis.connection.jedis; -import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.jedis.BinaryJedisPubSub; +import redis.clients.jedis.ListPosition; import redis.clients.jedis.Protocol; import redis.clients.jedis.SortingParams; import redis.clients.jedis.exceptions.JedisConnectionException; import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.exceptions.JedisException; -import redis.clients.util.SafeEncoder; +import redis.clients.jedis.util.SafeEncoder; import java.io.IOException; import java.io.StringReader; @@ -215,9 +215,9 @@ public abstract class JedisUtils { return (value ? ONE : ZERO); } - static LIST_POSITION convertPosition(Position where) { + static ListPosition convertPosition(Position where) { Assert.notNull(where, "list positions are mandatory"); - return (Position.AFTER.equals(where) ? LIST_POSITION.AFTER : LIST_POSITION.BEFORE); + return (Position.AFTER.equals(where) ? ListPosition.AFTER : ListPosition.BEFORE); } /** diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisZSetCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisZSetCommands.java index 54aadcf4e..ca37038d3 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisZSetCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisZSetCommands.java @@ -594,7 +594,7 @@ class JedisZSetCommands implements RedisZSetCommands { .format("The number of weights (%d) must match the number of source sets (%d)!", weights.size(), sets.length)); try { - ZParams zparams = new ZParams().weightsByDouble(weights.toArray()) + ZParams zparams = new ZParams().weights(weights.toArray()) .aggregate(ZParams.Aggregate.valueOf(aggregate.name())); if (isPipelined()) { @@ -651,7 +651,7 @@ class JedisZSetCommands implements RedisZSetCommands { .format("The number of weights (%d) must match the number of source sets (%d)!", weights.size(), sets.length)); try { - ZParams zparams = new ZParams().weightsByDouble(weights.toArray()) + ZParams zparams = new ZParams().weights(weights.toArray()) .aggregate(ZParams.Aggregate.valueOf(aggregate.name())); if (isPipelined()) { @@ -727,7 +727,7 @@ class JedisZSetCommands implements RedisZSetCommands { ScanResult result = connection.getJedis().zscan(key, JedisConverters.toBytes(cursorId), params); - return new ScanIteration<>(Long.valueOf(result.getStringCursor()), + return new ScanIteration<>(Long.valueOf(result.getCursor()), JedisConverters.tuplesToTuples().convert(result.getResult())); } diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionUnitTestSuite.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionUnitTestSuite.java index 76a59a712..ae8d0086d 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionUnitTestSuite.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionUnitTestSuite.java @@ -270,7 +270,7 @@ public class JedisConnectionUnitTestSuite { public void doesNotSelectDbWhenCurrentDbDoesNotMatchDesiredOne() { Jedis jedisSpy = spy(new MockedClientJedis("http://localhost:1234", getNativeRedisConnectionMock())); - when(jedisSpy.getDB()).thenReturn(3L); + when(jedisSpy.getDB()).thenReturn(3); new JedisConnection(jedisSpy); diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConvertersUnitTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConvertersUnitTests.java index 7d7b4a850..7b70c9371 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConvertersUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConvertersUnitTests.java @@ -20,6 +20,8 @@ import static org.hamcrest.core.IsEqual.*; import static org.hamcrest.core.IsNull.*; import static org.junit.Assert.*; +import redis.clients.jedis.params.SetParams; + import java.util.Arrays; import java.util.Collections; import java.util.Date; @@ -48,7 +50,8 @@ public class JedisConvertersUnitTests { @Test // DATAREDIS-268 public void convertingNullToListOfRedisClientInfoShouldReturnEmptyList() { - assertThat(JedisConverters.toListOfRedisClientInformation(null), equalTo(Collections. emptyList())); + assertThat(JedisConverters.toListOfRedisClientInformation(null), + equalTo(Collections. emptyList())); } @Test // DATAREDIS-268 @@ -168,8 +171,7 @@ public class JedisConvertersUnitTests { @Test // DATAREDIS-352 public void boundaryToBytesForZRangeByShouldReturnValueCorrectlyWhenBoundaryIsIncluing() { - assertThat( - JedisConverters.boundaryToBytesForZRange(Range.range().gte(JedisConverters.toBytes("a")).getMin(), null), + assertThat(JedisConverters.boundaryToBytesForZRange(Range.range().gte(JedisConverters.toBytes("a")).getMin(), null), is(JedisConverters.toBytes("a"))); } @@ -201,34 +203,35 @@ public class JedisConvertersUnitTests { @Test // DATAREDIS-316 public void toSetCommandExPxOptionShouldReturnEXforSeconds() { - assertThat(JedisConverters.toSetCommandExPxArgument(Expiration.seconds(100)), equalTo(JedisConverters.toBytes("EX"))); + assertThat(JedisConverters.toSetCommandExPxArgument(Expiration.seconds(100)), + equalTo(JedisConverters.toBytes("EX"))); } @Test // DATAREDIS-316 public void toSetCommandExPxOptionShouldReturnEXforMilliseconds() { assertThat(JedisConverters.toSetCommandExPxArgument(Expiration.milliseconds(100)), - equalTo(JedisConverters.toBytes("PX"))); + equalTo(SetParams.setParams().px(100))); } @Test // DATAREDIS-316 public void toSetCommandExPxOptionShouldReturnEmptyArrayForNull() { - assertThat(JedisConverters.toSetCommandExPxArgument(null), equalTo(new byte[] {})); + assertThat(JedisConverters.toSetCommandExPxArgument(null), equalTo(SetParams.setParams())); } @Test // DATAREDIS-316 public void toSetCommandNxXxOptionShouldReturnNXforAbsent() { - assertThat(JedisConverters.toSetCommandNxXxArgument(SetOption.ifAbsent()), equalTo(JedisConverters.toBytes("NX"))); + assertThat(JedisConverters.toSetCommandNxXxArgument(SetOption.ifAbsent()), equalTo(SetParams.setParams().nx())); } @Test // DATAREDIS-316 public void toSetCommandNxXxOptionShouldReturnXXforAbsent() { - assertThat(JedisConverters.toSetCommandNxXxArgument(SetOption.ifPresent()), equalTo(JedisConverters.toBytes("XX"))); + assertThat(JedisConverters.toSetCommandNxXxArgument(SetOption.ifPresent()), equalTo(SetParams.setParams().xx())); } @Test // DATAREDIS-316 public void toSetCommandNxXxOptionShouldReturnEmptyArrayforUpsert() { - assertThat(JedisConverters.toSetCommandNxXxArgument(SetOption.upsert()), equalTo(new byte[] {})); + assertThat(JedisConverters.toSetCommandNxXxArgument(SetOption.upsert()), equalTo(SetParams.setParams())); } private void verifyRedisServerInfo(RedisServer server, Map values) { diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverterUnitTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverterUnitTests.java index be15f81f9..684c73d1d 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverterUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisExceptionConverterUnitTests.java @@ -27,7 +27,7 @@ import org.springframework.data.redis.TooManyClusterRedirectionsException; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.exceptions.JedisAskDataException; -import redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException; +import redis.clients.jedis.exceptions.JedisClusterMaxAttemptsException; import redis.clients.jedis.exceptions.JedisMovedDataException; /** @@ -70,7 +70,7 @@ public class JedisExceptionConverterUnitTests { public void shouldConvertMaxRedirectException() { DataAccessException converted = converter - .convert(new JedisClusterMaxRedirectionsException("Too many redirections?")); + .convert(new JedisClusterMaxAttemptsException("Too many redirections?")); assertThat(converted, instanceOf(TooManyClusterRedirectionsException.class)); }