diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index f7fef38..f3a1e98 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -1,5 +1,7 @@ package redis.clients.jedis; +import static redis.clients.jedis.Protocol.toByteArray; + import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; @@ -507,8 +509,8 @@ public class Client extends BinaryClient implements Commands { timeout); } - public void setbit(final String key, final long offset, final String value) { - setbit(SafeEncoder.encode(key), offset, SafeEncoder.encode(value)); + public void setbit(final String key, final long offset, final boolean value) { + setbit(SafeEncoder.encode(key), offset, toByteArray(value ? 0 : 1)); } public void getbit(String key, long offset) { diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index d57b443..71970fd 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2600,9 +2600,9 @@ public class Jedis extends BinaryJedis implements JedisCommands { * @param value * @return */ - public Long setbit(String key, long offset, String value) { + public boolean setbit(String key, long offset, boolean value) { client.setbit(key, offset, value); - return client.getIntegerReply(); + return client.getIntegerReply() == 1; } /** @@ -2612,8 +2612,8 @@ public class Jedis extends BinaryJedis implements JedisCommands { * @param offset * @return */ - public Long getbit(String key, long offset) { + public boolean getbit(String key, long offset) { client.getbit(key, offset); - return client.getIntegerReply(); + return client.getIntegerReply() == 1; } } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Transaction.java b/src/main/java/redis/clients/jedis/Transaction.java index d792d8e..60185f4 100644 --- a/src/main/java/redis/clients/jedis/Transaction.java +++ b/src/main/java/redis/clients/jedis/Transaction.java @@ -403,14 +403,14 @@ public class Transaction extends BinaryTransaction { return client.getStatusCodeReply(); } - public String setbit(String key, long offset, String value) { + public String setbit(String key, long offset, boolean value) { client.setbit(key, offset, value); return client.getStatusCodeReply(); } - public String getbit(String key, long offset) { + public boolean getbit(String key, long offset) { client.getbit(key, offset); - return client.getStatusCodeReply(); + return client.getStatusCodeReply() == "1"; } public String linsert(final String key, final LIST_POSITION where, diff --git a/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java index 3f1f452..d8f96ce 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java @@ -5,11 +5,11 @@ import org.junit.Test; public class BitCommandsTest extends JedisCommandTestBase { @Test public void setAndgetbit() { - long bit = jedis.setbit("foo", 0, "1"); - assertEquals(0, bit); + boolean bit = jedis.setbit("foo", 0, true); + assertEquals(false, bit); bit = jedis.getbit("foo", 0); - assertEquals(1, bit); + assertEquals(false, bit); long bbit = jedis.setbit("bfoo".getBytes(), 0, "1".getBytes()); assertEquals(0, bbit);