From b4f69ba9746f8187eb870778b6ced201136604ce Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 23 Apr 2018 17:52:06 +0300 Subject: [PATCH] RLiveObjectService.delete throws NPE if entity doesn't exist. #1401 --- .../main/java/org/redisson/RedissonLiveObjectService.java | 8 ++++++-- .../main/java/org/redisson/api/RLiveObjectService.java | 6 ++++-- .../java/org/redisson/RedissonLiveObjectServiceTest.java | 5 +++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java b/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java index fd43b66ae..5c5bbab13 100644 --- a/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java +++ b/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java @@ -485,8 +485,12 @@ public class RedissonLiveObjectService implements RLiveObjectService { } @Override - public void delete(Class entityClass, K id) { - asLiveObject(get(entityClass, id)).delete(); + public boolean delete(Class entityClass, K id) { + T entity = get(entityClass, id); + if (entity == null) { + return false; + } + return asLiveObject(entity).delete(); } @Override diff --git a/redisson/src/main/java/org/redisson/api/RLiveObjectService.java b/redisson/src/main/java/org/redisson/api/RLiveObjectService.java index f5cae8c8c..cffaaf23f 100644 --- a/redisson/src/main/java/org/redisson/api/RLiveObjectService.java +++ b/redisson/src/main/java/org/redisson/api/RLiveObjectService.java @@ -120,9 +120,11 @@ public interface RLiveObjectService { * @param Key type * @param entityClass - object class * @param id - object id + * + * @return true if entity was deleted successfully, false otherwise */ - void delete(Class entityClass, K id); - + boolean delete(Class entityClass, K id); + /** * To cast the instance to RLiveObject instance. * diff --git a/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java b/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java index 560820f6e..682326814 100644 --- a/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java +++ b/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java @@ -1401,6 +1401,11 @@ public class RedissonLiveObjectServiceTest extends BaseTest { assertThat(redisson.getKeys().count()).isEqualTo(1); } + @Test + public void testDeleteNotExisted() { + RLiveObjectService service = redisson.getLiveObjectService(); + assertThat(service.delete(Customer.class, "id")).isFalse(); + } @Test public void testDelete() {