summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/p4square/grow/backend')
-rw-r--r--src/com/p4square/grow/backend/db/CassandraCollectionProvider.java12
-rw-r--r--src/com/p4square/grow/backend/feed/ThreadResource.java5
-rw-r--r--src/com/p4square/grow/backend/feed/TopicResource.java17
3 files changed, 21 insertions, 13 deletions
diff --git a/src/com/p4square/grow/backend/db/CassandraCollectionProvider.java b/src/com/p4square/grow/backend/db/CassandraCollectionProvider.java
index cc11828..5e83247 100644
--- a/src/com/p4square/grow/backend/db/CassandraCollectionProvider.java
+++ b/src/com/p4square/grow/backend/db/CassandraCollectionProvider.java
@@ -7,7 +7,7 @@ package com.p4square.grow.backend.db;
import java.io.IOException;
import java.util.Collections;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import com.netflix.astyanax.model.Column;
@@ -45,21 +45,21 @@ public class CassandraCollectionProvider<V> implements CollectionProvider<String
@Override
public Map<String, V> query(String collection, int limit) throws IOException {
- Map<String, V> result = new HashMap<>();
+ Map<String, V> result = new LinkedHashMap<>();
ColumnList<String> row = mDb.getRow(mCF, collection);
if (!row.isEmpty()) {
int count = 0;
for (Column<String> c : row) {
+ if (limit >= 0 && ++count > limit) {
+ break; // Limit reached.
+ }
+
String key = c.getName();
String blob = c.getStringValue();
V obj = decode(blob);
result.put(key, obj);
-
- if (limit >= 0 && ++count > limit) {
- break; // Limit reached.
- }
}
}
diff --git a/src/com/p4square/grow/backend/feed/ThreadResource.java b/src/com/p4square/grow/backend/feed/ThreadResource.java
index c0604a8..e8f46c2 100644
--- a/src/com/p4square/grow/backend/feed/ThreadResource.java
+++ b/src/com/p4square/grow/backend/feed/ThreadResource.java
@@ -8,7 +8,6 @@ import java.io.IOException;
import java.util.Date;
import java.util.Map;
-import java.util.UUID;
import org.restlet.data.Status;
import org.restlet.resource.ServerResource;
@@ -68,7 +67,7 @@ public class ThreadResource extends ServerResource {
}
/**
- * POST a new thread to the topic.
+ * POST a new message to the thread.
*/
@Override
protected Representation post(Representation entity) {
@@ -86,7 +85,7 @@ public class ThreadResource extends ServerResource {
// Force the thread id and message to be what we expect.
message.setThreadId(mThreadId);
- message.setId(String.format("%x-%s", System.currentTimeMillis(), UUID.randomUUID().toString()));
+ message.setId(Message.generateId());
if (message.getCreated() == null) {
message.setCreated(new Date());
diff --git a/src/com/p4square/grow/backend/feed/TopicResource.java b/src/com/p4square/grow/backend/feed/TopicResource.java
index 5826355..24b6a92 100644
--- a/src/com/p4square/grow/backend/feed/TopicResource.java
+++ b/src/com/p4square/grow/backend/feed/TopicResource.java
@@ -8,7 +8,6 @@ import java.io.IOException;
import java.util.Date;
import java.util.Map;
-import java.util.UUID;
import org.restlet.data.Status;
import org.restlet.resource.ServerResource;
@@ -50,10 +49,20 @@ public class TopicResource extends ServerResource {
return new JacksonRepresentation(FeedDataProvider.TOPICS);
}
- // TODO: Support limit query parameter.
+ // Parse limit query parameter.
+ int limit = -1;
+ String limitString = getQueryValue("limit");
+ if (limitString != null) {
+ try {
+ limit = Integer.parseInt(limitString);
+ } catch (NumberFormatException e) {
+ setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
+ return null;
+ }
+ }
try {
- Map<String, MessageThread> threads = mBackend.getThreadProvider().query(mTopic);
+ Map<String, MessageThread> threads = mBackend.getThreadProvider().query(mTopic, limit);
return new JacksonRepresentation(threads.values());
} catch (IOException e) {
@@ -90,7 +99,7 @@ public class TopicResource extends ServerResource {
MessageThread newThread = MessageThread.createNew();
// Force the thread id and message to be what we expect.
- message.setId(String.format("%x-%s", System.currentTimeMillis(), UUID.randomUUID().toString()));
+ message.setId(Message.generateId());
message.setThreadId(newThread.getId());
newThread.setMessage(message);