From f7e691b5936a139177513d6da838edc3717dabed Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 15 Aug 2011 16:03:41 +0000 Subject: [PATCH] ALF-9153 Convert the discussions single post update webscript to de-lucened java backed git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29772 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/discussion/DiscussionServiceImpl.java | 15 +++++++++++++++ .../discussion/DiscussionServiceImplTest.java | 16 ++++++++++++++++ .../alfresco/repo/discussion/PostInfoImpl.java | 12 ++++++++++++ .../service/cmr/discussion/PostInfo.java | 9 ++++----- 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java b/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java index 6d371cc535..dab100cf7c 100644 --- a/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java +++ b/source/java/org/alfresco/repo/discussion/DiscussionServiceImpl.java @@ -184,6 +184,7 @@ public class DiscussionServiceImpl implements DiscussionService post.setModifier((String)props.get(ContentModel.PROP_MODIFIER)); post.setCreatedAt((Date)props.get(ContentModel.PROP_CREATED)); post.setModifiedAt((Date)props.get(ContentModel.PROP_MODIFIED)); + post.setUpdatedAt((Date)props.get(ContentModel.PROP_UPDATED)); // Now do the discussion ones post.setTitle((String)props.get(ContentModel.PROP_TITLE)); @@ -401,6 +402,20 @@ public class DiscussionServiceImpl implements DiscussionService writer.setEncoding("UTF-8"); writer.putContent(post.getContents()); + // Mark it as having been updated + Date updatedAt = new Date(); + nodeService.setProperty(nodeRef, ContentModel.PROP_UPDATED, updatedAt); + if(post instanceof PostInfoImpl) + { + ((PostInfoImpl)post).setUpdatedAt(updatedAt); + ((PostInfoImpl)post).setModifiedAt(updatedAt); + } + else + { + // Re-create to get the updated date + post = buildPost(nodeRef, post.getTopic(), post.getSystemName(), post.getContents()); + } + // All done return post; } diff --git a/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java b/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java index 5c97188efc..ceccf4dc7a 100644 --- a/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java +++ b/source/java/org/alfresco/repo/discussion/DiscussionServiceImplTest.java @@ -426,9 +426,11 @@ public class DiscussionServiceImplTest // Check them assertEquals(topic.getTitle(), post.getTitle()); assertEquals(contents, post.getContents()); + assertEquals(null, post.getUpdatedAt()); assertEquals(null, reply.getTitle()); assertEquals(replyContents, reply.getContents()); + assertEquals(null, reply.getUpdatedAt()); // Fetch and re-check @@ -437,9 +439,11 @@ public class DiscussionServiceImplTest assertEquals(topic.getTitle(), post.getTitle()); assertEquals(contents, post.getContents()); + assertEquals(null, post.getUpdatedAt()); assertEquals(null, reply.getTitle()); assertEquals(replyContents, reply.getContents()); + assertEquals(null, reply.getUpdatedAt()); // Edit them @@ -461,6 +465,12 @@ public class DiscussionServiceImplTest assertEquals(rTitle, reply.getTitle()); assertEquals(rContents, reply.getContents()); + // Check that the modified and updated dates were set + assertNotNull(post.getUpdatedAt()); + assertNotNull(post.getModifiedAt()); + assertNotNull(reply.getUpdatedAt()); + assertNotNull(reply.getModifiedAt()); + // Check the changes were taken post = DISCUSSION_SERVICE.getPost(topic, post.getSystemName()); @@ -472,6 +482,12 @@ public class DiscussionServiceImplTest assertEquals(rTitle, reply.getTitle()); assertEquals(rContents, reply.getContents()); + // Check that the modified and updated dates were set + assertNotNull(post.getUpdatedAt()); + assertNotNull(post.getModifiedAt()); + assertNotNull(reply.getUpdatedAt()); + assertNotNull(reply.getModifiedAt()); + // Remove the title from the topic manually String oldTitle = topic.getTitle(); diff --git a/source/java/org/alfresco/repo/discussion/PostInfoImpl.java b/source/java/org/alfresco/repo/discussion/PostInfoImpl.java index f3afd5128b..6eb5114091 100644 --- a/source/java/org/alfresco/repo/discussion/PostInfoImpl.java +++ b/source/java/org/alfresco/repo/discussion/PostInfoImpl.java @@ -41,6 +41,7 @@ public class PostInfoImpl implements PostInfo private String modifier; private Date createdAt; private Date modifiedAt; + private Date updatedAt; /** * Creates a new, empty {@link PostInfo} @@ -113,6 +114,12 @@ public class PostInfoImpl implements PostInfo return modifiedAt; } + @Override + public Date getUpdatedAt() + { + return updatedAt; + } + @Override public void setTitle(String title) { @@ -144,4 +151,9 @@ public class PostInfoImpl implements PostInfo { this.modifiedAt = modifiedAt; } + + public void setUpdatedAt(Date updatedAt) + { + this.updatedAt = updatedAt; + } } diff --git a/source/java/org/alfresco/service/cmr/discussion/PostInfo.java b/source/java/org/alfresco/service/cmr/discussion/PostInfo.java index e4e401e75b..ee2120bdcd 100644 --- a/source/java/org/alfresco/service/cmr/discussion/PostInfo.java +++ b/source/java/org/alfresco/service/cmr/discussion/PostInfo.java @@ -90,9 +90,8 @@ public interface PostInfo extends Serializable, PermissionCheckValue { */ Date getModifiedAt(); -// /** -// * @return the Tags associated with the post -// * TODO Are posts ever tagged, or only ever topics? -// */ -// List getTags(); + /** + * @return the updated-at date and time + */ + Date getUpdatedAt(); }