X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=571f9a38d543d28cae7e7136dd177b970a5d7f96;hp=aa4a2a872b2a7190100471859165f1c86f1e5cf1;hb=cbd6de75a2a96966a2381100c5b643feea702458;hpb=c4ae226ec5052116cefc542ae2017036a7bc6332 diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java index aa4a2a8..571f9a3 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -37,6 +37,9 @@ import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.Post; @@ -52,12 +55,9 @@ import net.pterodactylus.sone.database.PostBuilder; import net.pterodactylus.sone.database.PostDatabase; import net.pterodactylus.sone.database.PostReplyBuilder; import net.pterodactylus.sone.database.SoneBuilder; -import net.pterodactylus.sone.database.SoneProvider; import net.pterodactylus.util.config.Configuration; import net.pterodactylus.util.config.ConfigurationException; -import com.google.common.base.Function; -import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; @@ -66,6 +66,7 @@ import com.google.common.collect.TreeMultimap; import com.google.common.util.concurrent.AbstractService; import com.google.inject.Inject; import com.google.inject.Singleton; +import kotlin.jvm.functions.Function1; /** * Memory-based {@link PostDatabase} implementation. @@ -78,9 +79,6 @@ public class MemoryDatabase extends AbstractService implements Database { /** The lock. */ private final ReadWriteLock lock = new ReentrantReadWriteLock(); - /** The Sone provider. */ - private final SoneProvider soneProvider; - /** The configuration. */ private final Configuration configuration; private final ConfigurationLoader configurationLoader; @@ -123,14 +121,11 @@ public class MemoryDatabase extends AbstractService implements Database { /** * Creates a new memory database. * - * @param soneProvider - * The Sone provider * @param configuration * The configuration for loading and saving elements */ @Inject - public MemoryDatabase(SoneProvider soneProvider, Configuration configuration) { - this.soneProvider = soneProvider; + public MemoryDatabase(Configuration configuration) { this.configuration = configuration; this.configurationLoader = new ConfigurationLoader(configuration); memoryBookmarkDatabase = @@ -241,21 +236,22 @@ public class MemoryDatabase extends AbstractService implements Database { } } + @Nonnull @Override - public Function> soneLoader() { - return new Function>() { + public Function1 getSoneLoader() { + return new Function1() { @Override - public Optional apply(String soneId) { + public Sone invoke(String soneId) { return getSone(soneId); } }; } @Override - public Optional getSone(String soneId) { + public Sone getSone(String soneId) { lock.readLock().lock(); try { - return fromNullable(allSones.get(soneId)); + return allSones.get(soneId); } finally { lock.readLock().unlock(); } @@ -324,16 +320,22 @@ public class MemoryDatabase extends AbstractService implements Database { memoryFriendDatabase.removeFriend(localSone.getId(), friendSoneId); } + @Nullable + @Override + public Long getFollowingTime(@Nonnull String friendSoneId) { + return memoryFriendDatabase.getFollowingTime(friendSoneId); + } + // // POSTPROVIDER METHODS // - /** {@inheritDocs} */ + @Nullable @Override - public Optional getPost(String postId) { + public Post getPost(@Nonnull String postId) { lock.readLock().lock(); try { - return fromNullable(allPosts.get(postId)); + return allPosts.get(postId); } finally { lock.readLock().unlock(); } @@ -368,7 +370,7 @@ public class MemoryDatabase extends AbstractService implements Database { /** {@inheritDocs} */ @Override public PostBuilder newPostBuilder() { - return new MemoryPostBuilder(this, soneProvider); + return new MemoryPostBuilder(this, this); } // @@ -406,12 +408,12 @@ public class MemoryDatabase extends AbstractService implements Database { // POSTREPLYPROVIDER METHODS // - /** {@inheritDocs} */ + @Nullable @Override - public Optional getPostReply(String id) { + public PostReply getPostReply(String id) { lock.readLock().lock(); try { - return fromNullable(allPostReplies.get(id)); + return allPostReplies.get(id); } finally { lock.readLock().unlock(); } @@ -441,7 +443,7 @@ public class MemoryDatabase extends AbstractService implements Database { /** {@inheritDocs} */ @Override public PostReplyBuilder newPostReplyBuilder() { - return new MemoryPostReplyBuilder(this, soneProvider); + return new MemoryPostReplyBuilder(this, this); } // @@ -474,11 +476,12 @@ public class MemoryDatabase extends AbstractService implements Database { // ALBUMPROVDER METHODS // + @Nullable @Override - public Optional getAlbum(String albumId) { + public Album getAlbum(@Nonnull String albumId) { lock.readLock().lock(); try { - return fromNullable(allAlbums.get(albumId)); + return allAlbums.get(albumId); } finally { lock.readLock().unlock(); } @@ -523,11 +526,12 @@ public class MemoryDatabase extends AbstractService implements Database { // IMAGEPROVIDER METHODS // + @Nullable @Override - public Optional getImage(String imageId) { + public Image getImage(@Nonnull String imageId) { lock.readLock().lock(); try { - return fromNullable(allImages.get(imageId)); + return allImages.get(imageId); } finally { lock.readLock().unlock(); }