Skip to content

Commit c9a7f1b

Browse files
committed
Polish "Add HGETDEL, HGETEX and HSETEX hash commands".
This commit polishes the previous commit with the following: - Add missing `@Override` tag - Update javadoc to include details for returned values - Adds the `HSETEX` command to `LettuceCommand` Original Pull Request: #3226 Resolves: #3211 Signed-off-by: Chris Bono <chris.bono@broadcom.com>
1 parent 8ec4736 commit c9a7f1b

File tree

6 files changed

+31
-8
lines changed

6 files changed

+31
-8
lines changed

src/main/java/org/springframework/data/redis/connection/RedisHashCommands.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,8 @@ default List<Long> hExpireAt(byte @NonNull [] key, long unixTime, byte @NonNull
551551
*
552552
* @param key must not be {@literal null}.
553553
* @param fields must not be {@literal null}.
554-
* @return empty {@link List} if key does not exist. {@literal null} when used in pipeline / transaction.
554+
* @return list of values for deleted {@code fields} ({@literal null} for fields that does not exist) or an
555+
* empty {@link List} if key does not exist or {@literal null} when used in pipeline / transaction.
555556
* @see <a href="https://redis.io/commands/hgetdel">Redis Documentation: HGETDEL</a>
556557
*/
557558
List<byte[]> hGetDel(byte @NonNull [] key, byte @NonNull [] @NonNull... fields);
@@ -562,7 +563,8 @@ default List<Long> hExpireAt(byte @NonNull [] key, long unixTime, byte @NonNull
562563
*
563564
* @param key must not be {@literal null}.
564565
* @param fields must not be {@literal null}.
565-
* @return empty {@link List} if key does not exist. {@literal null} when used in pipeline / transaction.
566+
* @return list of values for given {@code fields} or an empty {@link List} if key does not
567+
* exist or {@literal null} when used in pipeline / transaction.
566568
* @see <a href="https://redis.io/commands/hgetex">Redis Documentation: HGETEX</a>
567569
*/
568570
List<byte[]> hGetEx(byte @NonNull [] key, Expiration expiration,

src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,22 @@
1515
*/
1616
package org.springframework.data.redis.connection.jedis;
1717

18-
import org.springframework.data.redis.connection.*;
1918
import redis.clients.jedis.GeoCoordinate;
2019
import redis.clients.jedis.HostAndPort;
2120
import redis.clients.jedis.Protocol;
2221
import redis.clients.jedis.args.BitOP;
2322
import redis.clients.jedis.args.FlushMode;
2423
import redis.clients.jedis.args.GeoUnit;
2524
import redis.clients.jedis.args.ListPosition;
26-
import redis.clients.jedis.params.*;
25+
import redis.clients.jedis.params.GeoRadiusParam;
26+
import redis.clients.jedis.params.GeoSearchParam;
27+
import redis.clients.jedis.params.GetExParams;
28+
import redis.clients.jedis.params.HGetExParams;
29+
import redis.clients.jedis.params.HSetExParams;
30+
import redis.clients.jedis.params.ScanParams;
31+
import redis.clients.jedis.params.SetParams;
32+
import redis.clients.jedis.params.SortingParams;
33+
import redis.clients.jedis.params.ZAddParams;
2734
import redis.clients.jedis.resps.GeoRadiusResponse;
2835
import redis.clients.jedis.util.SafeEncoder;
2936

@@ -48,19 +55,27 @@
4855
import org.springframework.data.geo.Metric;
4956
import org.springframework.data.geo.Metrics;
5057
import org.springframework.data.geo.Point;
58+
import org.springframework.data.redis.connection.BitFieldSubCommands;
5159
import org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldIncrBy;
5260
import org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldSet;
5361
import org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldSubCommand;
62+
import org.springframework.data.redis.connection.RedisGeoCommands;
5463
import org.springframework.data.redis.connection.RedisGeoCommands.DistanceUnit;
5564
import org.springframework.data.redis.connection.RedisGeoCommands.GeoLocation;
5665
import org.springframework.data.redis.connection.RedisGeoCommands.GeoRadiusCommandArgs;
5766
import org.springframework.data.redis.connection.RedisGeoCommands.GeoRadiusCommandArgs.Flag;
67+
import org.springframework.data.redis.connection.RedisHashCommands;
5868
import org.springframework.data.redis.connection.RedisListCommands.Position;
69+
import org.springframework.data.redis.connection.RedisNode;
70+
import org.springframework.data.redis.connection.RedisServer;
71+
import org.springframework.data.redis.connection.RedisServerCommands;
5972
import org.springframework.data.redis.connection.RedisStringCommands.BitOperation;
6073
import org.springframework.data.redis.connection.RedisStringCommands.SetOption;
6174
import org.springframework.data.redis.connection.RedisZSetCommands.ZAddArgs;
75+
import org.springframework.data.redis.connection.SortParameters;
6276
import org.springframework.data.redis.connection.SortParameters.Order;
6377
import org.springframework.data.redis.connection.SortParameters.Range;
78+
import org.springframework.data.redis.connection.ValueEncoding;
6479
import org.springframework.data.redis.connection.convert.Converters;
6580
import org.springframework.data.redis.connection.convert.ListConverter;
6681
import org.springframework.data.redis.connection.convert.StringToRedisClientInfoConverter;

src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,6 +1252,7 @@ static class TypeHints {
12521252
COMMAND_OUTPUT_TYPE_MAPPING.put(EXPIREAT, BooleanOutput.class);
12531253
COMMAND_OUTPUT_TYPE_MAPPING.put(HEXISTS, BooleanOutput.class);
12541254
COMMAND_OUTPUT_TYPE_MAPPING.put(HSET, BooleanOutput.class);
1255+
COMMAND_OUTPUT_TYPE_MAPPING.put(HSETEX, BooleanOutput.class);
12551256
COMMAND_OUTPUT_TYPE_MAPPING.put(HSETNX, BooleanOutput.class);
12561257
COMMAND_OUTPUT_TYPE_MAPPING.put(MOVE, BooleanOutput.class);
12571258
COMMAND_OUTPUT_TYPE_MAPPING.put(COPY, BooleanOutput.class);

src/main/java/org/springframework/data/redis/connection/lettuce/LettuceHashCommands.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ public List<byte[]> hGetEx(byte @NonNull [] key, Expiration expiration, byte @No
287287
.toList(source -> source.getValueOrElse(null));
288288
}
289289

290+
@Override
290291
public Boolean hSetEx(byte @NonNull [] key, @NonNull Map<byte[], byte[]> hashes, HashFieldSetOption condition,
291292
Expiration expiration) {
292293

src/main/java/org/springframework/data/redis/core/HashOperations.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public interface HashOperations<H, HK, HV> {
8787
*
8888
* @param key must not be {@literal null}.
8989
* @param hashKeys must not be {@literal null}.
90-
* @return {@literal null} when used in pipeline / transaction.
90+
* @return list of values for the given fields or {@literal null} when used in pipeline / transaction.
9191
* @since 4.0
9292
*/
9393
List<HV> getAndDelete(@NonNull H key, @NonNull Collection<@NonNull HK> hashKeys);
@@ -99,7 +99,7 @@ public interface HashOperations<H, HK, HV> {
9999
* @param key must not be {@literal null}.
100100
* @param expiration is optional.
101101
* @param hashKeys must not be {@literal null}.
102-
* @return {@literal null} when used in pipeline / transaction.
102+
* @return list of values for the given fields or {@literal null} when used in pipeline / transaction.
103103
* @since 4.0
104104
*/
105105
List<HV> getAndExpire(@NonNull H key, Expiration expiration, @NonNull Collection<@NonNull HK> hashKeys);
@@ -111,7 +111,7 @@ public interface HashOperations<H, HK, HV> {
111111
* @param m must not be {@literal null}.
112112
* @param condition is optional.
113113
* @param expiration is optional.
114-
* @return {@literal null} when used in pipeline / transaction.
114+
* @return whether all fields were set or {@literal null} when used in pipeline / transaction.
115115
* @since 4.0
116116
*/
117117
Boolean putAndExpire(@NonNull H key, @NonNull Map<? extends @NonNull HK, ? extends HV> m,

src/test/java/org/springframework/data/redis/core/DefaultHashOperationsIntegrationTests.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121
import java.io.IOException;
2222
import java.time.Duration;
2323
import java.time.Instant;
24-
import java.util.*;
24+
import java.util.Arrays;
25+
import java.util.Collection;
26+
import java.util.Collections;
27+
import java.util.List;
28+
import java.util.Map;
2529
import java.util.concurrent.TimeUnit;
2630

2731
import org.assertj.core.api.InstanceOfAssertFactories;

0 commit comments

Comments
 (0)