Distinguish between local and “normal” Sones in FCP handler.
[Sone.git] / src / main / java / net / pterodactylus / sone / fcp / GetPostFeedCommand.java
index 0fc7eda..dbaf189 100644 (file)
@@ -24,10 +24,12 @@ import java.util.HashSet;
 import java.util.List;
 
 import net.pterodactylus.sone.core.Core;
+import net.pterodactylus.sone.data.LocalSone;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.freenet.fcp.FcpException;
 
+import com.google.common.base.Optional;
 import com.google.common.collect.Collections2;
 
 import freenet.support.SimpleFieldSet;
@@ -56,17 +58,18 @@ public class GetPostFeedCommand extends AbstractSoneCommand {
         */
        @Override
        public Response execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) throws FcpException {
-               Sone sone = getSone(parameters, "Sone", true);
+               LocalSone sone = getLocalSone(parameters, "Sone", true).get();
                int startPost = getInt(parameters, "StartPost", 0);
                int maxPosts = getInt(parameters, "MaxPosts", -1);
 
                Collection<Post> allPosts = new HashSet<Post>();
                allPosts.addAll(sone.getPosts());
                for (String friendSoneId : sone.getFriends()) {
-                       if (!getCore().hasSone(friendSoneId)) {
+                       Optional<Sone> friendSone = getCore().getSone(friendSoneId);
+                       if (!friendSone.isPresent()) {
                                continue;
                        }
-                       allPosts.addAll(getCore().getSone(friendSoneId).getPosts());
+                       allPosts.addAll(friendSone.get().getPosts());
                }
                allPosts.addAll(getCore().getDirectedPosts(sone.getId()));
                allPosts = Collections2.filter(allPosts, Post.FUTURE_POSTS_FILTER);