Fixed - redisRepository.opsForZSet().rangeByLex() method throws NullPointerException. #3232

pull/3235/head
Nikita Koksharov 4 years ago
parent b12cf1bd77
commit 200a02a9f7

@ -923,12 +923,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -978,8 +982,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1036,8 +1040,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1066,8 +1070,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1091,8 +1095,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, RedisCommands.ZCOUNT, key, min, max);
}
@ -1121,8 +1125,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1219,8 +1223,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1231,8 +1235,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1260,13 +1264,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1276,8 +1280,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -980,12 +980,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1035,8 +1039,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1093,8 +1097,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1123,8 +1127,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1148,8 +1152,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, RedisCommands.ZCOUNT, key, min, max);
}
@ -1178,8 +1182,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1276,8 +1280,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1288,8 +1292,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1317,13 +1321,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1333,8 +1337,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -993,12 +993,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1048,8 +1052,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1106,8 +1110,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1136,8 +1140,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1161,8 +1165,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, RedisCommands.ZCOUNT, key, min, max);
}
@ -1191,8 +1195,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1289,8 +1293,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1301,8 +1305,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1330,13 +1334,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1346,8 +1350,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -979,12 +979,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1034,8 +1038,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1092,8 +1096,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1122,8 +1126,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1149,8 +1153,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, ZCOUNT, key, min, max);
}
@ -1179,8 +1183,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1277,8 +1281,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1289,8 +1293,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1318,13 +1322,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1334,8 +1338,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -1010,12 +1010,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1065,8 +1069,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1123,8 +1127,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1153,8 +1157,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1180,8 +1184,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, ZCOUNT, key, min, max);
}
@ -1210,8 +1214,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1308,8 +1312,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1320,8 +1324,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1349,13 +1353,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1365,8 +1369,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -1002,12 +1002,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1057,8 +1061,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1115,8 +1119,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1145,8 +1149,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1172,8 +1176,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, ZCOUNT, key, min, max);
}
@ -1202,8 +1206,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1300,8 +1304,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1312,8 +1316,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1341,13 +1345,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1357,8 +1361,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -979,12 +979,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1034,8 +1038,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1092,8 +1096,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1122,8 +1126,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1149,8 +1153,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, ZCOUNT, key, min, max);
}
@ -1179,8 +1183,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1277,8 +1281,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1289,8 +1293,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1318,13 +1322,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1334,8 +1338,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -979,12 +979,16 @@ public class RedissonConnection extends AbstractRedisConnection {
return read(key, ByteArrayCodec.INSTANCE, ZRANGE_ENTRY, key, start, end, "WITHSCORES");
}
private String value(Object score, boolean inclusive, String defaultValue) {
private String value(Range.Boundary boundary, String defaultValue) {
if (boundary == null) {
return defaultValue;
}
Object score = boundary.getValue();
if (score == null) {
return defaultValue;
}
StringBuilder element = new StringBuilder();
if (!inclusive) {
if (!boundary.isIncluding()) {
element.append("(");
} else {
if (!(score instanceof Double)) {
@ -1034,8 +1038,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1092,8 +1096,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRevRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1122,8 +1126,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<Tuple> zRevRangeByScoreWithScores(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1149,8 +1153,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zCount(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, StringCodec.INSTANCE, ZCOUNT, key, min, max);
}
@ -1179,8 +1183,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Long zRemRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return write(key, StringCodec.INSTANCE, ZREMRANGEBYSCORE, key, min, max);
}
@ -1277,8 +1281,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
return read(key, ByteArrayCodec.INSTANCE, RedisCommands.ZRANGEBYSCORE, key, min, max);
}
@ -1289,8 +1293,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByScore(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-inf");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+inf");
String min = value(range.getMin(), "-inf");
String max = value(range.getMax(), "+inf");
List<Object> args = new ArrayList<Object>();
args.add(key);
@ -1318,13 +1322,13 @@ public class RedissonConnection extends AbstractRedisConnection {
List<Object> params = new ArrayList<Object>();
params.add(key);
if (range.getMin() != null) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String min = value(range.getMin(), "-");
params.add(min);
} else {
params.add("-");
}
if (range.getMax() != null) {
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String max = value(range.getMax(), "+");
params.add(max);
} else {
params.add("+");
@ -1334,8 +1338,8 @@ public class RedissonConnection extends AbstractRedisConnection {
@Override
public Set<byte[]> zRangeByLex(byte[] key, Range range, Limit limit) {
String min = value(range.getMin().getValue(), range.getMin().isIncluding(), "-");
String max = value(range.getMax().getValue(), range.getMax().isIncluding(), "+");
String min = value(range.getMin(), "-");
String max = value(range.getMax(), "+");
List<Object> args = new ArrayList<Object>();
args.add(key);

@ -14,8 +14,22 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.core.types.Expiration;
import java.util.Set;
public class RedissonConnectionTest extends BaseConnectionTest {
@Test
public void testRangeByLex() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(new RedissonConnectionFactory(redisson));
redisTemplate.afterPropertiesSet();
RedisZSetCommands.Range range = new RedisZSetCommands.Range();
range.lt("c");
Set<String> zSetValue = redisTemplate.opsForZSet().rangeByLex("val", range);
assertThat(zSetValue).isEmpty();
}
@Test
public void testGeo() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();

Loading…
Cancel
Save