diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceStreamCommands.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceStreamCommands.java index 3290712ff..de9c27ed4 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceStreamCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceStreamCommands.java @@ -47,6 +47,7 @@ import org.springframework.util.Assert; /** * @author Mark Paluch * @author Tugdual Grall + * @author Dejan Jankov * @since 2.2 */ class LettuceStreamCommands implements RedisStreamCommands { @@ -632,7 +633,7 @@ class LettuceStreamCommands implements RedisStreamCommands { Assert.notNull(range, "Range must not be null!"); Assert.notNull(limit, "Limit must not be null!"); - io.lettuce.core.Range lettuceRange = RangeConverter.toRange(range); + io.lettuce.core.Range lettuceRange = RangeConverter.toRange(range, Function.identity()); io.lettuce.core.Limit lettuceLimit = LettuceConverters.toLimit(limit); try { if (isPipelined()) { diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index a5eb7fc82..d74b53b2b 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -99,6 +99,7 @@ import org.springframework.test.annotation.ProfileValueSourceConfiguration; * @author Thomas Darimont * @author Mark Paluch * @author Tugdual Grall + * @author Dejan Jankov */ @ProfileValueSourceConfiguration(RedisTestProfileValueSource.class) public abstract class AbstractConnectionIntegrationTests { @@ -3125,6 +3126,28 @@ public abstract class AbstractConnectionIntegrationTests { assertThat(messages.get(1).getValue()).isEqualTo(Collections.singletonMap(KEY_2, VALUE_2)); } + @Test // DATAREDIS-1207 + @IfProfileValue(name = "redisVersion", value = "5.0") + @WithRedisDriver({ RedisDriver.LETTUCE }) + public void xRevRangeShouldWorkWithBoundedRange() { + + actual.add(connection.xAdd(KEY_1, Collections.singletonMap(KEY_2, VALUE_2))); + actual.add(connection.xAdd(KEY_1, Collections.singletonMap(KEY_3, VALUE_3))); + actual.add(connection.xRevRange(KEY_1, org.springframework.data.domain.Range.closed("0-0", "+"))); + + List results = getResults(); + assertThat(results).hasSize(3); + + List> messages = (List) results.get(2); + assertThat(messages).hasSize(2); + + assertThat(messages.get(0).getStream()).isEqualTo(KEY_1); + assertThat(messages.get(0).getValue()).isEqualTo(Collections.singletonMap(KEY_3, VALUE_3)); + + assertThat(messages.get(1).getStream()).isEqualTo(KEY_1); + assertThat(messages.get(1).getValue()).isEqualTo(Collections.singletonMap(KEY_2, VALUE_2)); + } + @Test // DATAREDIS-1084 @IfProfileValue(name = "redisVersion", value = "5.0") @WithRedisDriver({ RedisDriver.LETTUCE })