From 379aabf084136b17b37684225c6123b406287ebb Mon Sep 17 00:00:00 2001 From: Simon Jacobs Date: Thu, 14 Sep 2017 14:57:37 -0400 Subject: [PATCH] Bugfix: accessor methods in Live Objects break if they start with 'is' --- .../liveobject/core/AccessorInterceptor.java | 4 +++- .../RedissonLiveObjectServiceTest.java | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java b/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java index 99011040a..1bbdd10a2 100644 --- a/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java +++ b/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java @@ -148,7 +148,9 @@ public class AccessorInterceptor { } private String getFieldName(Method method) { - return method.getName().substring(3, 4).toLowerCase() + method.getName().substring(4); + String name = method.getName(); + int i = name.startsWith("is") ? 3 : 4; + return name.substring(i - 1, i).toLowerCase() + name.substring(i); } private boolean isGetter(Method method, String fieldName) { diff --git a/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java b/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java index 331fb72be..ae64db5a1 100644 --- a/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java +++ b/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java @@ -1613,5 +1613,28 @@ public class RedissonLiveObjectServiceTest extends BaseTest { assertThat(so.getName()).isEqualTo("name"); } + @REntity + public static class HasIsAccessor { + @RId(generator = LongGenerator.class) + private Long id; + + boolean good; + + public boolean isGood() { + return good; + } + + public void setGood(boolean good) { + this.good = good; + } + } + + @Test + public void testIsAccessor() { + HasIsAccessor o = new HasIsAccessor(); + o.setGood(true); + o = redisson.getLiveObjectService().persist(o); + assertThat(o.isGood()).isEqualTo(true); + } }