You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2007/05/31 17:49:09 UTC

svn commit: r543169 - in /portals/jetspeed-2/trunk: components/portal/src/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java

Author: ate
Date: Thu May 31 08:49:08 2007
New Revision: 543169

URL: http://svn.apache.org/viewvc?view=rev&rev=543169
Log:
S2-728: Provide a Portals Bridges common.PortletResourceURLFactory implementation
To prevent direct Portlet requests nav-state to be (optionally) persisted, a new reserved portal parameter, nav-state is defined.
By setting this parameter to value "transient", nav-state will not be saved in the session.
NB: an additional requirement to get this result is a WindowState.MAXIMIZED 

See: http://issues.apache.org/jira/browse/JS2-728

Modified:
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java?view=diff&rev=543169&r1=543168&r2=543169
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java Thu May 31 08:49:08 2007
@@ -20,6 +20,7 @@
 import javax.servlet.http.HttpSession;
 
 import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.cache.JetspeedCache;
 import org.apache.jetspeed.container.state.NavigationalState;
 import org.apache.jetspeed.request.RequestContext;
@@ -41,41 +42,53 @@
     {
         PortletWindowRequestNavigationalStates requestStates = getPortletWindowRequestNavigationalStates();
         
-        // First check if a maximized window is set in the request.
+        boolean transientNavState = false;
+        
+        // Check if a maximized window is set in the request.
         // This can mean a window with state MAXIMIZED *or* SOLO.
-        // With a SOLO, skip all synchroniziations!!!
+        // With a SOLO state, or if request parameter nav-state is provided with value "transient", skip all synchroniziations!
         String requestMaximizedWindowId = null;
         
         if ( requestStates.getMaximizedWindow() != null )
         {
             requestMaximizedWindowId = requestStates.getMaximizedWindow().getId().toString();
             WindowState state = requestStates.getPortletWindowNavigationalState(requestMaximizedWindowId).getWindowState();
-            if (JetspeedActions.SOLO_STATE.equals(state))
+            transientNavState = JetspeedActions.SOLO_STATE.equals(state);
+            
+            if (!transientNavState)
             {
-                // skip *any* synchronizations when in SOLO state
-                HttpSession session = context.getRequest().getSession();
-                if ( session != null )
+                // check if request parameter nav-state=transient is provided
+                String navState = context.getRequestParameter(PortalReservedParameters.NAV_STATE);
+                transientNavState = (navState != null && PortalReservedParameters.TRANSIENT_NAV_STATE.equals(navState));
+            }
+        }
+        
+        if (transientNavState)
+        {
+            // skip *any* navState synchronizations
+            HttpSession session = context.getRequest().getSession();
+            if ( session != null )
+            {
+                PortletWindowSessionNavigationalStates sessionStates = (PortletWindowSessionNavigationalStates)session.getAttribute(NavigationalState.NAVSTATE_SESSION_KEY);
+                if ( sessionStates != null )
                 {
-                    PortletWindowSessionNavigationalStates sessionStates = (PortletWindowSessionNavigationalStates)session.getAttribute(NavigationalState.NAVSTATE_SESSION_KEY);
-                    if ( sessionStates != null )
-                    {
-                        sessionStates.removeFromCache(context, requestMaximizedWindowId, cache);
-                    }
+                    sessionStates.removeFromCache(context, requestMaximizedWindowId, cache);
                 }
-                return;
             }
         }
-        
-        HttpSession session = context.getRequest().getSession();
-        if ( session != null )
+        else
         {
-            PortletWindowSessionNavigationalStates sessionStates = (PortletWindowSessionNavigationalStates)session.getAttribute(NavigationalState.NAVSTATE_SESSION_KEY);
-            if ( sessionStates == null )
+            HttpSession session = context.getRequest().getSession();
+            if ( session != null )
             {
-                sessionStates = new PortletWindowSessionNavigationalStates(isRenderParameterStateFull());
-                session.setAttribute(NavigationalState.NAVSTATE_SESSION_KEY, sessionStates);
+                PortletWindowSessionNavigationalStates sessionStates = (PortletWindowSessionNavigationalStates)session.getAttribute(NavigationalState.NAVSTATE_SESSION_KEY);
+                if ( sessionStates == null )
+                {
+                    sessionStates = new PortletWindowSessionNavigationalStates(isRenderParameterStateFull());
+                    session.setAttribute(NavigationalState.NAVSTATE_SESSION_KEY, sessionStates);
+                }
+                sessionStates.sync(context, context.getPage(), requestStates, cache);
             }
-            sessionStates.sync(context, context.getPage(), requestStates, cache);
         }
     }
     

Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java?view=diff&rev=543169&r1=543168&r2=543169
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/PortalReservedParameters.java Thu May 31 08:49:08 2007
@@ -33,6 +33,9 @@
     public final static String PORTLET_PIPELINE = "portlet-pipeline";
     public final static String ACTION_PIPELINE = "action-pipeline";
     public final static String LOGIN_PIPELINE = "login-pipeline";
+    public final static String NAV_STATE = "nav-state";
+    public final static String TRANSIENT_NAV_STATE = "transient";
+    public final static String PERSISTENT_NAV_STATE = "persistent";
     
     // Session and Request attribute keys
     public static final String PAGE_ATTRIBUTE = "org.apache.jetspeed.Page";



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