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/feed/ThreadResource.java5
-rw-r--r--src/com/p4square/grow/backend/feed/TopicResource.java20
2 files changed, 23 insertions, 2 deletions
diff --git a/src/com/p4square/grow/backend/feed/ThreadResource.java b/src/com/p4square/grow/backend/feed/ThreadResource.java
index 32a2f64..c0604a8 100644
--- a/src/com/p4square/grow/backend/feed/ThreadResource.java
+++ b/src/com/p4square/grow/backend/feed/ThreadResource.java
@@ -6,6 +6,7 @@ package com.p4square.grow.backend.feed;
import java.io.IOException;
+import java.util.Date;
import java.util.Map;
import java.util.UUID;
@@ -87,6 +88,10 @@ public class ThreadResource extends ServerResource {
message.setThreadId(mThreadId);
message.setId(String.format("%x-%s", System.currentTimeMillis(), UUID.randomUUID().toString()));
+ if (message.getCreated() == null) {
+ message.setCreated(new Date());
+ }
+
String collectionKey = mTopic + "/" + mThreadId;
mBackend.getMessageProvider().put(collectionKey, message.getId(), message);
diff --git a/src/com/p4square/grow/backend/feed/TopicResource.java b/src/com/p4square/grow/backend/feed/TopicResource.java
index 0904baa..3519ca9 100644
--- a/src/com/p4square/grow/backend/feed/TopicResource.java
+++ b/src/com/p4square/grow/backend/feed/TopicResource.java
@@ -6,7 +6,9 @@ package com.p4square.grow.backend.feed;
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;
@@ -16,6 +18,7 @@ import org.restlet.ext.jackson.JacksonRepresentation;
import org.apache.log4j.Logger;
+import com.p4square.grow.model.Message;
import com.p4square.grow.model.MessageThread;
/**
@@ -72,12 +75,25 @@ public class TopicResource extends ServerResource {
}
try {
+ // Deserialize the incoming message.
+ JacksonRepresentation<Message> jsonRep = new JacksonRepresentation<Message>(entity, Message.class);
+ Message message = jsonRep.getObject();
+ if (message.getCreated() == null) {
+ message.setCreated(new Date());
+ }
+
+ // Create the new thread.
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.setThreadId(newThread.getId());
+ newThread.setMessage(message);
+
mBackend.getThreadProvider().put(mTopic, newThread.getId(), newThread);
- setStatus(Status.SUCCESS_NO_CONTENT);
setLocationRef(mTopic + "/" + newThread.getId());
- return null;
+ return new JacksonRepresentation(newThread);
} catch (IOException e) {
LOG.error("Unexpected exception: " + e.getMessage(), e);