Author: ddam
Date: Thu May 15 08:01:26 2008
New Revision: 656692

URL: http://svn.apache.org/viewvc?rev=656692&view=rev
Log:
JS2-867 : Optional portlet session caching of layout view templates
turn on/off viewpage portlet session caching by setting jetspeed property 
"layout.page.storeViewPageInSession" to true / false

Modified:
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
    
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/src/webapp/WEB-INF/conf/jetspeed.properties

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java?rev=656692&r1=656691&r2=656692&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
 Thu May 15 08:01:26 2008
@@ -38,6 +38,7 @@
 import org.apache.jetspeed.CommonPortletServices;
 import org.apache.jetspeed.JetspeedActions;
 import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.administration.PortalConfiguration;
 import org.apache.jetspeed.capabilities.CapabilityMap;
 import 
org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
@@ -85,6 +86,7 @@
     protected PortletEntityAccessComponent entityAccess;
     protected PortletWindowAccessor windowAccess;
     protected TemplateLocator decorationLocator;
+    protected boolean storeViewPageInSession;
     
     private Map layoutTemplatesCache = new HashMap();
     public static final String DEFAULT_TEMPLATE_EXT = ".vm";
@@ -123,6 +125,13 @@
         {
             throw new PortletException("Failed to find the Window Access on 
portlet initialization");
         }        
+
+        PortalConfiguration portalConfiguration = (PortalConfiguration) 
getPortletContext().getAttribute(CommonPortletServices.CPS_PORTAL_CONFIGURATION);
+        if (null == portalConfiguration)
+        {
+            throw new PortletException("Failed to find the Portal 
Configuration on portlet initialization");
+        }        
+        storeViewPageInSession = 
portalConfiguration.getBoolean("layout.page.storeViewPageInSession", true);
         
         templateLocator = (TemplateLocator) 
getPortletContext().getAttribute("TemplateLocator");
         decorationLocator = (TemplateLocator) 
getPortletContext().getAttribute("DecorationLocator");
@@ -141,7 +150,7 @@
 
         try
         {
-            String helpPage = 
(String)request.getPortletSession().getAttribute(PortalReservedParameters.PAGE_LAYOUT_HELP);
                       
+            String helpPage = getCachedLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_HELP);                       
             if (helpPage == null)
             {
                 PortletPreferences prefs = request.getPreferences();
@@ -152,7 +161,7 @@
                     if (helpPage == null)
                         helpPage = "columns";
                 }
-                
request.getPortletSession().setAttribute(PortalReservedParameters.PAGE_LAYOUT_HELP,
 helpPage);
+                cacheLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_HELP, helpPage);
             }
 
             String templateKey = helpPage + "/" + 
JetspeedPowerTool.LAYOUT_TEMPLATE_TYPE  + "-help";
@@ -222,7 +231,7 @@
             JetspeedPowerTool jpt = getJetspeedPowerTool(request);
             if (maximized)
             {
-                viewPage = 
(String)request.getPortletSession().getAttribute(PortalReservedParameters.PAGE_LAYOUT_MAX);
                       
+                viewPage = getCachedLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_MAX);                       
                 if (viewPage == null)
                 {
                     PortletPreferences prefs = request.getPreferences();
@@ -233,12 +242,12 @@
                         if (viewPage == null)
                             viewPage = "maximized";
                     }
-                    
request.getPortletSession().setAttribute(PortalReservedParameters.PAGE_LAYOUT_MAX,
 viewPage);
+                    cacheLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_MAX, viewPage);
                 }
             }
             else if (solo)
             {
-                viewPage = 
(String)request.getPortletSession().getAttribute(PortalReservedParameters.PAGE_LAYOUT_SOLO);
                       
+                viewPage = getCachedLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_SOLO);                       
                 if (viewPage == null)
                 {
                     PortletPreferences prefs = request.getPreferences();       
         
@@ -251,12 +260,12 @@
                             viewPage = "solo";
                         }
                     }
-                    
request.getPortletSession().setAttribute(PortalReservedParameters.PAGE_LAYOUT_SOLO,
 viewPage);                    
+                    cacheLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_SOLO, viewPage);                    
                 }
             }
             else
             {
-                viewPage = 
(String)request.getPortletSession().getAttribute(PortalReservedParameters.PAGE_LAYOUT_VIEW);
                       
+                viewPage = getCachedLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_VIEW);                       
                 if (viewPage == null)
                 {
                     PortletPreferences prefs = request.getPreferences();       
                         
@@ -267,7 +276,7 @@
                         if (viewPage == null)
                             viewPage = "columns";
                     }
-                    
request.getPortletSession().setAttribute(PortalReservedParameters.PAGE_LAYOUT_VIEW,
 viewPage);                                        
+                    cacheLayoutViewPage(request, 
PortalReservedParameters.PAGE_LAYOUT_VIEW, viewPage);                    
                 }
             }
             
@@ -739,6 +748,32 @@
         return props;
     }
 
+    
+    /**
+     * Retrieve the cached layout view page location. This method provides an 
easy way to turn on/off caching of 
+     * layout view page locations. By default, view page locations are stored 
in the portlet session. Set the Jetspeed property 
+     * <code>layout.page.storeViewPageInSession</code> to <code>true</code> / 
<code>false</code> to turn on / off caching.
+     * @param request portlet request
+     * @param viewPageType the view page type, see the 
PortalReservedParameters.PAGE_LAYOUT_* parameters.
+     * @return the cached view page location
+     */
+    protected String getCachedLayoutViewPage(RenderRequest request, String 
viewPageType){
+       return storeViewPageInSession ? 
(String)request.getPortletSession().getAttribute(viewPageType) : null;  
+    }
+    
+    /**
+     * Cache a layout view page location. By default, the value is stored in 
the portlet session. 
+     * @param request portlet request
+     * @param viewPageType the type of the view page (e.g. help, maximized 
view, solo, etc.). See the 
+     * PortalReservedParameters.PAGE_LAYOUT_* parameters.
+     * @param page the view page to cache
+     */
+    protected void cacheLayoutViewPage(RenderRequest request, String 
viewPageType, String page){
+       if (storeViewPageInSession){
+               request.getPortletSession().setAttribute(viewPageType, page);
+       }
+    }
+    
     class CachedTemplate
     {
         private String key;

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml?rev=656692&r1=656691&r2=656692&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
 Thu May 15 08:01:26 2008
@@ -42,6 +42,7 @@
         <js:service name='Desktop'/>
         <js:service name='decorationContentCache'/>
         <js:service name='portletContentCache'/>        
+           <js:service name='PortalConfiguration'/>        
        </js:services>
        
 </portlet-app>

Modified: 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/src/webapp/WEB-INF/conf/jetspeed.properties
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/src/webapp/WEB-INF/conf/jetspeed.properties?rev=656692&r1=656691&r2=656692&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/src/webapp/WEB-INF/conf/jetspeed.properties
 (original)
+++ 
portals/jetspeed-2/portal/branches/JETSPEED-2.1.3-POSTRELEASE/src/webapp/WEB-INF/conf/jetspeed.properties
 Thu May 15 08:01:26 2008
@@ -193,6 +193,8 @@
 #-------------------------------------------------------------------------
 # the default page layout if none is specified
 layout.page.default = jetspeed-layouts::VelocityTwoColumns
+# optimization for looking up LayoutPortlet Page template, default == true
+layout.page.storeViewPageInSession = true
 
 #-------------------------------------------------------------------------
 # D E C O R A T O R S



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to