Skip to content

Commit 4ab1789

Browse files
mp911dechristophstrobl
authored andcommitted
Use o.s.d.d.Range instead of inner Range class for ZSet operations.
Closes: #2288 Original Pull Request: #2292
1 parent 6ca3800 commit 4ab1789

22 files changed

+450
-324
lines changed

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

+52-25
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.commons.logging.LogFactory;
2626

2727
import org.springframework.core.convert.converter.Converter;
28+
import org.springframework.data.domain.Range;
2829
import org.springframework.data.geo.Circle;
2930
import org.springframework.data.geo.Distance;
3031
import org.springframework.data.geo.GeoResults;
@@ -990,7 +991,7 @@ public Long zCount(byte[] key, double min, double max) {
990991
}
991992

992993
@Override
993-
public Long zCount(byte[] key, Range range) {
994+
public Long zCount(byte[] key, org.springframework.data.domain.Range<Number> range) {
994995
return convertAndReturn(delegate.zCount(key, range), Converters.identityConverter());
995996
}
996997

@@ -1100,17 +1101,18 @@ public Set<byte[]> zRangeByScore(byte[] key, double min, double max, long offset
11001101
}
11011102

11021103
@Override
1103-
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
1104+
public Set<byte[]> zRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range) {
11041105
return convertAndReturn(delegate.zRangeByScore(key, range), Converters.identityConverter());
11051106
}
11061107

11071108
@Override
1108-
public Set<byte[]> zRangeByScore(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
1109+
public Set<byte[]> zRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range,
1110+
org.springframework.data.redis.connection.Limit limit) {
11091111
return convertAndReturn(delegate.zRangeByScore(key, range, limit), Converters.identityConverter());
11101112
}
11111113

11121114
@Override
1113-
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range) {
1115+
public Set<Tuple> zRangeByScoreWithScores(byte[] key, org.springframework.data.domain.Range<Number> range) {
11141116
return convertAndReturn(delegate.zRangeByScoreWithScores(key, range), Converters.identityConverter());
11151117
}
11161118

@@ -1126,7 +1128,7 @@ public Set<Tuple> zRangeByScoreWithScores(byte[] key, double min, double max, lo
11261128
}
11271129

11281130
@Override
1129-
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range,
1131+
public Set<Tuple> zRangeByScoreWithScores(byte[] key, org.springframework.data.domain.Range<Number> range,
11301132
org.springframework.data.redis.connection.Limit limit) {
11311133
return convertAndReturn(delegate.zRangeByScoreWithScores(key, range, limit), Converters.identityConverter());
11321134
}
@@ -1147,7 +1149,7 @@ public Set<byte[]> zRevRangeByScore(byte[] key, double min, double max, long off
11471149
}
11481150

11491151
@Override
1150-
public Set<byte[]> zRevRangeByScore(byte[] key, Range range) {
1152+
public Set<byte[]> zRevRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range) {
11511153
return convertAndReturn(delegate.zRevRangeByScore(key, range), Converters.identityConverter());
11521154
}
11531155

@@ -1157,7 +1159,8 @@ public Set<byte[]> zRevRangeByScore(byte[] key, double min, double max) {
11571159
}
11581160

11591161
@Override
1160-
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
1162+
public Set<byte[]> zRevRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range,
1163+
org.springframework.data.redis.connection.Limit limit) {
11611164
return convertAndReturn(delegate.zRevRangeByScore(key, range, limit), Converters.identityConverter());
11621165
}
11631166

@@ -1168,12 +1171,12 @@ public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, double min, double max,
11681171
}
11691172

11701173
@Override
1171-
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range) {
1174+
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, org.springframework.data.domain.Range<Number> range) {
11721175
return convertAndReturn(delegate.zRevRangeByScoreWithScores(key, range), Converters.identityConverter());
11731176
}
11741177

11751178
@Override
1176-
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range,
1179+
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, org.springframework.data.domain.Range<Number> range,
11771180
org.springframework.data.redis.connection.Limit limit) {
11781181
return convertAndReturn(delegate.zRevRangeByScoreWithScores(key, range, limit), Converters.identityConverter());
11791182
}
@@ -1199,7 +1202,7 @@ public Long zRemRange(byte[] key, long start, long end) {
11991202
}
12001203

12011204
@Override
1202-
public Long zRemRangeByLex(byte[] key, Range range) {
1205+
public Long zRemRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range) {
12031206
return convertAndReturn(delegate.zRemRangeByLex(key, range), Converters.identityConverter());
12041207
}
12051208

@@ -1209,7 +1212,7 @@ public Long zRemRangeByScore(byte[] key, double min, double max) {
12091212
}
12101213

12111214
@Override
1212-
public Long zRemRangeByScore(byte[] key, Range range) {
1215+
public Long zRemRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range) {
12131216
return convertAndReturn(delegate.zRemRangeByScore(key, range), Converters.identityConverter());
12141217
}
12151218

@@ -1291,8 +1294,8 @@ public Long zUnionStore(byte[] destKey, byte[]... sets) {
12911294
}
12921295

