Added method for pages by context (RAVE-1083) git-svn-id: https://svn.apache.org/repos/asf/rave/trunk@1550604 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/rave/repo Commit: http://git-wip-us.apache.org/repos/asf/rave/commit/9b7ed63b Tree: http://git-wip-us.apache.org/repos/asf/rave/tree/9b7ed63b Diff: http://git-wip-us.apache.org/repos/asf/rave/diff/9b7ed63b Branch: refs/heads/angular Commit: 9b7ed63b146a48b4a06e148f08b6edfcdc86b907 Parents: 3909e6e Author: Matthew B. Franklin <[email protected]> Authored: Fri Dec 13 00:51:41 2013 +0000 Committer: Matthew B. Franklin <[email protected]> Committed: Fri Dec 13 00:51:41 2013 +0000 ---------------------------------------------------------------------- .../org/apache/rave/rest/PagesResource.java | 12 +++++ .../rave/rest/impl/DefaultPageResource.java | 49 ++++++++++++++++---- 2 files changed, 52 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/rave/blob/9b7ed63b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java index 2fb255f..4dd3cba 100644 --- a/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java +++ b/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java @@ -44,6 +44,18 @@ public interface PagesResource { SearchResult<Page> getPages(); /** + * Returns a list of pages in the context that the specified user has access to + * + * @param context the context to query + * @param identifier the id or keyword (ie @self) + * @return a list of pages + */ + @GET + @Path("/{context}/{identifier}") + @Produces(MediaType.APPLICATION_JSON) + SearchResult<Page> getContextPages(@PathParam("context") String context, @PathParam("identifier") String identifier); + + /** * Creates a new page * * @param page the definition of the new page http://git-wip-us.apache.org/repos/asf/rave/blob/9b7ed63b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java ---------------------------------------------------------------------- diff --git a/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java index 79a40e1..06b0ede 100644 --- a/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java +++ b/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java @@ -20,7 +20,9 @@ package org.apache.rave.rest.impl; +import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; +import org.apache.rave.portal.service.UserService; import org.apache.rave.rest.PageUsersResource; import org.apache.rave.rest.exception.ResourceNotFoundException; import org.apache.rave.portal.service.PageService; @@ -34,30 +36,48 @@ import org.slf4j.LoggerFactory; import javax.inject.Inject; import javax.ws.rs.core.Response; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class DefaultPageResource implements PagesResource { + public static final String SELF = "@self"; + private Logger logger = LoggerFactory.getLogger(getClass()); private PageService pageService; private DefaultRegionsResource regionsResouce; private DefaultPageUsersResource pageUsersResource; + private UserService userService; @Override public SearchResult<Page> getPages() { SearchResult<org.apache.rave.model.Page> fromDb = pageService.getAll(); - List<Page> pages = new ArrayList<Page>(); + return convert(fromDb.getResultSet(), fromDb.getTotalResults()); + } - for (org.apache.rave.model.Page page : fromDb.getResultSet()) { - pages.add(new Page(page)); + @Override + public SearchResult<Page> getContextPages(String context, String identifier) { + String contextId = identifier.equals(SELF) ? userService.getAuthenticatedUser().getId() : identifier; + //TODO Replace when handling supports page member handling as a special case RAVE-1044 + List<org.apache.rave.model.Page> pages; + try { + if ("portal".equals(context)) { + pages = pageService.getAllUserPages(contextId); + } else if ("profile".equals(context)) { + pages = Arrays.asList(pageService.getPersonProfilePage(contextId)); + } else { + pages = pageService.getPages(context, contextId); + } + } catch (Exception e) { + throw new ResourceNotFoundException(contextId); } - - SearchResult<Page> returnPages = new SearchResult<Page>(pages, fromDb.getTotalResults()); - return returnPages; + if (pages == null) { + throw new ResourceNotFoundException(contextId); + } + return convert(pages, pages.size()); } - @Override public Page getPage(String id) { logger.debug("Retrieving page for export: " + id); @@ -65,9 +85,8 @@ public class DefaultPageResource implements PagesResource { if (fromDb == null) { throw new ResourceNotFoundException(id); } - Page responsePage = new Page(fromDb); - return responsePage; + return new Page(fromDb); } @@ -138,6 +157,14 @@ public class DefaultPageResource implements PagesResource { return pageUsersResource; } + private SearchResult<Page> convert(List<org.apache.rave.model.Page> fromDb, int total) { + List<Page> pages = Lists.newArrayList(); + for (org.apache.rave.model.Page page : fromDb) { + pages.add(new Page(page)); + } + return new SearchResult<Page>(pages, total); + } + @Inject public void setPageService(PageService pageService) { this.pageService = pageService; @@ -152,4 +179,8 @@ public class DefaultPageResource implements PagesResource { public void setPageUsersResource(DefaultPageUsersResource pageUsersResource) { this.pageUsersResource = pageUsersResource; } + @Inject + public void setUserService(UserService userService) { + this.userService = userService; + } }
