From ba537fe43eeabcbe636bdd1dfa5ddae4e7115945 Mon Sep 17 00:00:00 2001 From: Neil McErlean Date: Tue, 5 Jul 2011 18:00:21 +0000 Subject: [PATCH] ALF-9385. Separation of taggingService from Blog CannedQueries. Initial implementation provides separate 'findTaggedBlogPosts' method and removes taggingService from the CQs. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28816 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/scripts/blogs/BlogServiceTest.java | 22 ++++++++++--- .../blogs/posts/AbstractGetBlogWebScript.java | 32 ++++++++++++++++--- .../web/scripts/blogs/posts/BlogPostsGet.java | 6 ++-- .../blogs/posts/BlogPostsMyDraftsGet.java | 2 +- .../blogs/posts/BlogPostsMyPublishedGet.java | 2 +- .../scripts/blogs/posts/BlogPostsNewGet.java | 2 +- .../blogs/posts/BlogPostsPerMonthGet.java | 2 +- .../scripts/blogs/posts/BlogPostsPost.java | 16 ++++++++++ .../blogs/posts/BlogPostsPublishedExtGet.java | 2 +- 9 files changed, 70 insertions(+), 16 deletions(-) diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java b/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java index 7d1a4d4bb1..27e3ff4209 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/BlogServiceTest.java @@ -18,6 +18,7 @@ */ package org.alfresco.repo.web.scripts.blogs; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -321,9 +322,9 @@ public class BlogServiceTest extends BaseWebScriptTest assertEquals(title, item.get("title")); assertEquals(content, item.get("content")); assertEquals(true, item.get("isDraft")); - JSONArray recoveredTags = (JSONArray)item.get("tags"); - assertEquals("Tags size was wrong.", 2, recoveredTags.length()); - List recoveredTagsList = Arrays.asList(new String[]{recoveredTags.getString(0), recoveredTags.getString(1)}); + JSONArray reportedTags = (JSONArray)item.get("tags"); + assertEquals("Tags size was wrong.", 2, reportedTags.length()); + List recoveredTagsList = Arrays.asList(new String[]{reportedTags.getString(0), reportedTags.getString(1)}); assertEquals("Tags were wrong.", Arrays.asList(tags), recoveredTagsList); // comment on the blog post. @@ -364,7 +365,20 @@ public class BlogServiceTest extends BaseWebScriptTest response = sendRequest(new GetRequest(commentsUrl), 200); - // TODO Replies still not right in the Share UI. + // Now get blog-post by tag. + // 1. No such tag + response = sendRequest(new GetRequest(URL_BLOG_POSTS + "?tag=NOSUCHTAG"), 200); + result = new JSONObject(response.getContentAsString()); + + assertEquals(0, result.getInt("total")); + + // tag created above + response = sendRequest(new GetRequest(URL_BLOG_POSTS + "?tag=foo"), 200); + result = new JSONObject(response.getContentAsString()); + + assertEquals(1, result.getInt("total")); + + //TODO More assertions on recovered node. } public void testCreatePublishedPost() throws Exception diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java index 6c2d4a5390..861457c488 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/AbstractGetBlogWebScript.java @@ -32,6 +32,8 @@ import org.alfresco.repo.web.scripts.blogs.BlogPostLibJs; import org.alfresco.repo.web.scripts.blogs.RequestUtilsLibJs; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.util.Pair; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptRequest; @@ -42,6 +44,8 @@ import org.springframework.extensions.webscripts.WebScriptRequest; */ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript { + private static final Log log = LogFactory.getLog(AbstractGetBlogWebScript.class); + @Override protected Map executeImpl(WebScriptRequest req, Status status, Cache cache) { @@ -82,7 +86,14 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript // fetch and assign the data PagingResults blogPostList = getBlogPostList(node, fromDate, toDate, tag, pagingReq); - + + if (log.isDebugEnabled()) + { + StringBuilder msg = new StringBuilder(); + msg.append("Retrieved ").append(blogPostList.getPage().size()).append(" blog posts in page."); + log.debug(msg.toString()); + } + createFtlModel(req, model, node, pagingReq, blogPostList); return model; @@ -158,9 +169,22 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript */ private PagingResults getBlogPostList(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) { - PagingResults results = getBlogResultsImpl(node, fromDate, toDate, tag, pagingReq); - return results; + // Currently we only support CannedQuery-based gets without tags: + if (tag == null || tag.trim().isEmpty()) + { + return getBlogResultsImpl(node, fromDate, toDate, pagingReq); + } + // and tag-based Lucene searches with no other query params + else if (fromDate == null && toDate == null) + { + return blogService.findTaggedBlogPosts(node, tag, pagingReq); + } + // But we might change the below to use a Lucene query. + else + { + throw new UnsupportedOperationException("Cannot get BlogPosts with both tags and date limits."); + } } - protected abstract PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq); + protected abstract PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq); } diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java index 93c8ca2b6f..8c57409c5c 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsGet.java @@ -33,13 +33,13 @@ import org.alfresco.service.cmr.repository.NodeRef; */ public class BlogPostsGet extends AbstractGetBlogWebScript { - @SuppressWarnings("deprecation") @Override - protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) + protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq) { // This intentionally uses the deprecated method in the foundation service. // In fact the method is there specifically for this class. - return blogService.getMyDraftsAndAllPublished(node, fromDate, toDate, tag, pagingReq); + + return blogService.getMyDraftsAndAllPublished(node, fromDate, toDate, pagingReq); } } diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java index 3a6d381459..9c08ac2470 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyDraftsGet.java @@ -36,7 +36,7 @@ import org.alfresco.service.cmr.repository.NodeRef; public class BlogPostsMyDraftsGet extends AbstractGetBlogWebScript { @Override - protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) + protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq) { return blogService.getDrafts(node, AuthenticationUtil.getFullyAuthenticatedUser(), pagingReq); } diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java index 33cb5578fa..7aff7f94f0 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsMyPublishedGet.java @@ -35,7 +35,7 @@ import org.alfresco.service.cmr.repository.NodeRef; public class BlogPostsMyPublishedGet extends AbstractGetBlogWebScript { @Override - protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) + protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq) { String fullyAuthenticatedUser = AuthenticationUtil.getFullyAuthenticatedUser(); return blogService.getPublished(node, fromDate, toDate, fullyAuthenticatedUser, pagingReq); diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java index f5f2932382..b431167809 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsNewGet.java @@ -34,7 +34,7 @@ import org.alfresco.service.cmr.repository.NodeRef; public class BlogPostsNewGet extends AbstractGetBlogWebScript { @Override - protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) + protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq) { return blogService.getPublished(node, fromDate, toDate, null, pagingReq); } diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java index df49d285da..221e18d29e 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPerMonthGet.java @@ -41,7 +41,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest; public class BlogPostsPerMonthGet extends AbstractGetBlogWebScript { @Override - protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) + protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq) { return blogService.getPublished(node, fromDate, toDate, null, pagingReq); } diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java index d5501ec909..030474c202 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPost.java @@ -32,6 +32,8 @@ import org.alfresco.service.cmr.activities.ActivityService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.tagging.TaggingService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -50,6 +52,8 @@ import org.springframework.extensions.webscripts.WebScriptRequest; */ public class BlogPostsPost extends AbstractBlogWebScript { + private static final Log log = LogFactory.getLog(BlogPostsPost.class); + // Injected services private ActivityService activityService; private TaggingService taggingService; @@ -203,6 +207,18 @@ public class BlogPostsPost extends AbstractBlogWebScript String titleParam = jsonParams.getTitle() == null ? "" : jsonParams.getTitle(); String contentParam = jsonParams.getContent() == null ? "" : jsonParams.getContent(); boolean isDraftParam = jsonParams.getIsDraft() == null ? false : Boolean.parseBoolean(jsonParams.getIsDraft()); + + if (log.isDebugEnabled()) + { + StringBuilder msg = new StringBuilder(); + msg.append("Creating blog-post '").append(titleParam).append("'"); + if (isDraftParam) + { + msg.append(" DRAFT"); + } + log.debug(msg.toString()); + } + List tagsParam = new ArrayList(); if (jsonParams.getTags() != null) { diff --git a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java index 94a4131b23..5b234cb6ae 100644 --- a/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java +++ b/source/java/org/alfresco/repo/web/scripts/blogs/posts/BlogPostsPublishedExtGet.java @@ -34,7 +34,7 @@ import org.alfresco.service.cmr.repository.NodeRef; public class BlogPostsPublishedExtGet extends AbstractGetBlogWebScript { @Override - protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq) + protected PagingResults getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq) { return blogService.getPublishedExternally(node, pagingReq); }