✅ Fix failing memory database test
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / database / memory / MemoryDatabase.kt
index e2281ac..04a94c7 100644 (file)
@@ -29,12 +29,15 @@ import net.pterodactylus.sone.data.Album
 import net.pterodactylus.sone.data.Image
 import net.pterodactylus.sone.data.Post
 import net.pterodactylus.sone.data.PostReply
+import net.pterodactylus.sone.data.PostReplyShell
+import net.pterodactylus.sone.data.PostShell
 import net.pterodactylus.sone.data.Sone
 import net.pterodactylus.sone.data.allAlbums
 import net.pterodactylus.sone.data.allImages
 import net.pterodactylus.sone.data.impl.AlbumBuilderImpl
 import net.pterodactylus.sone.data.impl.ImageBuilderImpl
 import net.pterodactylus.sone.data.newestReplyFirst
+import net.pterodactylus.sone.data.toShell
 import net.pterodactylus.sone.database.AlbumBuilder
 import net.pterodactylus.sone.database.Database
 import net.pterodactylus.sone.database.DatabaseException
@@ -55,17 +58,19 @@ import kotlin.concurrent.withLock
  * Memory-based [PostDatabase] implementation.
  */
 @Singleton
-class MemoryDatabase @Inject constructor(private val configuration: Configuration) : AbstractService(), Database {
+class MemoryDatabase constructor(private val configuration: Configuration, private val saveKnownPostRepliesRateLimiter: RateLimiter) : AbstractService(), Database {
+
+       @javax.inject.Inject constructor(configuration: Configuration): this(configuration, RateLimiter.create(1.0))
 
        private val lock = ReentrantReadWriteLock()
        private val readLock: ReadLock by lazy { lock.readLock() }
        private val writeLock: WriteLock by lazy { lock.writeLock() }
        private val configurationLoader = ConfigurationLoader(configuration)
        private val allSones = mutableMapOf<String, Sone>()
-       private val allPosts = mutableMapOf<String, MemoryPost.Shell>()
-       private val sonePosts: Multimap<String, MemoryPost.Shell> = HashMultimap.create<String, MemoryPost.Shell>()
+       private val allPosts = mutableMapOf<String, PostShell>()
+       private val sonePosts: Multimap<String, PostShell> = HashMultimap.create<String, PostShell>()
        private val knownPosts = mutableSetOf<String>()
-       private val allPostReplies = mutableMapOf<String, MemoryPostReply.Shell>()
+       private val allPostReplies = mutableMapOf<String, PostReplyShell>()
        private val sonePostReplies: Multimap<String, PostReply> = TreeMultimap.create<String, PostReply>(Comparator { leftString, rightString -> leftString.compareTo(rightString) }, newestReplyFirst)
        private val knownPostReplies = mutableSetOf<String>()
        private val allAlbums = mutableMapOf<String, Album>()
@@ -76,7 +81,6 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio
        private val memoryFriendDatabase = MemoryFriendDatabase(configurationLoader)
        private val saveRateLimiter: RateLimiter = RateLimiter.create(1.0)
        private val saveKnownPostsRateLimiter: RateLimiter = RateLimiter.create(1.0)
-       private val saveKnownPostRepliesRateLimiter: RateLimiter = RateLimiter.create(1.0)
 
        override val soneLoader get() = this::getSone