From: David ‘Bombe’ Roden Date: Mon, 24 Nov 2014 06:11:18 +0000 (+0100) Subject: Add method to expose a Sone loader to the Sone provider. X-Git-Tag: 0.9-rc1^2~3^2~17 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=b9281ba712aac6ea70b7dc217607608ae80b594d;p=Sone.git Add method to expose a Sone loader to the Sone provider. --- diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index dc5e207..dfe8074 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -96,6 +96,7 @@ import net.pterodactylus.util.service.AbstractService; import net.pterodactylus.util.thread.NamedThreadFactory; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.FluentIterable; import com.google.common.collect.HashMultimap; @@ -318,6 +319,11 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, return database.getSones(); } + @Override + public Function> soneLoader() { + return database.soneLoader(); + } + /** * Returns the Sone with the given ID, regardless whether it’s local or * remote. diff --git a/src/main/java/net/pterodactylus/sone/database/SoneProvider.java b/src/main/java/net/pterodactylus/sone/database/SoneProvider.java index f36eaba..73467a2 100644 --- a/src/main/java/net/pterodactylus/sone/database/SoneProvider.java +++ b/src/main/java/net/pterodactylus/sone/database/SoneProvider.java @@ -22,6 +22,7 @@ import java.util.Collection; import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.data.Sone; +import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.inject.ImplementedBy; @@ -33,6 +34,8 @@ import com.google.inject.ImplementedBy; @ImplementedBy(Core.class) public interface SoneProvider { + Function> soneLoader(); + /** * Returns the Sone with the given ID, or {@link Optional#absent()} if it * does not exist. 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 c611eea..4ee375e 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -56,6 +56,7 @@ 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; @@ -239,6 +240,16 @@ public class MemoryDatabase extends AbstractService implements Database { } @Override + public Function> soneLoader() { + return new Function>() { + @Override + public Optional apply(String soneId) { + return getSone(soneId); + } + }; + } + + @Override public Optional getSone(String soneId) { lock.readLock().lock(); try { diff --git a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java index c805998..2ac6db7 100644 --- a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java +++ b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java @@ -22,13 +22,14 @@ import java.io.StringReader; import java.util.Arrays; import java.util.Collection; -import com.google.common.base.Optional; - -import junit.framework.TestCase; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.data.impl.IdOnlySone; import net.pterodactylus.sone.database.SoneProvider; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import junit.framework.TestCase; + /** * JUnit test case for {@link SoneTextParser}. * @@ -181,6 +182,16 @@ public class SoneTextParserTest extends TestCase { */ private static class TestSoneProvider implements SoneProvider { + @Override + public Function> soneLoader() { + return new Function>() { + @Override + public Optional apply(String soneId) { + return getSone(soneId); + } + }; + } + /** * {@inheritDoc} */