X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryBookmarkDatabase.java;h=1a4e1193327c3c660a4df5473e40ecc625b91da5;hp=aae93dd3cde38c6530768327487227a547b6afba;hb=2bacfa78f3191fd9847574a6c8b218a4882844a4;hpb=308b94c1c75e55637644142e2553aec8d7ce01ad diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabase.java index aae93dd..1a4e119 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryBookmarkDatabase.java @@ -1,5 +1,6 @@ package net.pterodactylus.sone.database.memory; +import static com.google.common.base.Optional.fromNullable; import static com.google.common.collect.FluentIterable.from; import java.util.HashSet; @@ -8,21 +9,20 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Post.EmptyPost; import net.pterodactylus.sone.database.BookmarkDatabase; import com.google.common.base.Function; /** * Memory-based {@link BookmarkDatabase} implementation. - * - * @author David ‘Bombe’ Roden */ public class MemoryBookmarkDatabase implements BookmarkDatabase { private final ReadWriteLock lock = new ReentrantReadWriteLock(); private final MemoryDatabase memoryDatabase; private final ConfigurationLoader configurationLoader; - private final Set bookmarkedPosts = new HashSet(); + private final Set bookmarkedPosts = new HashSet<>(); public MemoryBookmarkDatabase(MemoryDatabase memoryDatabase, ConfigurationLoader configurationLoader) { @@ -74,6 +74,7 @@ public class MemoryBookmarkDatabase implements BookmarkDatabase { lock.writeLock().lock(); try { bookmarkedPosts.remove(post.getId()); + saveBookmarkedPosts(); } finally { lock.writeLock().unlock(); } @@ -93,11 +94,12 @@ public class MemoryBookmarkDatabase implements BookmarkDatabase { public Set getBookmarkedPosts() { lock.readLock().lock(); try { - return from(bookmarkedPosts).transformAndConcat( - new Function>() { + return from(bookmarkedPosts).transform( + new Function() { @Override - public Iterable apply(String postId) { - return memoryDatabase.getPost(postId).asSet(); + public Post apply(String postId) { + return fromNullable(memoryDatabase.getPost(postId)) + .or(new EmptyPost(postId)); } }).toSet(); } finally {