You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by er...@apache.org on 2013/08/08 20:57:05 UTC

svn commit: r1511948 - in /rave/trunk: rave-components/rave-core-api/src/main/java/org/apache/rave/rest/ rave-components/rave-core/src/main/java/org/apache/rave/portal/service/ rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl...

Author: erinnp
Date: Thu Aug  8 18:57:05 2013
New Revision: 1511948

URL: http://svn.apache.org/r1511948
Log:
Add page memebers resource

Added:
    rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageUsersResource.java
      - copied, changed from r1509789, rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageUsersResource.java
      - copied, changed from r1510718, rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java
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/portal/service/PageService.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
    rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml

Copied: rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageUsersResource.java (from r1509789, rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java)
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageUsersResource.java?p2=rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageUsersResource.java&p1=rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java&r1=1509789&r2=1511948&rev=1511948&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/RegionsResource.java (original)
+++ rave/trunk/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/PageUsersResource.java Thu Aug  8 18:57:05 2013
@@ -19,17 +19,14 @@
 
 package org.apache.rave.rest;
 
+import org.apache.rave.rest.model.PageUser;
 import org.apache.rave.rest.model.Region;
 import org.apache.rave.rest.model.SearchResult;
 
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 
-public interface RegionsResource {
-
-    /*
-    --- Region Operations
-     */
+public interface PageUsersResource {
 
     /**
      * Returns the regions associated with a page
@@ -39,66 +36,53 @@ public interface RegionsResource {
     @GET
     @Path("/")
     @Produces(MediaType.APPLICATION_JSON)
-    SearchResult<Region> getPageRegions();
+    SearchResult<PageUser> getPageUsers();
 
     /**
      * Creates a new page region
      *
-     * @param region the definition of the region
+     * @param user the new page user definition
      * @return
      */
     @POST
     @Path("/")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    Region createPageRegion( Region region);
+    PageUser createPageUser(PageUser user);
 
     /**
      * Returns a particular region associated with a page
      *
-     * @param regionId the region id
+     * @param userId the page user's id
      * @return
      */
     @GET
-    @Path("/{regionId}")
+    @Path("/{userId}")
     @Produces(MediaType.APPLICATION_JSON)
-    Region getPageRegion( @PathParam("regionId") String regionId);
+    PageUser getPageUser(@PathParam("userId") String userId);
 
     /**
      * Update a page region
      *
-     * @param regionId the region id
-     * @param region   the new region definition
+     * @param userId the page user's id
+     * @param user   the new page user definition
      * @return
      */
     @PUT
-    @Path("/{regionId}")
+    @Path("/{userId}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    Region updatePageRegion( @PathParam("regionId") String regionId, Region region);
+    PageUser updatePageUser(@PathParam("userId") String userId, PageUser user);
 
     /**
      * Deletes a page region
      *
-     * @param regionId the region id
+     * @param userId the page user's id
      * @return
      */
     @DELETE
-    @Path("/{regionId}")
+    @Path("/{userId}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    Region deletePageRegion( @PathParam("regionId") String regionId);
-
-    /*
-    --- RegionWidget Operations
-     */
-
-    /**
-     * Delegates to the RegionWidgetsResource sub-resource
-     *
-     * @param regionId the region id
-     * @return
-     */
-    @Path("/{regionId}/regionWidgets")
-    RegionWidgetsResource getRegionWidgetsResource( @PathParam("regionId") String regionId);
+    PageUser deletePageUser(@PathParam("userId") String userId);
 }

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=1511948&r1=1511947&r2=1511948&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 Thu Aug  8 18:57:05 2013
@@ -109,4 +109,13 @@ public interface PagesResource {
      */
     @Path("/{pageId}/regions")
     RegionsResource getRegionsResource(@PathParam("pageId") String pageId);
+
+    /**
+     * Delegates to the RegionsResource sub-resource.
+     *
+     * @param pageId the page id
+     * @return
+     */
+    @Path("/{pageId}/members")
+    PageUsersResource getPageMembersResource(@PathParam("pageId") String pageId);
 }

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java?rev=1511948&r1=1511947&r2=1511948&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/PageService.java Thu Aug  8 18:57:05 2013
@@ -280,6 +280,16 @@ public interface PageService {
     Boolean updateSharedPageStatus(String pageId, String shareStatus);
 
     /**
+     * Allows a user to accept or decline a page share
+     *
+     * @param pageId      - the id of the page in question
+     * @param shareStatus - a string value defined in PageStatus
+     * @return
+     */
+    @PreAuthorize("hasPermission(#pageId, 'org.apache.rave.model.Page', 'read')")
+    Boolean updateSharedPageStatus(String pageId, String userId, String shareStatus);
+
+    /**
      * Update a user who has shared access to a given page, so that they can edit the page (true)
      * or can only view it (false)
      *

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1511948&r1=1511947&r2=1511948&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java Thu Aug  8 18:57:05 2013
@@ -429,6 +429,22 @@ public class DefaultPageService implemen
 
     @Override
     @Transactional
+    public Boolean updateSharedPageStatus(String pageId, String userId, String shareStatus) {
+        Page page = this.getPage(pageId);
+        for(PageUser pageUser : page.getMembers()){
+            if(pageUser.getUserId().equals(userId)){
+                pageUser.setPageStatus(PageInvitationStatus.get(shareStatus));
+            }
+        }
+        if(pageRepository.save(page) != null){
+            return Boolean.TRUE;
+        }else{
+            return Boolean.FALSE;
+        }
+    }
+
+    @Override
+    @Transactional
     public Boolean updatePageEditingStatus(String pageId, String userId, boolean isEditor) {
         Page page = this.getPage(pageId);
         for(PageUser pageUser : page.getMembers()){

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=1511948&r1=1511947&r2=1511948&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 Thu Aug  8 18:57:05 2013
@@ -20,6 +20,7 @@
 package org.apache.rave.rest.impl;
 
 
+import org.apache.rave.rest.PageUsersResource;
 import org.apache.rave.rest.exception.ResourceNotFoundException;
 import org.apache.rave.model.PageType;
 import org.apache.rave.portal.service.PageService;
@@ -31,6 +32,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.core.Response;
 import java.util.ArrayList;
 import java.util.List;
@@ -41,6 +43,7 @@ public class DefaultPageResource impleme
     private PageService pageService;
 
     private DefaultRegionsResource regionsResouce;
+    private DefaultPageUsersResource pageUsersResource;
 
     @Override
     public SearchResult<Page> getPages() {
@@ -123,6 +126,14 @@ public class DefaultPageResource impleme
         return regionsResouce;
     }
 
+    @Override
+    public PageUsersResource getPageMembersResource(String pageId) {
+        Page page = getPage(pageId);
+        pageUsersResource.setPage(page);
+
+        return pageUsersResource;
+    }
+
     @Inject
     public void setPageService(PageService pageService) {
         this.pageService = pageService;
@@ -132,4 +143,9 @@ public class DefaultPageResource impleme
     public void setRegionsResouce(DefaultRegionsResource regionsResouce) {
         this.regionsResouce = regionsResouce;
     }
+
+    @Inject
+    public void setPageUsersResource(DefaultPageUsersResource pageUsersResource) {
+        this.pageUsersResource = pageUsersResource;
+    }
 }

Copied: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageUsersResource.java (from r1510718, rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java)
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageUsersResource.java?p2=rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageUsersResource.java&p1=rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java&r1=1510718&r2=1511948&rev=1511948&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionsResource.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageUsersResource.java Thu Aug  8 18:57:05 2013
@@ -20,82 +20,94 @@
 package org.apache.rave.rest.impl;
 
 
-import org.apache.rave.rest.exception.BadRequestException;
-import org.apache.rave.rest.exception.ResourceNotFoundException;
+import org.apache.rave.portal.service.PageService;
+import org.apache.rave.rest.PageUsersResource;
 import org.apache.rave.rest.RegionWidgetsResource;
 import org.apache.rave.rest.RegionsResource;
+import org.apache.rave.rest.exception.BadRequestException;
+import org.apache.rave.rest.exception.ResourceNotFoundException;
 import org.apache.rave.rest.model.Page;
+import org.apache.rave.rest.model.PageUser;
 import org.apache.rave.rest.model.Region;
 import org.apache.rave.rest.model.SearchResult;
 
 import javax.inject.Inject;
+import javax.ws.rs.PathParam;
 import java.util.List;
 
-public class DefaultRegionsResource implements RegionsResource {
+public class DefaultPageUsersResource implements PageUsersResource {
 
     private Page page;
-
-    private DefaultRegionWidgetsResource regionWidgetsResource;
+    private PageService pageService;
 
     public void setPage(Page page) {
         this.page = page;
     }
 
     @Override
-    public SearchResult<Region> getPageRegions() {
-        List<Region> regions = page.getRegions();
-        SearchResult<Region> results = new SearchResult<Region>(regions, regions.size());
+    public SearchResult<PageUser> getPageUsers() {
+        List<PageUser> members = page.getMembers();
+        SearchResult<PageUser> result = new SearchResult<PageUser>(members, members.size());
 
-        return results;
+        return result;
     }
 
     @Override
-    public Region createPageRegion(Region region) {
-        throw new BadRequestException("Direct manipulation of Regions is not allowed. " +
-                "Too add or delete page regions, edit a page's pageLayoutCode property.");
+    public PageUser createPageUser(PageUser user) {
+        if (user.getPersonId() == null) {
+            throw new BadRequestException("Page user personId property must be defined.");
+        }
+        pageService.addMemberToPage(page.getId(), user.getPersonId());
+        pageService.updatePageEditingStatus(page.getId(), user.getPersonId(), user.isEditor());
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
     }
 
     @Override
-    public Region getPageRegion(String regionId) {
-        List<Region> regions = page.getRegions();
-        Region match = null;
-        for(Region region: regions) {
-            if(region.getId().equals(regionId)) {
-                match = region;
+    public PageUser getPageUser(String userId) {
+        List<PageUser> members = page.getMembers();
+        PageUser match = null;
+        for (PageUser user : members) {
+            if (user.getPersonId().equals(userId)) {
+                match = user;
                 break;
             }
         }
 
-        if(match == null) {
-            throw new ResourceNotFoundException(regionId);
+        if (match == null) {
+            throw new ResourceNotFoundException(userId);
         }
 
         return match;
     }
 
     @Override
-    public Region updatePageRegion(String regionId, Region region) {
-        throw new BadRequestException("Direct manipulation of Regions is not allowed. " +
-                "Too add or delete page regions, edit a page's pageLayoutCode property.");
-    }
+    public PageUser updatePageUser(String userId, PageUser user) {
+        PageUser oldUser = getPageUser(userId);
 
-    @Override
-    public Region deletePageRegion(String regionId) {
-        throw new BadRequestException("Direct manipulation of Regions is not allowed. " +
-                "Too add or delete page regions, edit a page's pageLayoutCode property.");
+        if (user.getPersonId() == null) {
+            throw new BadRequestException("Page user status property must be defined.");
+        }
+
+        if(oldUser.isEditor() != user.isEditor()) {
+            pageService.updatePageEditingStatus(page.getId(), userId, user.isEditor());
+        }
+        if(!oldUser.getStatus().equals(user.getStatus())) {
+            pageService.updateSharedPageStatus(page.getId(), userId, user.getStatus());
+        }
+
+        return user;
     }
 
     @Override
-    public RegionWidgetsResource getRegionWidgetsResource(String regionId) {
-        Region region = getPageRegion(regionId);
-        regionWidgetsResource.setPage(page);
-        regionWidgetsResource.setRegion(region);
+    public PageUser deletePageUser(String userId) {
+        PageUser user = getPageUser(userId);
 
-        return regionWidgetsResource;
+        pageService.removeMemberFromPage(page.getId(), user.getPersonId());
+        return null;
     }
 
     @Inject
-    public void setRegionWidgetsResource(DefaultRegionWidgetsResource regionWidgetsResource) {
-        this.regionWidgetsResource = regionWidgetsResource;
+    public void setPageService(PageService pageService) {
+        this.pageService = pageService;
     }
 }

Modified: rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java?rev=1511948&r1=1511947&r2=1511948&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java (original)
+++ rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultRegionWidgetsResource.java Thu Aug  8 18:57:05 2013
@@ -31,8 +31,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.Response;
 import java.util.List;
 
 public class DefaultRegionWidgetsResource implements RegionWidgetsResource {

Modified: rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml?rev=1511948&r1=1511947&r2=1511948&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/cxf-applicationContext.xml Thu Aug  8 18:57:05 2013
@@ -75,6 +75,7 @@
     <bean id="pagesBean" class="org.apache.rave.rest.impl.DefaultPageResource" autowire="byType" />
     <bean id="regionsBean" class="org.apache.rave.rest.impl.DefaultRegionsResource" autowire="byType" />
     <bean id="regionWidgetsBean" class="org.apache.rave.rest.impl.DefaultRegionWidgetsResource" autowire="byType" />
+    <bean id="pageUsersResource" class="org.apache.rave.rest.impl.DefaultPageUsersResource" autowire="byType" />
     <bean id="pagesForRenderBean" class="org.apache.rave.rest.impl.DefaultPageForRenderResource" autowire="byType" />
 
     <bean id="JsonWrapperResponseFilter" class="org.apache.rave.rest.filters.JsonWrapperResponseFilter"/>