12931296
@Override
1294-
public Long zLexCount(String key, Range range) {
1295-
return delegate.zLexCount(serialize(key), range);
1297+
public Long zLexCount(String key, org.springframework.data.domain.Range<String> range) {
1298+
return delegate.zLexCount(serialize(key), serialize(range));
12961299
}
12971300

12981301
@Override
@@ -1370,6 +1373,26 @@ private byte[] serialize(String data) {
13701373
return serializer.serialize(data);
13711374
}
13721375

1376+
private org.springframework.data.domain.Range<byte[]> serialize(org.springframework.data.domain.Range<String> range) {
1377+
1378+
if (!range.getLowerBound().isBounded() && !range.getUpperBound().isBounded()) {
1379+
return org.springframework.data.domain.Range.unbounded();
1380+
}
1381+
1382+
org.springframework.data.domain.Range.Bound<byte[]> lower = rawBound(range.getLowerBound());
1383+
org.springframework.data.domain.Range.Bound<byte[]> upper = rawBound(range.getUpperBound());
1384+
1385+
return org.springframework.data.domain.Range.of(lower, upper);
1386+
}
1387+
1388+
private org.springframework.data.domain.Range.Bound<byte[]> rawBound(
1389+
org.springframework.data.domain.Range.Bound<String> source) {
1390+
return source.getValue().map(this::serialize)
1391+
.map(it -> source.isInclusive() ? org.springframework.data.domain.Range.Bound.inclusive(it)
1392+
: org.springframework.data.domain.Range.Bound.exclusive(it))
1393+
.orElseGet(org.springframework.data.domain.Range.Bound::unbounded);
1394+
}
1395+
13731396
@SuppressWarnings("unchecked")
13741397
private GeoReference<byte[]> serialize(GeoReference<String> data) {
13751398
return data instanceof GeoReference.GeoMemberReference
@@ -1987,7 +2010,7 @@ public Long zCount(String key, double min, double max) {
19872010
}
19882011

19892012
@Override
1990-
public Long zLexCount(byte[] key, Range range) {
2013+
public Long zLexCount(byte[] key, org.springframework.data.domain.Range<byte[]> range) {
19912014
return delegate.zLexCount(key, range);
19922015
}
19932016

@@ -2165,8 +2188,8 @@ public Long zRemRange(String key, long start, long end) {
21652188
}
21662189

21672190
@Override
2168-
public Long zRemRangeByLex(String key, Range range) {
2169-
return zRemRangeByLex(serialize(key), range);
2191+
public Long zRemRangeByLex(String key, org.springframework.data.domain.Range<String> range) {
2192+
return zRemRangeByLex(serialize(key), serialize(range));
21702193
}
21712194

21722195
@Override
@@ -2655,38 +2678,42 @@ public Set<byte[]> zRangeByLex(byte[] key) {
26552678
}
26562679

26572680
@Override
2658-
public Set<byte[]> zRangeByLex(byte[] key, Range range) {
2681+
public Set<byte[]> zRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range) {
26592682
return convertAndReturn(delegate.zRangeByLex(key, range), Converters.identityConverter());
26602683
}
26612684

26622685
@Override
2663-
public Set<byte[]> zRangeByLex(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
2686+
public Set<byte[]> zRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range,
2687+
org.springframework.data.redis.connection.Limit limit) {
26642688
return convertAndReturn(delegate.zRangeByLex(key, range, limit), Converters.identityConverter());
26652689
}
26662690

26672691
@Override
26682692
public Set<String> zRangeByLex(String key) {
2669-
return zRangeByLex(key, Range.unbounded());
2693+
return zRangeByLex(key, org.springframework.data.domain.Range.unbounded());
26702694
}
26712695

26722696
@Override
2673-
public Set<String> zRangeByLex(String key, Range range) {
2697+
public Set<String> zRangeByLex(String key, org.springframework.data.domain.Range<String> range) {
26742698
return zRangeByLex(key, range, org.springframework.data.redis.connection.Limit.unlimited());
26752699
}
26762700

26772701
@Override
2678-
public Set<String> zRangeByLex(String key, Range range, org.springframework.data.redis.connection.Limit limit) {
2679-
return convertAndReturn(delegate.zRangeByLex(serialize(key), range, limit), byteSetToStringSet);
2702+
public Set<String> zRangeByLex(String key, org.springframework.data.domain.Range<String> range,
2703+
org.springframework.data.redis.connection.Limit limit) {
2704+
return convertAndReturn(delegate.zRangeByLex(serialize(key), serialize(range), limit), byteSetToStringSet);
26802705
}
26812706

26822707
@Override
2683-
public Set<byte[]> zRevRangeByLex(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
2708+
public Set<byte[]> zRevRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range,
2709+
org.springframework.data.redis.connection.Limit limit) {
26842710
return convertAndReturn(delegate.zRevRangeByLex(key, range, limit), Converters.identityConverter());
26852711
}
26862712

26872713
@Override
2688-
public Set<String> zRevRangeByLex(String key, Range range, org.springframework.data.redis.connection.Limit limit) {
2689-
return convertAndReturn(delegate.zRevRangeByLex(serialize(key), range, limit), byteSetToStringSet);
2714+
public Set<String> zRevRangeByLex(String key, org.springframework.data.domain.Range<String> range,
2715+
org.springframework.data.redis.connection.Limit limit) {
2716+
return convertAndReturn(delegate.zRevRangeByLex(serialize(key), serialize(range), limit), byteSetToStringSet);
26902717
}
26912718

26922719
@Override

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

+15-10
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Set;
2424
import java.util.concurrent.TimeUnit;
2525

26+
import org.springframework.data.domain.Range;
2627
import org.springframework.data.geo.Circle;
2728
import org.springframework.data.geo.Distance;
2829
import org.springframework.data.geo.GeoResults;
@@ -967,7 +968,7 @@ default Long zCount(byte[] key, double min, double max) {
967968
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
968969
@Override
969970
@Deprecated
970-
default Long zLexCount(byte[] key, Range range) {
971+
default Long zLexCount(byte[] key, org.springframework.data.domain.Range<byte[]> range) {
971972
return zSetCommands().zLexCount(key, range);
972973
}
973974

@@ -1016,7 +1017,7 @@ default Tuple bZPopMax(byte[] key, long timeout, TimeUnit unit) {
10161017
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
10171018
@Override
10181019
@Deprecated
1019-
default Long zCount(byte[] key, Range range) {
1020+
default Long zCount(byte[] key, org.springframework.data.domain.Range<Number> range) {
10201021
return zSetCommands().zCount(key, range);
10211022
}
10221023

@@ -1142,28 +1143,31 @@ default Set<Tuple> zRangeWithScores(byte[] key, long start, long end) {
11421143
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
11431144
@Override
11441145
@Deprecated
1145-
default Set<byte[]> zRangeByLex(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
1146+
default Set<byte[]> zRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range,
1147+
org.springframework.data.redis.connection.Limit limit) {
11461148
return zSetCommands().zRangeByLex(key, range, limit);
11471149
}
11481150

11491151
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
11501152
@Override
11511153
@Deprecated
1152-
default Set<byte[]> zRevRangeByLex(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
1154+
default Set<byte[]> zRevRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range,
1155+
org.springframework.data.redis.connection.Limit limit) {
11531156
return zSetCommands().zRevRangeByLex(key, range, limit);
11541157
}
11551158

11561159
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
11571160
@Override
11581161
@Deprecated
1159-
default Set<byte[]> zRangeByScore(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
1162+
default Set<byte[]> zRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range,
1163+
org.springframework.data.redis.connection.Limit limit) {
11601164
return zSetCommands().zRangeByScore(key, range, limit);
11611165
}
11621166

11631167
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
11641168
@Override
11651169
@Deprecated
1166-
default Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range,
1170+
default Set<Tuple> zRangeByScoreWithScores(byte[] key, org.springframework.data.domain.Range<Number> range,
11671171
org.springframework.data.redis.connection.Limit limit) {
11681172
return zSetCommands().zRangeByScoreWithScores(key, range, limit);
11691173
}
@@ -1178,14 +1182,15 @@ default Set<Tuple> zRevRangeWithScores(byte[] key, long start, long end) {
11781182
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
11791183
@Override
11801184
@Deprecated
1181-
default Set<byte[]> zRevRangeByScore(byte[] key, Range range, org.springframework.data.redis.connection.Limit limit) {
1185+
default Set<byte[]> zRevRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range,
1186+
org.springframework.data.redis.connection.Limit limit) {
11821187
return zSetCommands().zRevRangeByScore(key, range, limit);
11831188
}
11841189

11851190
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
11861191
@Override
11871192
@Deprecated
1188-
default Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range,
1193+
default Set<Tuple> zRevRangeByScoreWithScores(byte[] key, org.springframework.data.domain.Range<Number> range,
11891194
org.springframework.data.redis.connection.Limit limit) {
11901195
return zSetCommands().zRevRangeByScoreWithScores(key, range, limit);
11911196
}
@@ -1214,14 +1219,14 @@ default Long zRemRange(byte[] key, long start, long end) {
12141219
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
12151220
@Override
12161221
@Deprecated
1217-
default Long zRemRangeByLex(byte[] key, Range range) {
1222+
default Long zRemRangeByLex(byte[] key, org.springframework.data.domain.Range<byte[]> range) {
12181223
return zSetCommands().zRemRangeByLex(key, range);
12191224
}
12201225

12211226
/** @deprecated in favor of {@link RedisConnection#zSetCommands()}}. */
12221227
@Override
12231228
@Deprecated
1224-
default Long zRemRangeByScore(byte[] key, Range range) {
1229+
default Long zRemRangeByScore(byte[] key, org.springframework.data.domain.Range<Number> range) {
12251230
return zSetCommands().zRemRangeByScore(key, range);
12261231
}
12271232

0 commit comments

Comments
 (0)