From 0d6d37b95f503b69a703e076ff2480151a6df388 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Wed, 11 May 2011 19:22:31 -0300 Subject: [PATCH] throw JedisDataException when sending NULL values to redis as it is not a valid value in the protocol --- src/main/java/redis/clients/util/SafeEncoder.java | 5 +++++ src/test/java/redis/clients/jedis/tests/JedisTest.java | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/main/java/redis/clients/util/SafeEncoder.java b/src/main/java/redis/clients/util/SafeEncoder.java index c657756..8e88c40 100644 --- a/src/main/java/redis/clients/util/SafeEncoder.java +++ b/src/main/java/redis/clients/util/SafeEncoder.java @@ -3,6 +3,7 @@ package redis.clients.util; import java.io.UnsupportedEncodingException; import redis.clients.jedis.Protocol; +import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.exceptions.JedisException; /** @@ -12,6 +13,10 @@ import redis.clients.jedis.exceptions.JedisException; public class SafeEncoder { public static byte[] encode(final String str) { try { + if (str == null) { + throw new JedisDataException( + "value sent to redis cannot be null"); + } return str.getBytes(Protocol.CHARSET); } catch (UnsupportedEncodingException e) { throw new JedisException(e); diff --git a/src/test/java/redis/clients/jedis/tests/JedisTest.java b/src/test/java/redis/clients/jedis/tests/JedisTest.java index d1272d2..a34ef3d 100644 --- a/src/test/java/redis/clients/jedis/tests/JedisTest.java +++ b/src/test/java/redis/clients/jedis/tests/JedisTest.java @@ -9,6 +9,7 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.Protocol; import redis.clients.jedis.exceptions.JedisConnectionException; +import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.tests.commands.JedisCommandTestBase; import redis.clients.util.SafeEncoder; @@ -53,4 +54,9 @@ public class JedisTest extends JedisCommandTestBase { Thread.sleep(20000); jedis.hmget("foobar", "foo"); } + + @Test(expected = JedisDataException.class) + public void failWhenSendingNullValues() { + jedis.set("foo", null); + } } \ No newline at end of file