diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index de7aeec..20fd083 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -3037,9 +3037,9 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getBinaryBulkReply(); } - public List scriptExists(byte[]... sha1){ + public List scriptExists(byte[]... sha1){ client.scriptExists(sha1); - return client.getBinaryMultiBulkReply(); + return client.getIntegerMultiBulkReply(); } public byte[] scriptLoad(byte[] script){ diff --git a/src/main/java/redis/clients/jedis/Connection.java b/src/main/java/redis/clients/jedis/Connection.java index 67a7dd6..09e0453 100644 --- a/src/main/java/redis/clients/jedis/Connection.java +++ b/src/main/java/redis/clients/jedis/Connection.java @@ -205,6 +205,13 @@ public class Connection { pipelinedCommands--; return (List) protocol.read(inputStream); } + + @SuppressWarnings("unchecked") + public List getIntegerMultiBulkReply() { + flush(); + pipelinedCommands--; + return (List) protocol.read(inputStream); + } public List getAll() { return getAll(0); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 303cb26..78561a5 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2749,11 +2749,11 @@ public class Jedis extends BinaryJedis implements JedisCommands { public List scriptExists(String... sha1){ client.scriptExists(sha1); - List result = client.getObjectMultiBulkReply(); + List result = client.getIntegerMultiBulkReply(); List exists = new ArrayList(); - for(Object value : result) - exists.add(((Long)value) == 1); + for(Long value : result) + exists.add(value == 1); return exists; } diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java index 4270ec1..07b0059 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -7,6 +7,7 @@ import org.junit.Test; import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.exceptions.JedisException; +import redis.clients.util.SafeEncoder; public class ScriptingCommandsTest extends JedisCommandTestBase { @@ -92,6 +93,15 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { assertTrue(exists.get(1)); } + @SuppressWarnings("unchecked") + @Test + public void scriptExistsBinary() { + jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); + List exists = jedis.scriptExists(SafeEncoder.encode("ffffffffffffffffffffffffffffffffffffffff"),SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + assertEquals(new Long(0), exists.get(0)); + assertEquals(new Long(1), exists.get(1)); + } + @SuppressWarnings("unchecked") @Test public void scriptLoad() { @@ -99,6 +109,14 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { assertTrue(jedis.scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); } + @SuppressWarnings("unchecked") + @Test + public void scriptLoadBinary() { + jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); + List exists = jedis.scriptExists(SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + assertEquals(new Long(1), exists.get(0)); + } + @SuppressWarnings("unchecked") @Test public void scriptKill() {