diff options
Diffstat (limited to 'src/com/p4square/grow/backend')
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); |