Author: woonsan
Date: Tue Dec  8 19:02:36 2009
New Revision: 888521

URL: http://svn.apache.org/viewvc?rev=888521&view=rev
Log:
JS2-1087: Adding jax-rs operations for addPortlet and removePortlet.

Modified:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
    
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-restful-services.xml

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java?rev=888521&r1=888520&r2=888521&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
 Tue Dec  8 19:02:36 2009
@@ -21,17 +21,24 @@
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
+import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.PathSegment;
+import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.jetspeed.JetspeedActions;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.decoration.DecorationValve;
+import org.apache.jetspeed.layout.PageLayoutComponent;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.page.PageManager;
@@ -66,42 +73,81 @@
     
     private DecorationValve decorationValve;
     
+    private PageLayoutComponent pageLayoutComponent;
+    
     public PageManagementService(PageManager pageManager,
                                        PortletActionSecurityBehavior 
securityBehavior,
                                        PortletRegistry portletRegistry,
-                                       DecorationValve decorationValve)
+                                       DecorationValve decorationValve,
+                                       PageLayoutComponent pageLayoutComponent)
     {
         this.pageManager = pageManager;
         this.securityBehavior = securityBehavior;
         this.portletRegistry = portletRegistry;
         this.decorationValve = decorationValve;
+        this.pageLayoutComponent = pageLayoutComponent;
     }
     
     @GET
     @Path("/{path:.*}")
     public ContentPageBean getContentPage(@Context HttpServletRequest 
servletRequest,
-                                      @Context UriInfo uriInfo,
-                                      @PathParam("path") List<PathSegment> 
pathSegments)
+                                          @Context UriInfo uriInfo,
+                                          @PathParam("path") List<PathSegment> 
pathSegments)
     {
         RequestContext requestContext = (RequestContext) 
servletRequest.getAttribute(RequestContext.REQUEST_PORTALENV);
-        
-        try
+        ContentPage contentPage = getContentPage(requestContext);
+        return new ContentPageBean(contentPage);
+    }
+    
+    @POST
+    @Path("/{path:.*}")
+    public Response addContentFragment(@Context HttpServletRequest 
servletRequest,
+                                       @Context UriInfo uriInfo,
+                                       @PathParam("path") List<PathSegment> 
pathSegments,
+                                       @FormParam("type") String fragmentType,
+                                       @FormParam("name") String fragmentName)
+    {
+        if (StringUtils.isBlank(fragmentType) || 
StringUtils.isBlank(fragmentName))
         {
-            checkPageAccess(requestContext, JetspeedActions.VIEW);
+            throw new WebApplicationException(new 
IllegalArgumentException("Fragment type and name not specified"));
         }
-        catch (SecurityException e)
+        
+        RequestContext requestContext = (RequestContext) 
servletRequest.getAttribute(RequestContext.REQUEST_PORTALENV);
+        ContentPage contentPage = getContentPage(requestContext);
+        
+        pageLayoutComponent.addPortlet(contentPage, fragmentType, 
fragmentName);
+        
+        return Response.ok().build();
+    }
+    
+    @DELETE
+    @Path("/{path:.*}")
+    public Response deleteContentFragment(@Context HttpServletRequest 
servletRequest,
+                                       @Context UriInfo uriInfo,
+                                       @PathParam("path") List<PathSegment> 
pathSegments,
+                                       @QueryParam("id") String fragmentId)
+    {
+        if (StringUtils.isBlank(fragmentId))
         {
-            throw new WebApplicationException(e);
+            throw new WebApplicationException(new 
IllegalArgumentException("Fragment id not specified"));
         }
         
+        RequestContext requestContext = (RequestContext) 
servletRequest.getAttribute(RequestContext.REQUEST_PORTALENV);
+        ContentPage contentPage = getContentPage(requestContext);
+        
+        pageLayoutComponent.removeFragment(contentPage, fragmentId);
+        
+        return Response.ok().build();
+    }
+    
+    private ContentPage getContentPage(RequestContext requestContext) throws 
WebApplicationException
+    {
         try
         {
+            checkPageAccess(requestContext, JetspeedActions.VIEW);
             // Run the Decoration valve to get actions
             decorationValve.invoke(requestContext, null);
-            
-            ContentPage contentPage = requestContext.getPage();
-            
-            return new ContentPageBean(contentPage);
+            return requestContext.getPage();
         }
         catch (Exception e)
         {

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-restful-services.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-restful-services.xml?rev=888521&r1=888520&r2=888521&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-restful-services.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-restful-services.xml
 Tue Dec  8 19:02:36 2009
@@ -148,6 +148,7 @@
     <constructor-arg ref="PortletActionSecurityBehavior" />
     <constructor-arg 
ref="org.apache.jetspeed.components.portletregistry.PortletRegistry" />
     <constructor-arg ref="DecorationValve" />
+    <constructor-arg ref="org.apache.jetspeed.layout.PageLayoutComponent" />
   </bean>
   
 </beans>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to