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
This commit is contained in:
Neil McErlean
2011-07-05 18:00:21 +00:00
parent d088cbe3de
commit ba537fe43e
9 changed files with 70 additions and 16 deletions

View File

@@ -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<String> 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<String> 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

View File

@@ -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<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
{
@@ -83,6 +87,13 @@ public abstract class AbstractGetBlogWebScript extends AbstractBlogWebScript
PagingResults<BlogPostInfo> 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<BlogPostInfo> getBlogPostList(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
{
PagingResults<BlogPostInfo> 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<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq);
protected abstract PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq);
}

View File

@@ -33,13 +33,13 @@ import org.alfresco.service.cmr.repository.NodeRef;
*/
public class BlogPostsGet extends AbstractGetBlogWebScript
{
@SuppressWarnings("deprecation")
@Override
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
protected PagingResults<BlogPostInfo> 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);
}
}

View File

@@ -36,7 +36,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsMyDraftsGet extends AbstractGetBlogWebScript
{
@Override
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
return blogService.getDrafts(node, AuthenticationUtil.getFullyAuthenticatedUser(), pagingReq);
}

View File

@@ -35,7 +35,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsMyPublishedGet extends AbstractGetBlogWebScript
{
@Override
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
String fullyAuthenticatedUser = AuthenticationUtil.getFullyAuthenticatedUser();
return blogService.getPublished(node, fromDate, toDate, fullyAuthenticatedUser, pagingReq);

View File

@@ -34,7 +34,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsNewGet extends AbstractGetBlogWebScript
{
@Override
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
return blogService.getPublished(node, fromDate, toDate, null, pagingReq);
}

View File

@@ -41,7 +41,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
public class BlogPostsPerMonthGet extends AbstractGetBlogWebScript
{
@Override
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
return blogService.getPublished(node, fromDate, toDate, null, pagingReq);
}

View File

@@ -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<String> tagsParam = new ArrayList<String>();
if (jsonParams.getTags() != null)
{

View File

@@ -34,7 +34,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
public class BlogPostsPublishedExtGet extends AbstractGetBlogWebScript
{
@Override
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, String tag, PagingRequest pagingReq)
protected PagingResults<BlogPostInfo> getBlogResultsImpl(NodeRef node, Date fromDate, Date toDate, PagingRequest pagingReq)
{
return blogService.getPublishedExternally(node, pagingReq);
}