diff --git a/CHANGELOG.md b/CHANGELOG.md index 951db65fda..d794567e5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ * Node: Fix `zrangeWithScores` (disallow `RangeByLex` as it is not supported) ([#2926](https://github.com/valkey-io/valkey-glide/pull/2926)) * Core: improve fix in #2381 ([#2929](https://github.com/valkey-io/valkey-glide/pull/2929)) +* Java: Fix `lpopCount` null handling ([#3025](https://github.com/valkey-io/valkey-glide/pull/3025)) #### Operational Enhancements diff --git a/java/client/src/main/java/glide/api/BaseClient.java b/java/client/src/main/java/glide/api/BaseClient.java index 6039f84e8a..45e16d0107 100644 --- a/java/client/src/main/java/glide/api/BaseClient.java +++ b/java/client/src/main/java/glide/api/BaseClient.java @@ -1384,7 +1384,7 @@ public CompletableFuture lpopCount(@NonNull String key, long count) { return commandManager.submitNewCommand( LPop, new String[] {key, Long.toString(count)}, - response -> castArray(handleArrayResponse(response), String.class)); + response -> castArray(handleArrayOrNullResponse(response), String.class)); } @Override @@ -1392,7 +1392,7 @@ public CompletableFuture lpopCount(@NonNull GlideString key, long return commandManager.submitNewCommand( LPop, new GlideString[] {key, gs(Long.toString(count))}, - response -> castArray(handleArrayResponseBinary(response), GlideString.class)); + response -> castArray(handleArrayOrNullResponseBinary(response), GlideString.class)); } @Override diff --git a/java/integTest/src/test/java/glide/SharedCommandTests.java b/java/integTest/src/test/java/glide/SharedCommandTests.java index e58e3b5180..341ee307b3 100644 --- a/java/integTest/src/test/java/glide/SharedCommandTests.java +++ b/java/integTest/src/test/java/glide/SharedCommandTests.java @@ -1695,6 +1695,7 @@ public void lpush_lpop_lrange_existing_non_existing_key(BaseClient client) { assertArrayEquals(new String[] {"value2", "value3"}, client.lpopCount(key, 2).get()); assertArrayEquals(new String[] {}, client.lrange("non_existing_key", 0, -1).get()); assertNull(client.lpop("non_existing_key").get()); + assertNull(client.lpopCount("non_existing_key", 2).get()); } @SneakyThrows @@ -1714,6 +1715,7 @@ public void lpush_lpop_lrange_binary_existing_non_existing_key(BaseClient client new GlideString[] {gs("value2"), gs("value3")}, client.lpopCount(key, 2).get()); assertArrayEquals(new GlideString[] {}, client.lrange(gs("non_existing_key"), 0, -1).get()); assertNull(client.lpop(gs("non_existing_key")).get()); + assertNull(client.lpopCount(gs("non_existing_key"), 2).get()); } @SneakyThrows diff --git a/java/integTest/src/test/java/glide/standalone/StandaloneClientTests.java b/java/integTest/src/test/java/glide/standalone/StandaloneClientTests.java index 64d1faeed3..7a59533931 100644 --- a/java/integTest/src/test/java/glide/standalone/StandaloneClientTests.java +++ b/java/integTest/src/test/java/glide/standalone/StandaloneClientTests.java @@ -23,8 +23,6 @@ import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; @Timeout(10) // seconds public class StandaloneClientTests {