Author: mfranklin
Date: Fri Dec 13 00:51:41 2013
New Revision: 1550604
URL: http://svn.apache.org/r1550604
Log:
Added method for pages by context (RAVE-1083)
Modified:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
Modified:
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java?rev=1550604&r1=1550603&r2=1550604&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
(original)
+++
rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PagesResource.java
Fri Dec 13 00:51:41 2013
@@ -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
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java?rev=1550604&r1=1550603&r2=1550604&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
(original)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
Fri Dec 13 00:51:41 2013
@@ -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 impleme
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 impleme
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 impleme
public void setPageUsersResource(DefaultPageUsersResource
pageUsersResource) {
this.pageUsersResource = pageUsersResource;
}
+ @Inject
+ public void setUserService(UserService userService) {
+ this.userService = userService;
+ }
}