diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2014-02-20 21:14:34 -0800 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2014-02-20 21:14:34 -0800 |
commit | a2a1d7a67b1458cc342c0eb8d5a2732c806ddacf (patch) | |
tree | 3278235acde130e2abbf0ed61dfbe1a795c095b6 /src/com/p4square/grow/frontend/FeedData.java | |
parent | 9d2016bd2320f9b252e91057a36455d31457236d (diff) |
Added support for displaying message on Feed.
Changed MessageThread so that a thread always contains one original
message.
Added support in JsonEncodedProvider for JavaTypes in addition to
classes.
Updated communityfeed.ftl to actually display questions and answers.
Diffstat (limited to 'src/com/p4square/grow/frontend/FeedData.java')
-rw-r--r-- | src/com/p4square/grow/frontend/FeedData.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/com/p4square/grow/frontend/FeedData.java b/src/com/p4square/grow/frontend/FeedData.java new file mode 100644 index 0000000..acff8d9 --- /dev/null +++ b/src/com/p4square/grow/frontend/FeedData.java @@ -0,0 +1,65 @@ +/* + * Copyright 2014 Jesse Morgan + */ + +package com.p4square.grow.frontend; + +import java.io.IOException; +import java.util.List; + +import org.restlet.Context; +import org.restlet.Restlet; + +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.type.TypeFactory; + +import com.p4square.grow.config.Config; +import com.p4square.grow.frontend.JsonRequestProvider; +import com.p4square.grow.model.Message; +import com.p4square.grow.model.MessageThread; +import com.p4square.grow.provider.JsonEncodedProvider; +import com.p4square.grow.provider.Provider; + +/** + * Fetch feed data for a topic. + */ +public class FeedData { + + private final Config mConfig; + private final String mBackendURI; + + private final Provider<String, List<MessageThread>> mThreadProvider; + private final Provider<String, List<Message>> mMessageProvider; + + public FeedData(final Context context, final Config config) { + mConfig = config; + mBackendURI = mConfig.getString("backendUri", "riap://component/backend") + "/feed"; + + Restlet clientDispatcher = context.getClientDispatcher(); + + TypeFactory factory = JsonEncodedProvider.MAPPER.getTypeFactory(); + + JavaType threadType = factory.constructCollectionType(List.class, MessageThread.class); + mThreadProvider = new JsonRequestProvider<List<MessageThread>>(clientDispatcher, threadType); + + JavaType messageType = factory.constructCollectionType(List.class, Message.class); + mMessageProvider = new JsonRequestProvider<List<Message>>(clientDispatcher, messageType); + } + + public List<MessageThread> getThreads(final String topic) throws IOException { + return mThreadProvider.get(makeUrl(topic)); + } + + public List<Message> getMessages(final String topic, final String threadId) throws IOException { + return mMessageProvider.get(makeUrl(topic, threadId)); + } + + private String makeUrl(String... parts) { + String url = mBackendURI; + for (String part : parts) { + url += "/" + part; + } + + return url; + } +} |