diff --git a/Makefile b/Makefile index dcfae4a4f..88a99f4f5 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + REDIS_VERSION:=6.2.6 SPRING_PROFILE?=ci SHELL=/bin/bash -euo pipefail diff --git a/src/main/java/org/springframework/data/redis/core/AbstractOperations.java b/src/main/java/org/springframework/data/redis/core/AbstractOperations.java index 3a9f1f472..7bb7ed674 100644 --- a/src/main/java/org/springframework/data/redis/core/AbstractOperations.java +++ b/src/main/java/org/springframework/data/redis/core/AbstractOperations.java @@ -362,7 +362,8 @@ abstract class AbstractOperations { * @return converted or {@literal null}. * @since 1.8 */ - GeoResults> deserializeGeoResults(GeoResults> source) { + @Nullable + GeoResults> deserializeGeoResults(@Nullable GeoResults> source) { if (source == null) { return null; diff --git a/src/test/java/org/springframework/data/redis/core/DefaultGeoOperationsIntegrationTests.java b/src/test/java/org/springframework/data/redis/core/DefaultGeoOperationsIntegrationTests.java index 922fc1433..6604ebe36 100644 --- a/src/test/java/org/springframework/data/redis/core/DefaultGeoOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/core/DefaultGeoOperationsIntegrationTests.java @@ -25,8 +25,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.assertj.core.data.Offset; import org.junit.jupiter.api.BeforeEach; +import org.springframework.dao.DataAccessException; import org.springframework.data.geo.Circle; import org.springframework.data.geo.Distance; import org.springframework.data.geo.GeoResults; @@ -37,6 +39,7 @@ import org.springframework.data.redis.connection.RedisGeoCommands.GeoLocation; import org.springframework.data.redis.test.condition.EnabledOnCommand; import org.springframework.data.redis.test.extension.parametrized.MethodSource; import org.springframework.data.redis.test.extension.parametrized.ParameterizedRedisTest; +import org.springframework.lang.Nullable; /** * Integration test of {@link org.springframework.data.redis.core.DefaultGeoOperations} @@ -220,6 +223,28 @@ public class DefaultGeoOperationsIntegrationTests { assertThat(result.get(2)).isNull(); } + @ParameterizedRedisTest // GH-2279 + void geoRadius() { + + K key = keyFactory.instance(); + + geoOperations.add(key, POINT_PALERMO, valueFactory.instance()); + geoOperations.add(key, POINT_CATANIA, valueFactory.instance()); + + List result = redisTemplate.executePipelined(new SessionCallback() { + @Nullable + @Override + public GeoResults execute(RedisOperations operations) throws DataAccessException { + + return operations.opsForGeo().radius((K) key, new Circle(POINT_PALERMO, new Distance(1, KILOMETERS))); + } + }); + + GeoResults> results = (GeoResults>) result.get(0); + assertThat(results).hasSize(1); + assertThat(results.getContent().get(0).getDistance().getValue()).isCloseTo(0, Offset.offset(0.005)); + } + @ParameterizedRedisTest // DATAREDIS-438, DATAREDIS-614 void geoRadiusShouldReturnMembersCorrectly() {