Author: woonsan Date: Fri Dec 11 16:53:45 2009 New Revision: 889695 URL: http://svn.apache.org/viewvc?rev=889695&view=rev Log: JS2-1084: Adds window state parameter to porlet pipeline. In portlet pipeline, the cache retrieval should check the window state is the same one.
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java?rev=889695&r1=889694&r2=889695&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java Fri Dec 11 16:53:45 2009 @@ -23,8 +23,10 @@ import java.util.Map; import javax.portlet.PortletMode; +import javax.portlet.WindowState; import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; import org.apache.jetspeed.JetspeedActions; import org.apache.jetspeed.PortalReservedParameters; import org.apache.jetspeed.aggregator.PortletAggregator; @@ -51,6 +53,7 @@ private PortletRenderer renderer; private boolean titleInHeader; private Map<String, PortletMode> availablePortletModesMap; + private Map<String, WindowState> availableWindowStatesMap; public PortletAggregatorImpl(PortletRenderer renderer) { @@ -102,15 +105,23 @@ } PortletMode requetedPortletMode = getRequestedPortletMode(context); + WindowState requetedWindowState = getRequestedWindowState(context); + NavigationalState navState = context.getPortalURL().getNavigationalState(); - if (!requetedPortletMode.equals(navState.getMode(window))) + if (navState instanceof MutableNavigationalState) { - if (navState instanceof MutableNavigationalState) + MutableNavigationalState mutableNavState = (MutableNavigationalState) navState; + + if (!requetedPortletMode.equals(navState.getMode(window))) { - MutableNavigationalState mutableNavState = (MutableNavigationalState) navState; mutableNavState.setMode(window, requetedPortletMode); } + + if (!requetedWindowState.equals(navState.getState(window))) + { + mutableNavState.setState(window, requetedWindowState); + } } ContentFragment contentFragment = window.getFragment(); @@ -156,7 +167,7 @@ { String portletModeName = context.getRequestParameter(PortalReservedParameters.PORTLET_MODE); - if (portletModeName == null || "".equals(portletModeName)) + if (StringUtils.isBlank(portletModeName)) { return PortletMode.VIEW; } @@ -181,4 +192,34 @@ PortletMode portletMode = availablePortletModesMap.get(portletModeName); return (portletMode != null ? portletMode : PortletMode.VIEW); } + + private WindowState getRequestedWindowState(final RequestContext context) + { + String windowStateName = context.getRequestParameter(PortalReservedParameters.WINDOW_STATE); + + if (StringUtils.isBlank(windowStateName)) + { + return WindowState.NORMAL; + } + + if (availableWindowStatesMap == null) + { + Map<String, WindowState> windowStatesMap = new HashMap<String, WindowState>(); + + for (WindowState windowState : JetspeedActions.getStandardWindowStates()) + { + windowStatesMap.put(windowState.toString(), windowState); + } + + for (WindowState windowState : JetspeedActions.getExtendedWindowStates()) + { + windowStatesMap.put(windowState.toString(), windowState); + } + + availableWindowStatesMap = windowStatesMap; + } + + WindowState windowState = availableWindowStatesMap.get(windowStateName); + return (windowState != null ? windowState : WindowState.NORMAL); + } } Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java?rev=889695&r1=889694&r2=889695&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java Fri Dec 11 16:53:45 2009 @@ -22,6 +22,7 @@ import java.util.List; import javax.portlet.PortletMode; +import javax.portlet.WindowState; import org.apache.commons.collections.list.TreeList; import org.apache.jetspeed.aggregator.PortletContent; @@ -47,6 +48,7 @@ private String title; private String contentType; private PortletMode portletMode; + private WindowState windowState; /** * The list container for all contributed head elements from this portlet content. @@ -60,13 +62,14 @@ writer = new PrintWriter(cw); } - PortletContentImpl(ContentCacheKey cacheKey, int expiration, String title, PortletMode portletMode) + PortletContentImpl(ContentCacheKey cacheKey, int expiration, String title, PortletMode portletMode, WindowState windowState) { this(); this.cacheKey = cacheKey; this.expiration = expiration; this.title = title; this.portletMode = portletMode; + this.windowState = windowState; } public PrintWriter getWriter() @@ -166,6 +169,11 @@ return (portletMode != null ? portletMode : PortletMode.VIEW); } + public WindowState getWindowState() + { + return (windowState != null ? windowState : WindowState.NORMAL); + } + public void reset() { if (!complete) Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java?rev=889695&r1=889694&r2=889695&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java Fri Dec 11 16:53:45 2009 @@ -20,11 +20,11 @@ import java.util.Collection; import java.util.List; +import javax.portlet.PortletMode; +import javax.portlet.WindowState; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.jetspeed.JetspeedActions; import org.apache.jetspeed.PortalReservedParameters; import org.apache.jetspeed.aggregator.PortletAccessDeniedException; @@ -36,6 +36,7 @@ import org.apache.jetspeed.cache.CacheElement; import org.apache.jetspeed.cache.ContentCacheKey; import org.apache.jetspeed.cache.JetspeedCache; +import org.apache.jetspeed.container.PortletWindow; import org.apache.jetspeed.om.page.ContentFragment; import org.apache.jetspeed.om.page.Fragment; import org.apache.jetspeed.om.portlet.LocalizedField; @@ -44,7 +45,8 @@ import org.apache.jetspeed.security.SecurityAccessController; import org.apache.jetspeed.statistics.PortalStatistics; import org.apache.pluto.container.PortletContainer; -import org.apache.jetspeed.container.PortletWindow; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * <h4>PortletRendererService <br /> @@ -304,7 +306,10 @@ { PortletContent portletContent = (PortletContent) cachedElement.getContent(); - if (portletWindow.getPortletMode().equals(portletContent.getPortletMode())) + PortletMode portletMode = portletContent.getPortletMode(); + WindowState windowState = portletContent.getWindowState(); + + if (portletWindow.getPortletMode().equals(portletMode) && portletWindow.getWindowState().equals(windowState)) { fragment.setPortletContent(portletContent); return true; @@ -326,7 +331,7 @@ { title = portletWindow.getPortletDefinition().getPortletName(); } - return new PortletContentImpl(cacheKey, expirationCache, title, portletWindow.getPortletMode()); + return new PortletContentImpl(cacheKey, expirationCache, title, portletWindow.getPortletMode(), portletWindow.getWindowState()); } protected RenderingJob buildRenderingJob( PortletWindow portletWindow, Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java?rev=889695&r1=889694&r2=889695&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java Fri Dec 11 16:53:45 2009 @@ -28,6 +28,7 @@ public final static String PORTLET = "portlet"; public final static String PORTLET_ENTITY = "entity"; public final static String PORTLET_MODE = "mode"; + public final static String WINDOW_STATE = "state"; public final static String PAGE = "page"; public final static String PIPELINE = "pipeline"; public final static String DEFAULT_PIPELINE = "jetspeed-pipeline"; Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java?rev=889695&r1=889694&r2=889695&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java (original) +++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java Fri Dec 11 16:53:45 2009 @@ -20,6 +20,7 @@ import java.util.List; import javax.portlet.PortletMode; +import javax.portlet.WindowState; import org.apache.jetspeed.cache.ContentCacheKey; import org.apache.jetspeed.portlet.HeadElement; @@ -117,6 +118,13 @@ PortletMode getPortletMode(); /** + * Gets the window state of this portlet content. + * + * @return + */ + WindowState getWindowState(); + + /** * Adds an header element to be contributed to the page. * If keyHint argument is provided and if a header element * with the provided key hint already exists, then --------------------------------------------------------------------- To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org