Skip to content

Commit 3a48633

Browse files
authored
Use IllegalStateException to replace invalid JedisDataException (#2393)
* Introduce JedisBatchOperationException - Pipeline and Transaction related exceptions, which do not come from Redis, are changed to throw JedisBatchOperationException. - SafeEncoder is changed to throw JedisException. Based on discussions in #1183 * Update JedisTest.java * Update JedisTest.java * Update JedisWithCompleteCredentialsTest.java * backward compatibility with JedisBatchOperationException * address review * remove deprecation * Use IllegalStateException to replace invalid JedisDataException * remove unused import * Use IllegalArgumentException * Renaming test methods Co-authored-by: M Sazzadul Hoque <7600764+sazzad16@users.noreply.github.com>
1 parent c98817b commit 3a48633

File tree

9 files changed

+28
-34
lines changed

9 files changed

+28
-34
lines changed

src/main/java/redis/clients/jedis/BinaryJedis.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import redis.clients.jedis.commands.MultiKeyBinaryCommands;
3030
import redis.clients.jedis.commands.ProtocolCommand;
3131
import redis.clients.jedis.exceptions.InvalidURIException;
32-
import redis.clients.jedis.exceptions.JedisDataException;
3332
import redis.clients.jedis.exceptions.JedisException;
3433
import redis.clients.jedis.params.*;
3534
import redis.clients.jedis.resps.*;
@@ -2294,11 +2293,11 @@ public Transaction multi() {
22942293

22952294
protected void checkIsInMultiOrPipeline() {
22962295
if (client.isInMulti()) {
2297-
throw new JedisDataException(
2296+
throw new IllegalStateException(
22982297
"Cannot use Jedis when in Multi. Please use Transaction or reset jedis state.");
22992298
} else if (pipeline != null && pipeline.hasPipelinedResponse()) {
2300-
throw new JedisDataException(
2301-
"Cannot use Jedis when in Pipeline. Please use Pipeline or reset jedis state .");
2299+
throw new IllegalStateException(
2300+
"Cannot use Jedis when in Pipeline. Please use Pipeline or reset jedis state.");
23022301
}
23032302
}
23042303

src/main/java/redis/clients/jedis/Pipeline.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public List<Object> build(Object data) {
2020
List<Object> values = new ArrayList<>();
2121

2222
if (list.size() != responses.size()) {
23-
throw new JedisDataException("Expected data size " + responses.size() + " but was "
24-
+ list.size());
23+
throw new IllegalStateException(
24+
"Expected data size " + responses.size() + " but was " + list.size());
2525
}
2626

2727
for (int i = 0; i < list.size(); i++) {
@@ -126,14 +126,14 @@ public List<Object> syncAndReturnAll() {
126126
}
127127

128128
public Response<String> discard() {
129-
if (currentMulti == null) throw new JedisDataException("DISCARD without MULTI");
129+
if (currentMulti == null) throw new IllegalStateException("DISCARD without MULTI");
130130
client.discard();
131131
currentMulti = null;
132132
return getResponse(BuilderFactory.STRING);
133133
}
134134

135135
public Response<List<Object>> exec() {
136-
if (currentMulti == null) throw new JedisDataException("EXEC without MULTI");
136+
if (currentMulti == null) throw new IllegalStateException("EXEC without MULTI");
137137

138138
client.exec();
139139
Response<List<Object>> response = super.getResponse(currentMulti);
@@ -143,11 +143,10 @@ public Response<List<Object>> exec() {
143143
}
144144

145145
public Response<String> multi() {
146-
if (currentMulti != null) throw new JedisDataException("MULTI calls can not be nested");
146+
if (currentMulti != null) throw new IllegalStateException("MULTI calls can not be nested");
147147

148148
client.multi();
149-
Response<String> response = getResponse(BuilderFactory.STRING); // Expecting
150-
// OK
149+
Response<String> response = getResponse(BuilderFactory.STRING); // Expecting OK
151150
currentMulti = new MultiResponseBuilder();
152151
return response;
153152
}

src/main/java/redis/clients/jedis/Response.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ public void set(Object data) {
2424
}
2525

2626
public T get() {
27-
// if response has dependency response and dependency is not built,
28-
// build it first and no more!!
27+
// if response has dependency response and dependency is not built, build it first and no more!!
2928
if (dependency != null && dependency.set && !dependency.built) {
3029
dependency.build();
3130
}
3231
if (!set) {
33-
throw new JedisDataException(
32+
throw new IllegalStateException(
3433
"Please close pipeline or multi block before calling this method.");
3534
}
3635
if (!built) {

src/main/java/redis/clients/jedis/util/SafeEncoder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import java.util.List;
66

77
import redis.clients.jedis.Protocol;
8-
import redis.clients.jedis.exceptions.JedisDataException;
98
import redis.clients.jedis.exceptions.JedisException;
109

1110
/**
@@ -28,7 +27,7 @@ public static byte[][] encodeMany(final String... strs) {
2827
public static byte[] encode(final String str) {
2928
try {
3029
if (str == null) {
31-
throw new JedisDataException("value sent to redis cannot be null");
30+
throw new IllegalArgumentException("null value cannot be sent to redis");
3231
}
3332
return str.getBytes(Protocol.CHARSET);
3433
} catch (UnsupportedEncodingException e) {

src/test/java/redis/clients/jedis/tests/JedisTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import redis.clients.jedis.Protocol;
2626
import redis.clients.jedis.exceptions.InvalidURIException;
2727
import redis.clients.jedis.exceptions.JedisConnectionException;
28-
import redis.clients.jedis.exceptions.JedisDataException;
2928
import redis.clients.jedis.exceptions.JedisException;
3029
import redis.clients.jedis.tests.commands.JedisCommandTestBase;
3130
import redis.clients.jedis.util.SafeEncoder;
@@ -128,7 +127,7 @@ public void infiniteTimeout() throws Exception {
128127
}
129128
}
130129

131-
@Test(expected = JedisDataException.class)
130+
@Test(expected = IllegalArgumentException.class)
132131
public void failWhenSendingNullValues() {
133132
jedis.set("foo", null);
134133
}
@@ -248,4 +247,4 @@ public void checkDisconnectOnQuit() {
248247
assertFalse(jedis.isConnected());
249248
}
250249

251-
}
250+
}

src/test/java/redis/clients/jedis/tests/JedisWithCompleteCredentialsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,4 @@ public void allowUrlWithNoDBAndNoPassword() {
142142
}
143143
}
144144

145-
}
145+
}

src/test/java/redis/clients/jedis/tests/PipeliningTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public void pipelineResponseWithoutData() {
183183
assertNull(score.get());
184184
}
185185

186-
@Test(expected = JedisDataException.class)
186+
@Test(expected = IllegalStateException.class)
187187
public void pipelineResponseWithinPipeline() {
188188
jedis.set("string", "foo");
189189

@@ -351,28 +351,28 @@ public void multiUnwatch() {
351351
assertEquals(expect, pipe.syncAndReturnAll());
352352
}
353353

354-
@Test(expected = JedisDataException.class)
355-
public void pipelineExecShoudThrowJedisDataExceptionWhenNotInMulti() {
354+
@Test(expected = IllegalStateException.class)
355+
public void pipelineExecWhenNotInMulti() {
356356
Pipeline pipeline = jedis.pipelined();
357357
pipeline.exec();
358358
}
359359

360-
@Test(expected = JedisDataException.class)
361-
public void pipelineDiscardShoudThrowJedisDataExceptionWhenNotInMulti() {
360+
@Test(expected = IllegalStateException.class)
361+
public void pipelineDiscardWhenNotInMulti() {
362362
Pipeline pipeline = jedis.pipelined();
363363
pipeline.discard();
364364
}
365365

366-
@Test(expected = JedisDataException.class)
367-
public void pipelineMultiShoudThrowJedisDataExceptionWhenAlreadyInMulti() {
366+
@Test(expected = IllegalStateException.class)
367+
public void pipelineMultiWhenAlreadyInMulti() {
368368
Pipeline pipeline = jedis.pipelined();
369369
pipeline.multi();
370370
pipeline.set("foo", "3");
371371
pipeline.multi();
372372
}
373373

374-
@Test(expected = JedisDataException.class)
375-
public void testJedisThowExceptionWhenInPipeline() {
374+
@Test(expected = IllegalStateException.class)
375+
public void testJedisThrowExceptionWhenInPipeline() {
376376
Pipeline pipeline = jedis.pipelined();
377377
pipeline.set("foo", "3");
378378
jedis.get("somekey");
@@ -680,7 +680,7 @@ public void testCloseableWithMulti() throws IOException {
680680
try {
681681
pipeline.exec();
682682
fail("close should discard transaction");
683-
} catch (JedisDataException e) {
683+
} catch (IllegalStateException e) {
684684
assertTrue(e.getMessage().contains("EXEC without MULTI"));
685685
// pass
686686
}

src/test/java/redis/clients/jedis/tests/ShardedJedisPipelineTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import redis.clients.jedis.ShardedJedis;
2424
import redis.clients.jedis.ShardedJedisPipeline;
2525
import redis.clients.jedis.Tuple;
26-
import redis.clients.jedis.exceptions.JedisDataException;
2726

2827
public class ShardedJedisPipelineTest {
2928

@@ -109,7 +108,7 @@ public void pipelineResponse() {
109108
assertEquals(1, zrangeWithScores.get().size());
110109
}
111110

112-
@Test(expected = JedisDataException.class)
111+
@Test(expected = IllegalStateException.class)
113112
public void pipelineResponseWithinPipeline() {
114113
jedis.set("string", "foo");
115114

src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public void unwatch() {
156156
assertEquals("OK", resp.get(0));
157157
}
158158

159-
@Test(expected = JedisDataException.class)
159+
@Test(expected = IllegalStateException.class)
160160
public void validateWhenInMulti() {
161161
jedis.multi();
162162
jedis.ping();
@@ -215,7 +215,7 @@ public void transactionResponseBinary() {
215215
assertArrayEquals("foo".getBytes(), set.get());
216216
}
217217

218-
@Test(expected = JedisDataException.class)
218+
@Test(expected = IllegalStateException.class)
219219
public void transactionResponseWithinPipeline() {
220220
jedis.set("string", "foo");
221221

0 commit comments

Comments
 (0)