Return local Sones from core and web interface.
[Sone.git] / src / main / java / net / pterodactylus / sone / database / memory / MemoryDatabase.java
index 813dc42..128a4bd 100644 (file)
@@ -50,6 +50,7 @@ import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidPostReplyFound
 import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Client;
 import net.pterodactylus.sone.data.Image;
+import net.pterodactylus.sone.data.LocalSone;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.PostReply;
 import net.pterodactylus.sone.data.Profile;
@@ -158,6 +159,18 @@ public class MemoryDatabase extends AbstractService implements Database {
        // DATABASE METHODS
        //
 
+       @Override
+       public Optional<LocalSone> getLocalSone(String localSoneId) {
+               lock.readLock().lock();
+               try {
+                       if (!localSones.contains(localSoneId)) {
+                               return Optional.absent();
+                       }
+                       return Optional.of((LocalSone) allSones.get(localSoneId));
+               } finally {
+                       lock.readLock().unlock();
+               }
+       }
 
        @Override
        public Sone registerLocalSone(OwnIdentity ownIdentity) {
@@ -570,10 +583,16 @@ public class MemoryDatabase extends AbstractService implements Database {
        }
 
        @Override
-       public Collection<Sone> getLocalSones() {
+       public Collection<LocalSone> getLocalSones() {
                lock.readLock().lock();
                try {
-                       return from(allSones.values()).filter(LOCAL_SONE_FILTER).toSet();
+                       return from(allSones.values()).filter(LOCAL_SONE_FILTER).transform(new Function<Sone, LocalSone>() {
+                               @Override
+                               public LocalSone apply(Sone sone) {
+                                       // FIXME – Sones will not always implement LocalSone
+                                       return (LocalSone) sone;
+                               }
+                       }).toSet();
                } finally {
                        lock.readLock().unlock();
                }