From 7150c5feb3e2fda9432a53904888f0dea21798bb Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Sun, 23 Jan 2011 23:58:01 -0300 Subject: [PATCH] pubsub command check if we are connected --- src/main/java/redis/clients/jedis/Jedis.java | 5 +++- .../PublishSubscribeCommandsTest.java | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 7ee1bce..d0b56e1 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2023,18 +2023,21 @@ public class Jedis extends BinaryJedis implements JedisCommands { } public void subscribe(JedisPubSub jedisPubSub, String... channels) { + runChecks(); client.setTimeoutInfinite(); jedisPubSub.proceed(client, channels); client.rollbackTimeout(); } public Long publish(String channel, String message) { + runChecks(); client.publish(channel, message); return client.getIntegerReply(); } public void psubscribe(JedisPubSub jedisPubSub, String... patterns) { - client.setTimeoutInfinite(); + runChecks(); + client.setTimeoutInfinite(); jedisPubSub.proceedWithPatterns(client, patterns); client.rollbackTimeout(); } diff --git a/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java index db30dfa..c84cf4e 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java @@ -6,6 +6,7 @@ import java.net.UnknownHostException; import org.junit.Test; import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisException; import redis.clients.jedis.JedisPubSub; public class PublishSubscribeCommandsTest extends JedisCommandTestBase { @@ -232,4 +233,30 @@ public class PublishSubscribeCommandsTest extends JedisCommandTestBase { jedis.subscribe(pubsub, "foo"); t.join(); } + + @Test + public void subscribeWithoutConnecting() { + try { + Jedis jedis = new Jedis(hnp.host, hnp.port); + jedis.subscribe(new JedisPubSub() { + public void onMessage(String channel, String message) { + } + public void onPMessage(String pattern, String channel, + String message) { + } + public void onSubscribe(String channel, int subscribedChannels) { + } + public void onUnsubscribe(String channel, int subscribedChannels) { + } + public void onPUnsubscribe(String pattern, int subscribedChannels) { + } + public void onPSubscribe(String pattern, int subscribedChannels) { + } + }, "foo"); + } catch(NullPointerException ex) { + fail(); + } catch(JedisException ex) { + // this is OK because we are not sending AUTH command + } + } } \ No newline at end of file