From 1b5d350516ad85bacc3bcb8d39c894801d2a9ae7 Mon Sep 17 00:00:00 2001 From: Thibaud Giovannetti Date: Wed, 8 Mar 2017 22:18:38 +0100 Subject: [PATCH] Fix realm transactions with close --- .../store2store/dao/impl/RealmDao.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/store2store/src/main/java/com/playmoweb/store2store/dao/impl/RealmDao.java b/store2store/src/main/java/com/playmoweb/store2store/dao/impl/RealmDao.java index 9141cfa..2eab080 100644 --- a/store2store/src/main/java/com/playmoweb/store2store/dao/impl/RealmDao.java +++ b/store2store/src/main/java/com/playmoweb/store2store/dao/impl/RealmDao.java @@ -41,11 +41,12 @@ public final Observable getOne(Filter filter, SortingMode sortingMode) { query = filterToQuery(filter, query); T item = query.findFirst(); + T copy = null; if(item != null) { - return Observable.just(realm.copyFromRealm(item)); - } else { - return Observable.just(null); + realm.copyFromRealm(item); } + realm.close(); + return Observable.just(copy); } /** @@ -68,8 +69,10 @@ public final Observable> getAll(Filter filter, SortingMode sortingMode) RealmQuery query = realm.where(clazz); query = filterToQuery(filter, query); RealmResults items = query.findAllSorted(sortingMode.key, convertToSort(sortingMode.sort)); + List copies = realm.copyFromRealm(items); + realm.close(); - return Observable.just(realm.copyFromRealm(items)); + return Observable.just(copies); } /** @@ -82,8 +85,10 @@ public final Observable insertOrUpdate(T object) { realm.beginTransaction(); T inserted = realm.copyToRealmOrUpdate(object); realm.commitTransaction(); + T copy = realm.copyFromRealm(inserted); + realm.close(); - return Observable.just(realm.copyFromRealm(inserted)); + return Observable.just(copy); } /** @@ -97,8 +102,10 @@ public final Observable> insertOrUpdate(List items) { realm.beginTransaction(); items = realm.copyToRealmOrUpdate(items); realm.commitTransaction(); + List copies = realm.copyFromRealm(items); + realm.close(); - return Observable.just(realm.copyFromRealm(items)); + return Observable.just(copies); } /** @@ -130,6 +137,8 @@ public Observable deleteAll() { realm.beginTransaction(); realm.delete(clazz); realm.commitTransaction(); + realm.close(); + return Observable.just(null); }