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