portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From woon...@apache.org
Subject svn commit: r888487 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/ jetspeed-portal-resources/src/main/resou...
Date Tue, 08 Dec 2009 17:10:56 GMT
Author: woonsan
Date: Tue Dec  8 17:10:54 2009
New Revision: 888487

URL: http://svn.apache.org/viewvc?rev=888487&view=rev
Log:
JS2-1087: Initial addition of page management service bean. It's a simple replacement of GetPageAction.
TODO: Add another service for layout component.

Added:
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
  (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
  (with props)
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
  (with props)
Modified:
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-restful-services.xml

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java?rev=888487&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
(added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
Tue Dec  8 17:10:54 2009
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.services.beans;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.jetspeed.om.page.ContentFragment;
+
+/**
+ * ContentFragmentBean
+ * 
+ * @version $Id$
+ */
+@XmlRootElement(name="fragment")
+public class ContentFragmentBean implements Serializable
+{
+
+    private static final long serialVersionUID = 1L;
+    
+    private String id;
+    private String type;
+    private String name;
+    private String decorator;
+    private String mode;
+    private String state;
+    private Map<String, String> properties;
+    private Collection<ContentFragmentBean> contentFragmentBeans;
+    
+    
+    public ContentFragmentBean()
+    {
+        
+    }
+    
+    public ContentFragmentBean(final ContentFragment contentFragment)
+    {
+        id = contentFragment.getId();
+        type = contentFragment.getType();
+        name = contentFragment.getName();
+        decorator = contentFragment.getDecorator();
+        
+        mode = contentFragment.getMode();
+        state = contentFragment.getState();
+        properties = contentFragment.getProperties();
+        
+        Collection<ContentFragment> childContentFragments = contentFragment.getFragments();
+        
+        if (childContentFragments != null && !childContentFragments.isEmpty())
+        {
+            ArrayList<ContentFragmentBean> childContentFragmentBeanList = new ArrayList<ContentFragmentBean>();
+            
+            for (ContentFragment childContentFragment : childContentFragments)
+            {
+                childContentFragmentBeanList.add(new ContentFragmentBean(childContentFragment));
+            }
+            
+            contentFragmentBeans = childContentFragmentBeanList;
+        }
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+
+    public void setId(String id)
+    {
+        this.id = id;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+
+    public void setType(String type)
+    {
+        this.type = type;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getDecorator()
+    {
+        return decorator;
+    }
+
+    public void setDecorator(String decorator)
+    {
+        this.decorator = decorator;
+    }
+
+    public String getMode()
+    {
+        return mode;
+    }
+
+    public void setMode(String mode)
+    {
+        this.mode = mode;
+    }
+
+    public String getState()
+    {
+        return state;
+    }
+
+    public void setState(String state)
+    {
+        this.state = state;
+    }
+
+    public Map<String, String> getProperties()
+    {
+        return properties;
+    }
+
+    public void setProperties(Map<String, String> properties)
+    {
+        this.properties = properties;
+    }
+
+    @XmlElementWrapper(name="fragments")
+    @XmlElements(@XmlElement(name="fragment"))
+    public Collection<ContentFragmentBean> getContentFragmentBeans()
+    {
+        return contentFragmentBeans;
+    }
+
+    public void setContentFragmentBeans(Collection<ContentFragmentBean> contentFragmentBeans)
+    {
+        this.contentFragmentBeans = contentFragmentBeans;
+    }
+    
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentFragmentBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java?rev=888487&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
(added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
Tue Dec  8 17:10:54 2009
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.services.beans;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentPage;
+
+/**
+ * ContentPageBean
+ * 
+ * @version $Id$
+ */
+@XmlRootElement(name="page")
+public class ContentPageBean implements Serializable
+{
+
+    private static final long serialVersionUID = 1L;
+    
+    private String id;
+    private String name;
+    private String path;
+    private String title;
+    private String shortTitle;
+    private String url;
+    private String skin;
+    private ContentFragmentBean rootFragmentBean;
+    
+    public ContentPageBean()
+    {
+        
+    }
+    
+    public ContentPageBean(final ContentPage contentPage)
+    {
+        id = contentPage.getId();
+        name = contentPage.getName();
+        path = contentPage.getPath();
+        title = contentPage.getTitle();
+        shortTitle = contentPage.getShortTitle();
+        url = contentPage.getUrl();
+        skin = contentPage.getSkin();
+        
+        ContentFragment rootFragment = contentPage.getRootFragment();
+        
+        if (rootFragment != null)
+        {
+            rootFragmentBean = new ContentFragmentBean(rootFragment);
+        }
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+
+    public void setId(String id)
+    {
+        this.id = id;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getPath()
+    {
+        return path;
+    }
+
+    public void setPath(String path)
+    {
+        this.path = path;
+    }
+
+    public String getTitle()
+    {
+        return title;
+    }
+
+    public void setTitle(String title)
+    {
+        this.title = title;
+    }
+
+    public String getShortTitle()
+    {
+        return shortTitle;
+    }
+
+    public void setShortTitle(String shortTitle)
+    {
+        this.shortTitle = shortTitle;
+    }
+
+    public String getUrl()
+    {
+        return url;
+    }
+
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    public String getSkin()
+    {
+        return skin;
+    }
+
+    public void setSkin(String skin)
+    {
+        this.skin = skin;
+    }
+
+    @XmlElement(name="fragment")
+    public ContentFragmentBean getContentFragmentBean()
+    {
+        return rootFragmentBean;
+    }
+
+    public void setContentFragmentBean(ContentFragmentBean rootFragmentBean)
+    {
+        this.rootFragmentBean = rootFragmentBean;
+    }
+    
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/beans/ContentPageBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 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=888487&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
(added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
Tue Dec  8 17:10:54 2009
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.services.rest;
+
+import java.util.List;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.PathSegment;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.decoration.DecorationValve;
+import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
+import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.services.beans.ContentPageBean;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * PageManagementService
+ * 
+ * @version $Id$
+ */
+
+@Path("/")
+public class PageManagementService
+{
+    
+    private static Logger log = LoggerFactory.getLogger(PageManagementService.class);
+    
+    @Context
+    private ServletConfig servletConfig;
+    
+    @Context
+    private ServletContext servletContext;
+    
+    private PageManager pageManager;
+    
+    private PortletActionSecurityBehavior securityBehavior;
+    
+    private PortletRegistry portletRegistry;
+    
+    private DecorationValve decorationValve;
+    
+    public PageManagementService(PageManager pageManager,
+                                       PortletActionSecurityBehavior securityBehavior,
+                                       PortletRegistry portletRegistry,
+                                       DecorationValve decorationValve)
+    {
+        this.pageManager = pageManager;
+        this.securityBehavior = securityBehavior;
+        this.portletRegistry = portletRegistry;
+        this.decorationValve = decorationValve;
+    }
+    
+    @GET
+    @Path("/{path:.*}")
+    public ContentPageBean getContentPage(@Context HttpServletRequest servletRequest,
+                                      @Context UriInfo uriInfo,
+                                      @PathParam("path") List<PathSegment> pathSegments)
+    {
+        RequestContext requestContext = (RequestContext) servletRequest.getAttribute(RequestContext.REQUEST_PORTALENV);
+        
+        try
+        {
+            checkPageAccess(requestContext, JetspeedActions.VIEW);
+        }
+        catch (SecurityException e)
+        {
+            throw new WebApplicationException(e);
+        }
+        
+        try
+        {
+            // Run the Decoration valve to get actions
+            decorationValve.invoke(requestContext, null);
+            
+            ContentPage contentPage = requestContext.getPage();
+            
+            return new ContentPageBean(contentPage);
+        }
+        catch (Exception e)
+        {
+            throw new WebApplicationException(e);
+        }
+    }
+    
+    private void checkPageAccess(RequestContext requestContext, String action) throws SecurityException
+    {
+        if (securityBehavior != null)
+        {
+            if (!securityBehavior.checkAccess(requestContext, action))
+            {
+                throw new SecurityException("Insufficient access to view page");
+            }
+        }
+    }
+
+}

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/rest/PageManagementService.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

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=888487&r1=888486&r2=888487&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 17:10:54 2009
@@ -127,6 +127,7 @@
         
         <!-- Resource providers -->
         <ref bean="jaxrsPortletRegistryService" />
+        <ref bean="jaxrsPageManagementService" />
         
       </set>
     </property>
@@ -140,4 +141,13 @@
     <constructor-arg ref="org.apache.jetspeed.search.SearchEngine" />
   </bean>
   
+  <!-- Portal Page Management JAX-RS Service -->
+  <bean id="jaxrsPageManagementService" class="org.apache.jetspeed.services.rest.PageManagementService">
+    <meta key="j2:cat" value="default" />
+    <constructor-arg ref="org.apache.jetspeed.page.PageManager" />
+    <constructor-arg ref="PortletActionSecurityBehavior" />
+    <constructor-arg ref="org.apache.jetspeed.components.portletregistry.PortletRegistry"
/>
+    <constructor-arg ref="DecorationValve" />
+  </bean>
+  
 </beans>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org


Mime
View raw message