diff --git a/src/test/java/org/redisson/RedissonMapTest.java b/src/test/java/org/redisson/RedissonMapTest.java index 906117496..3a81350df 100644 --- a/src/test/java/org/redisson/RedissonMapTest.java +++ b/src/test/java/org/redisson/RedissonMapTest.java @@ -1,5 +1,7 @@ package org.redisson; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.lambdaworks.redis.RedisException; import io.netty.util.concurrent.Future; import java.io.Serializable; @@ -12,6 +14,7 @@ import java.util.concurrent.ExecutionException; import org.junit.Assert; import org.junit.Test; +import org.redisson.codec.JsonJacksonCodec; import org.redisson.core.Predicate; import org.redisson.core.RMap; @@ -415,12 +418,12 @@ public class RedissonMapTest extends BaseTest { Future future = map.putAsync(2, 3); Assert.assertNull(future.get()); - Assert.assertEquals((Integer)3, map.get(2)); + Assert.assertEquals((Integer) 3, map.get(2)); Future future1 = map.putAsync(2, 4); - Assert.assertEquals((Integer)3, future1.get()); + Assert.assertEquals((Integer) 3, future1.get()); - Assert.assertEquals((Integer)4, map.get(2)); + Assert.assertEquals((Integer) 4, map.get(2)); } @Test @@ -430,10 +433,10 @@ public class RedissonMapTest extends BaseTest { map.put(3, 5); map.put(7, 8); - Assert.assertEquals((Integer)3, map.removeAsync(1).get()); - Assert.assertEquals((Integer)5, map.removeAsync(3).get()); + Assert.assertEquals((Integer) 3, map.removeAsync(1).get()); + Assert.assertEquals((Integer) 5, map.removeAsync(3).get()); Assert.assertNull(map.removeAsync(10).get()); - Assert.assertEquals((Integer)8, map.removeAsync(7).get()); + Assert.assertEquals((Integer) 8, map.removeAsync(7).get()); } @Test @@ -444,7 +447,7 @@ public class RedissonMapTest extends BaseTest { map.put(4, 6); map.put(7, 8); - Assert.assertEquals((Long)3L, map.fastRemoveAsync(1, 3, 7).get()); + Assert.assertEquals((Long) 3L, map.fastRemoveAsync(1, 3, 7).get()); Thread.sleep(1); Assert.assertEquals(1, map.size()); } @@ -456,4 +459,39 @@ public class RedissonMapTest extends BaseTest { Assert.assertEquals(0, map.fastRemove()); Assert.assertEquals(1, map.size()); } + + @Test(timeout = 5000) + public void testDeserializationErrorReturnsErrorImmediately() throws Exception { + redisson.getConfig().setCodec(new JsonJacksonCodec()); + + RMap map = redisson.getMap("deserializationFailure"); + SimpleObjectWithoutDefaultConstructor object = new SimpleObjectWithoutDefaultConstructor("test-val"); + + Assert.assertEquals("test-val", object.getTestField()); + map.put("test-key", object); + + try { + map.get("test-key"); + Assert.fail("Expected exception from map.get() call"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static class SimpleObjectWithoutDefaultConstructor { + + private String testField; + + SimpleObjectWithoutDefaultConstructor(String testField) { + this.testField = testField; + } + + public String getTestField() { + return testField; + } + + public void setTestField(String testField) { + this.testField = testField; + } + } }