Skip to content

Commit 1866415

Browse files
christophstroblmp911de
authored andcommitted
DATAREDIS-1214 - Fix null return value of GEODIST command.
Original pull request: #565.
1 parent f0d3307 commit 1866415

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ public Distance geoDist(byte[] key, byte[] member1, byte[] member2) {
162162
return null;
163163
}
164164

165-
return distanceConverter.convert(connection.getJedis().geodist(key, member1, member2));
165+
Double distance = connection.getJedis().geodist(key, member1, member2);
166+
return distance != null ? distanceConverter.convert(distance) : null;
166167
} catch (Exception ex) {
167168
throw convertJedisAccessException(ex);
168169
}
@@ -195,7 +196,8 @@ public Distance geoDist(byte[] key, byte[] member1, byte[] member2, Metric metri
195196
return null;
196197
}
197198

198-
return distanceConverter.convert(connection.getJedis().geodist(key, member1, member2, geoUnit));
199+
Double distance = connection.getJedis().geodist(key, member1, member2, geoUnit);
200+
return distance != null ? distanceConverter.convert(distance) : null;
199201
} catch (Exception ex) {
200202
throw convertJedisAccessException(ex);
201203
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ public Distance geoDist(byte[] key, byte[] member1, byte[] member2, Metric metri
175175
distanceConverter));
176176
return null;
177177
}
178-
return distanceConverter.convert(getConnection().geodist(key, member1, member2, geoUnit));
178+
179+
Double distance = getConnection().geodist(key, member1, member2, geoUnit);
180+
return distance != null ? distanceConverter.convert(distance) : null;
179181
} catch (Exception ex) {
180182
throw convertLettuceAccessException(ex);
181183
}

src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2638,6 +2638,19 @@ public void geoDist() {
26382638
assertThat(((Distance) result.get(1)).getUnit()).isEqualTo("m");
26392639
}
26402640

2641+
@Test // DATAREDIS-1214
2642+
@IfProfileValue(name = "redisVersion", value = "3.2+")
2643+
@WithRedisDriver({ RedisDriver.JEDIS, RedisDriver.LETTUCE })
2644+
public void geoDistNotExisting() {
2645+
2646+
String key = "geo-" + UUID.randomUUID();
2647+
actual.add(connection.geoAdd(key, Arrays.asList(PALERMO, CATANIA)));
2648+
actual.add(connection.geoDist(key, "Spring", "Data"));
2649+
2650+
List<Object> result = getResults();
2651+
assertThat(result.get(1)).isNull();
2652+
}
2653+
26412654
@Test // DATAREDIS-438
26422655
@IfProfileValue(name = "redisVersion", value = "3.2+")
26432656
@WithRedisDriver({ RedisDriver.JEDIS, RedisDriver.LETTUCE })

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,22 @@ public void geoDistShouldReturnDistanceInFeeCorrectly() {
186186
assertThat(dist.getUnit()).isEqualTo("ft");
187187
}
188188

189+
@Test // DATAREDIS-1214
190+
public void geoDistShouldReturnNullIfNoDistanceCalculable() {
191+
192+
K key = keyFactory.instance();
193+
M member1 = valueFactory.instance();
194+
M member2 = valueFactory.instance();
195+
M member3 = valueFactory.instance();
196+
M member4 = valueFactory.instance();
197+
198+
geoOperations.add(key, POINT_PALERMO, member1);
199+
geoOperations.add(key, POINT_CATANIA, member2);
200+
201+
Distance dist = geoOperations.distance(key, member3, member4, DistanceUnit.FEET);
202+
assertThat(dist).isNull();
203+
}
204+
189205
@Test // DATAREDIS-438, DATAREDIS-614
190206
public void testGeoHash() {
191207

0 commit comments

Comments
 (0)