throw a JedisConnectionException if unsubscribing from a not subscribed JedisPubSub instance
This commit is contained in:
@@ -10,6 +10,7 @@ import static redis.clients.jedis.Protocol.Keyword.UNSUBSCRIBE;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import redis.clients.jedis.exceptions.JedisConnectionException;
|
||||
import redis.clients.jedis.exceptions.JedisException;
|
||||
import redis.clients.util.SafeEncoder;
|
||||
|
||||
@@ -31,6 +32,10 @@ public abstract class JedisPubSub {
|
||||
public abstract void onPSubscribe(String pattern, int subscribedChannels);
|
||||
|
||||
public void unsubscribe() {
|
||||
if (client == null) {
|
||||
throw new JedisConnectionException(
|
||||
"JedisPubSub was not subscribed to a Jedis instance.");
|
||||
}
|
||||
client.unsubscribe();
|
||||
client.flush();
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.junit.Test;
|
||||
import redis.clients.jedis.BinaryJedisPubSub;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPubSub;
|
||||
import redis.clients.jedis.exceptions.JedisConnectionException;
|
||||
import redis.clients.jedis.exceptions.JedisDataException;
|
||||
import redis.clients.util.SafeEncoder;
|
||||
|
||||
@@ -501,4 +502,29 @@ public class PublishSubscribeCommandsTest extends JedisCommandTestBase {
|
||||
// this is OK because we are not sending AUTH command
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected = JedisConnectionException.class)
|
||||
public void unsubscribeWhenNotSusbscribed() throws InterruptedException {
|
||||
JedisPubSub pubsub = 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) {
|
||||
}
|
||||
};
|
||||
pubsub.unsubscribe();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user