From 3d1546131a961e1cdbe34865a6aa9c2f481b88f9 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Wed, 15 Sep 2010 17:17:24 -0300 Subject: [PATCH] Implemented linsert --- src/main/java/redis/clients/jedis/Client.java | 9 ++++++++ src/main/java/redis/clients/jedis/Jedis.java | 7 ++++++ .../redis/clients/jedis/ShardedJedis.java | 8 +++++++ .../tests/commands/ListCommandsTest.java | 23 +++++++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 58a08f8..d7c8ef4 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -5,6 +5,10 @@ import java.util.List; import java.util.Map; public class Client extends Connection { + public enum LIST_POSITION { + BEFORE, AFTER + } + private boolean isInMulti; public boolean isInMulti() { @@ -587,4 +591,9 @@ public class Client extends Connection { public void echo(String string) { sendCommand("ECHO", string); } + + public void linsert(String key, LIST_POSITION where, String pivot, + String value) { + sendCommand("LINSERT", key, where.toString(), pivot, value); + } } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 36473ec..3bd097d 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import redis.clients.jedis.Client.LIST_POSITION; import redis.clients.util.ShardInfo; public class Jedis { @@ -831,4 +832,10 @@ public class Jedis { client.echo(string); return client.getBulkReply(); } + + public Integer linsert(String key, LIST_POSITION where, String pivot, + String value) { + client.linsert(key, where, pivot, value); + return client.getIntegerReply(); + } } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index 2253ac5..c2274f6 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import redis.clients.jedis.Client.LIST_POSITION; import redis.clients.util.Hashing; import redis.clients.util.ShardInfo; import redis.clients.util.Sharded; @@ -354,4 +355,11 @@ public class ShardedJedis extends Sharded { protected Jedis create(ShardInfo shard) { return new Jedis(shard); } + + public Integer linsert(String key, LIST_POSITION where, String pivot, + String value) { + Jedis j = getShard(key); + return j.linsert(key, where, pivot, value); + } + } \ No newline at end of file diff --git a/src/test/java/redis/clients/jedis/tests/commands/ListCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ListCommandsTest.java index 44b2285..b861a59 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ListCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ListCommandsTest.java @@ -5,6 +5,7 @@ import java.util.List; import org.junit.Test; +import redis.clients.jedis.Client; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisException; @@ -270,4 +271,26 @@ public class ListCommandsTest extends JedisCommandTestBase { status = jedis.rpushx("foo", "b"); assertEquals(2, status); } + + @Test + public void linsert() { + int status = jedis.linsert("foo", Client.LIST_POSITION.BEFORE, "bar", + "car"); + assertEquals(0, status); + + jedis.lpush("foo", "a"); + status = jedis.linsert("foo", Client.LIST_POSITION.AFTER, "a", "b"); + assertEquals(2, status); + + List actual = jedis.lrange("foo", 0, 100); + List expected = new ArrayList(); + expected.add("a"); + expected.add("b"); + + assertEquals(expected, actual); + + status = jedis + .linsert("foo", Client.LIST_POSITION.BEFORE, "bar", "car"); + assertEquals(-1, status); + } } \ No newline at end of file