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"/>


Reply via email to