diff --git a/src/main/java/redis/clients/jedis/Connection.java b/src/main/java/redis/clients/jedis/Connection.java index 09e0453..7aadc7f 100644 --- a/src/main/java/redis/clients/jedis/Connection.java +++ b/src/main/java/redis/clients/jedis/Connection.java @@ -19,7 +19,6 @@ public class Connection { private String host; private int port = Protocol.DEFAULT_PORT; private Socket socket; - private Protocol protocol = new Protocol(); private RedisOutputStream outputStream; private RedisInputStream inputStream; private int pipelinedCommands = 0; @@ -78,14 +77,14 @@ public class Connection { protected Connection sendCommand(final Command cmd, final byte[]... args) { connect(); - protocol.sendCommand(outputStream, cmd, args); + Protocol.sendCommand(outputStream, cmd, args); pipelinedCommands++; return this; } protected Connection sendCommand(final Command cmd) { connect(); - protocol.sendCommand(outputStream, cmd, new byte[0][]); + Protocol.sendCommand(outputStream, cmd, new byte[0][]); pipelinedCommands++; return this; } @@ -125,7 +124,7 @@ public class Connection { socket.setTcpNoDelay(true); //Socket buffer Whetherclosed, to ensure timely delivery of data socket.setSoLinger(true,0); //Control calls close () method, the underlying socket is closed immediately //<-@wjw_add - + socket.connect(new InetSocketAddress(host, port), timeout); socket.setSoTimeout(timeout); outputStream = new RedisOutputStream(socket.getOutputStream()); @@ -159,7 +158,7 @@ public class Connection { protected String getStatusCodeReply() { flush(); pipelinedCommands--; - final byte[] resp = (byte[]) protocol.read(inputStream); + final byte[] resp = (byte[]) Protocol.read(inputStream); if (null == resp) { return null; } else { @@ -179,13 +178,13 @@ public class Connection { public byte[] getBinaryBulkReply() { flush(); pipelinedCommands--; - return (byte[]) protocol.read(inputStream); + return (byte[]) Protocol.read(inputStream); } public Long getIntegerReply() { flush(); pipelinedCommands--; - return (Long) protocol.read(inputStream); + return (Long) Protocol.read(inputStream); } public List getMultiBulkReply() { @@ -196,14 +195,14 @@ public class Connection { public List getBinaryMultiBulkReply() { flush(); pipelinedCommands--; - return (List) protocol.read(inputStream); + return (List) Protocol.read(inputStream); } @SuppressWarnings("unchecked") public List getObjectMultiBulkReply() { flush(); pipelinedCommands--; - return (List) protocol.read(inputStream); + return (List) Protocol.read(inputStream); } @SuppressWarnings("unchecked") @@ -222,7 +221,7 @@ public class Connection { flush(); while (pipelinedCommands > except) { try{ - all.add(protocol.read(inputStream)); + all.add(Protocol.read(inputStream)); }catch(JedisDataException e){ all.add(e); } @@ -234,6 +233,6 @@ public class Connection { public Object getOne() { flush(); pipelinedCommands--; - return protocol.read(inputStream); + return Protocol.read(inputStream); } } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index 72756df..18fd623 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -24,12 +24,18 @@ public final class Protocol { public static final byte MINUS_BYTE = '-'; public static final byte COLON_BYTE = ':'; - public void sendCommand(final RedisOutputStream os, final Command command, + private Protocol() { + // this prevent the class from instantiation + } + + public static void sendCommand(final RedisOutputStream os, + final Command command, final byte[]... args) { sendCommand(os, command.raw, args); } - private void sendCommand(final RedisOutputStream os, final byte[] command, + private static void sendCommand(final RedisOutputStream os, + final byte[] command, final byte[]... args) { try { os.write(ASTERISK_BYTE); @@ -50,12 +56,12 @@ public final class Protocol { } } - private void processError(final RedisInputStream is) { + private static void processError(final RedisInputStream is) { String message = is.readLine(); throw new JedisDataException(message); } - private Object process(final RedisInputStream is) { + private static Object process(final RedisInputStream is) { try { byte b = is.readByte(); if (b == MINUS_BYTE) { @@ -77,11 +83,11 @@ public final class Protocol { return null; } - private byte[] processStatusCodeReply(final RedisInputStream is) { + private static byte[] processStatusCodeReply(final RedisInputStream is) { return SafeEncoder.encode(is.readLine()); } - private byte[] processBulkReply(final RedisInputStream is) { + private static byte[] processBulkReply(final RedisInputStream is) { int len = Integer.parseInt(is.readLine()); if (len == -1) { return null; @@ -102,12 +108,12 @@ public final class Protocol { return read; } - private Long processInteger(final RedisInputStream is) { + private static Long processInteger(final RedisInputStream is) { String num = is.readLine(); return Long.valueOf(num); } - private List processMultiBulkReply(final RedisInputStream is) { + private static List processMultiBulkReply(final RedisInputStream is) { int num = Integer.parseInt(is.readLine()); if (num == -1) { return null; @@ -123,7 +129,7 @@ public final class Protocol { return ret; } - public Object read(final RedisInputStream is) { + public static Object read(final RedisInputStream is) { return process(is); } diff --git a/src/test/java/redis/clients/jedis/tests/ProtocolTest.java b/src/test/java/redis/clients/jedis/tests/ProtocolTest.java index e0b9fb1..60b82aa 100644 --- a/src/test/java/redis/clients/jedis/tests/ProtocolTest.java +++ b/src/test/java/redis/clients/jedis/tests/ProtocolTest.java @@ -24,8 +24,7 @@ public class ProtocolTest extends JedisTestBase { PipedOutputStream pos = new PipedOutputStream(pis); RedisOutputStream ros = new RedisOutputStream(pos); - Protocol protocol = new Protocol(); - protocol.sendCommand(ros, Protocol.Command.GET, + Protocol.sendCommand(ros, Protocol.Command.GET, "SOMEKEY".getBytes(Protocol.CHARSET)); ros.flush(); pos.close(); @@ -43,8 +42,7 @@ public class ProtocolTest extends JedisTestBase { @Test public void bulkReply() { InputStream is = new ByteArrayInputStream("$6\r\nfoobar\r\n".getBytes()); - Protocol protocol = new Protocol(); - byte[] response = (byte[]) protocol.read(new RedisInputStream(is)); + byte[] response = (byte[]) Protocol.read(new RedisInputStream(is)); assertArrayEquals(SafeEncoder.encode("foobar"), response); } @@ -52,8 +50,7 @@ public class ProtocolTest extends JedisTestBase { public void fragmentedBulkReply() { FragmentedByteArrayInputStream fis = new FragmentedByteArrayInputStream( "$30\r\n012345678901234567890123456789\r\n".getBytes()); - Protocol protocol = new Protocol(); - byte[] response = (byte[]) protocol.read(new RedisInputStream(fis)); + byte[] response = (byte[]) Protocol.read(new RedisInputStream(fis)); assertArrayEquals(SafeEncoder.encode("012345678901234567890123456789"), response); } @@ -61,24 +58,21 @@ public class ProtocolTest extends JedisTestBase { @Test public void nullBulkReply() { InputStream is = new ByteArrayInputStream("$-1\r\n".getBytes()); - Protocol protocol = new Protocol(); - String response = (String) protocol.read(new RedisInputStream(is)); + String response = (String) Protocol.read(new RedisInputStream(is)); assertEquals(null, response); } @Test public void singleLineReply() { InputStream is = new ByteArrayInputStream("+OK\r\n".getBytes()); - Protocol protocol = new Protocol(); - byte[] response = (byte[]) protocol.read(new RedisInputStream(is)); + byte[] response = (byte[]) Protocol.read(new RedisInputStream(is)); assertArrayEquals(SafeEncoder.encode("OK"), response); } @Test public void integerReply() { InputStream is = new ByteArrayInputStream(":123\r\n".getBytes()); - Protocol protocol = new Protocol(); - long response = (Long) protocol.read(new RedisInputStream(is)); + long response = (Long) Protocol.read(new RedisInputStream(is)); assertEquals(123, response); } @@ -88,8 +82,7 @@ public class ProtocolTest extends JedisTestBase { InputStream is = new ByteArrayInputStream( "*4\r\n$3\r\nfoo\r\n$3\r\nbar\r\n$5\r\nHello\r\n$5\r\nWorld\r\n" .getBytes()); - Protocol protocol = new Protocol(); - List response = (List) protocol + List response = (List) Protocol .read(new RedisInputStream(is)); List expected = new ArrayList(); expected.add(SafeEncoder.encode("foo")); @@ -104,8 +97,7 @@ public class ProtocolTest extends JedisTestBase { @Test public void nullMultiBulkReply() { InputStream is = new ByteArrayInputStream("*-1\r\n".getBytes()); - Protocol protocol = new Protocol(); - List response = (List) protocol + List response = (List) Protocol .read(new RedisInputStream(is)); assertNull(response); }