Implement Closeable for Jedis, BinaryJedis etc.

This allows a Jedis object to participate in try-with-resources when
using Java 7+. This change is fully backwards compatible to Java 6 and
previous releases of the Jedis client.
This commit is contained in:
Henning Schmiedehausen
2014-02-07 13:39:41 -08:00
parent 51a4bf9a56
commit 7449619fca
3 changed files with 20 additions and 2 deletions

View File

@@ -948,6 +948,12 @@ public class BinaryClient extends Connection {
super.disconnect(); super.disconnect();
} }
@Override
public void close() {
db = 0;
super.close();
}
public void resetState() { public void resetState() {
if (isInMulti()) if (isInMulti())
discard(); discard();

View File

@@ -2,6 +2,7 @@ package redis.clients.jedis;
import static redis.clients.jedis.Protocol.toByteArray; import static redis.clients.jedis.Protocol.toByteArray;
import java.io.Closeable;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
@@ -19,7 +20,7 @@ import redis.clients.util.SafeEncoder;
public class BinaryJedis implements BasicCommands, BinaryJedisCommands, public class BinaryJedis implements BasicCommands, BinaryJedisCommands,
MultiKeyBinaryCommands, AdvancedBinaryJedisCommands, MultiKeyBinaryCommands, AdvancedBinaryJedisCommands,
BinaryScriptingCommands { BinaryScriptingCommands, Closeable {
protected Client client = null; protected Client client = null;
public BinaryJedis(final String host) { public BinaryJedis(final String host) {
@@ -1735,6 +1736,11 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands,
return client.getStatusCodeReply(); return client.getStatusCodeReply();
} }
@Override
public void close() {
client.close();
}
/** /**
* Sort a Set or a List. * Sort a Set or a List.
* <p> * <p>

View File

@@ -1,5 +1,6 @@
package redis.clients.jedis; package redis.clients.jedis;
import java.io.Closeable;
import java.io.IOException; import java.io.IOException;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.Socket; import java.net.Socket;
@@ -15,7 +16,7 @@ import redis.clients.util.RedisInputStream;
import redis.clients.util.RedisOutputStream; import redis.clients.util.RedisOutputStream;
import redis.clients.util.SafeEncoder; import redis.clients.util.SafeEncoder;
public class Connection { public class Connection implements Closeable {
private String host; private String host;
private int port = Protocol.DEFAULT_PORT; private int port = Protocol.DEFAULT_PORT;
private Socket socket; private Socket socket;
@@ -143,6 +144,11 @@ public class Connection {
} }
} }
@Override
public void close() {
disconnect();
}
public void disconnect() { public void disconnect() {
if (isConnected()) { if (isConnected()) {
try { try {