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 2009/04/16 11:33:59 UTC

svn commit: r765538 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/ components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/ components/jetspeed-portal/src/t...

Author: ate
Date: Thu Apr 16 09:33:58 2009
New Revision: 765538

URL: http://svn.apache.org/viewvc?rev=765538&view=rev
Log:
Implementing JS2-969: Add portlet content cache managment and invalidation for JSR-286 Public Render Parameters usage
See: http://issues.apache.org/jira/browse/JS2-969

Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/CommonjWorkerMonitorImpl.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/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PathNavigationalState.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PortletWindowSessionNavigationalStates.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/MockRenderJob.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletContent.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletRenderer.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/RenderingJob.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/state/NavigationalState.java

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/CommonjWorkerMonitorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/CommonjWorkerMonitorImpl.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/CommonjWorkerMonitorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/CommonjWorkerMonitorImpl.java Thu Apr 16 09:33:58 2009
@@ -358,7 +358,7 @@
                             {
                                 synchronized (content)
                                 {
-                                    content.completeWithError();
+                                    content.complete();
                                 }
                             }
                         }

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=765538&r1=765537&r2=765538&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 Thu Apr 16 09:33:58 2009
@@ -25,7 +25,6 @@
 
 import org.apache.commons.collections.list.TreeList;
 import org.apache.jetspeed.aggregator.PortletContent;
-import org.apache.jetspeed.aggregator.PortletRenderer;
 import org.apache.jetspeed.cache.ContentCacheKey;
 import org.apache.jetspeed.util.DOMUtils;
 import org.apache.jetspeed.util.DefaultKeyValue;
@@ -42,7 +41,6 @@
     private int expiration;
     private String title;
     private String contentType;
-    private PortletRenderer renderer;
     
     /**
      * The list container for all contributed head elements from this portlet content.
@@ -52,16 +50,16 @@
     
     PortletContentImpl()
     {
-        init();
+        cw = new CharArrayWriter();
+        writer = new PrintWriter(cw);
     }
     
-    PortletContentImpl(PortletRenderer renderer, ContentCacheKey cacheKey, int expiration, String title)
+    PortletContentImpl(ContentCacheKey cacheKey, int expiration, String title)
     {
-        this.renderer = renderer;
+        this();
         this.cacheKey = cacheKey;
         this.expiration = expiration;
         this.title = title;
-        init();
     }
 
     public PrintWriter getWriter()
@@ -69,12 +67,6 @@
         return writer;
     }
 
-    public void init()
-    {
-        cw = new CharArrayWriter();
-        writer = new PrintWriter(cw);
-    }
-
     public void release()
     {
         if (writer != null)
@@ -84,6 +76,7 @@
         }
         cw = null;
         writer = null;
+        headElements = null;
     }
 
     public String toString()
@@ -109,13 +102,6 @@
         return complete;
     }
 
-    void setComplete(boolean state, boolean notify)
-    {
-        if (renderer != null && notify)
-            renderer.notifyContentComplete(this);
-        this.complete = state;
-    }
-    
     public String getContent()
     {
         return toString();
@@ -130,13 +116,7 @@
      */
     public void complete()
     {
-       setComplete(true, true);
-    }
-    
-    // error case, don't notify 
-    public void completeWithError()
-    {
-        setComplete(true, false);
+        this.complete = true;
     }
     
     public ContentCacheKey getCacheKey()
@@ -179,7 +159,8 @@
         if (!complete)
         {
             resetBuffer();
-            // TODO: clear headers
+            headElements = null;
+            // TODO: clear other (normal) headers
         }
     }
     
@@ -264,5 +245,4 @@
         
         return headElems;
     }
-    
 }
\ No newline at end of file

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=765538&r1=765537&r2=765538&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 Thu Apr 16 09:33:58 2009
@@ -320,7 +320,7 @@
         {
             title = portletWindow.getPortletDefinition().getPortletName();
         }
-        return new PortletContentImpl(this, cacheKey, expirationCache, title);
+        return new PortletContentImpl(cacheKey, expirationCache, title);
     }
     
     protected RenderingJob buildRenderingJob( PortletWindow portletWindow, 
@@ -399,7 +399,7 @@
         return true;
     }
  
-    protected void addToCache(PortletContent content)
+    protected void addToCache(RequestContext context, PortletContent content)
     {
         CacheElement cachedElement = portletContentCache.createElement(content.getCacheKey(), content);
         if (content.getExpiration() == -1)
@@ -412,14 +412,16 @@
             cachedElement.setTimeToIdleSeconds(content.getExpiration());
             cachedElement.setTimeToLiveSeconds(content.getExpiration());
         }
-        portletContentCache.put(cachedElement);        
+        portletContentCache.put(cachedElement);
+        context.getPortalURL().getNavigationalState().registerPortletContentCachedForPublicRenderParameters(context, content);
     }    
     
-    public void notifyContentComplete(PortletContent content)
+    public void notifyContentComplete(RequestContext context, PortletWindow window)
     {
+        PortletContent content = window.getFragment().getPortletContent();
         if (content.getExpiration() != 0)
         {
-            addToCache(content);
+            addToCache(context, content);
         }
     }
     

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java Thu Apr 16 09:33:58 2009
@@ -97,6 +97,11 @@
         this.window = window;
         this.expirationCache = expirationCache;
     }
+    
+    public PortletRenderer getRenderer()
+    {
+        return renderer;
+    }
 
     /**
      * Sets portlet timout in milliseconds.
@@ -219,13 +224,10 @@
             {
                 synchronized (fragment.getPortletContent())
                 {
-                    if (fragment.getOverriddenContent() != null)
-                    {
-                        fragment.getPortletContent().completeWithError();
-                    }
-                    else
+                    fragment.getPortletContent().complete();
+                    if (fragment.getOverriddenContent() == null)
                     {
-                        fragment.getPortletContent().complete();
+                        renderer.notifyContentComplete(requestContext, window);
                     }
                 }
             }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java Thu Apr 16 09:33:58 2009
@@ -17,17 +17,22 @@
 package org.apache.jetspeed.container.state.impl;
 
 import java.io.UnsupportedEncodingException;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
 import javax.portlet.PortletMode;
 import javax.portlet.WindowState;
+import javax.servlet.http.HttpSession;
 import javax.xml.namespace.QName;
 
 import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.aggregator.PortletContent;
+import org.apache.jetspeed.cache.ContentCacheKey;
 import org.apache.jetspeed.cache.JetspeedContentCache;
 import org.apache.jetspeed.container.state.MutableNavigationalState;
+import org.apache.jetspeed.container.state.NavigationalState;
 import org.apache.jetspeed.container.url.PortalURL;
 import org.apache.jetspeed.om.portlet.PortletApplication;
 import org.apache.jetspeed.request.RequestContext;
@@ -67,6 +72,35 @@
         }
     }
     
+    private static boolean changedParameterValues(String[] requestValues, String[] sessionValues)
+    {
+        if ((requestValues == null) || (sessionValues == null) || (requestValues.length != sessionValues.length))
+        {
+            return true;
+        }
+        for (int ix = 0; ix < requestValues.length; ix++)
+        {
+            if (!requestValues[ix].equals(sessionValues[ix]))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static void removeFromCache(RequestContext context, String id, JetspeedContentCache cache)
+    {
+        if (cache != null)
+        {
+            ContentCacheKey cacheKey = cache.createCacheKey(context, id);
+            if (cache.isKeyInCache(cacheKey))
+            {
+                cache.remove(cacheKey);
+            }
+            cache.invalidate(context);
+        }
+    }
+    
     protected boolean resolvePortletWindows(RequestContext requestContext)
     {
         boolean targetResolved = true;
@@ -147,7 +181,87 @@
         }
         requestStates.setPublicRenderParametersMap(map);
     }
-       
+
+    @SuppressWarnings("unchecked")
+    protected void syncPublicRequestParameters(RequestContext context, boolean transientNavState)
+    {
+        Map<QName, ValuesAndWindowUsage> publicRenderParametersMap = null;
+        
+        // sync public render parameters if not a transient NavState request
+        if (!transientNavState && requestStates.getPublicRenderParametersMap() != null)
+        {
+            HttpSession session = context.getRequest().getSession(true);
+            publicRenderParametersMap = (Map<QName, ValuesAndWindowUsage>)session.getAttribute(NavigationalState.PRP_SESSION_KEY);
+            
+            if (publicRenderParametersMap == null)
+            {
+                publicRenderParametersMap = Collections.synchronizedMap(new HashMap<QName, ValuesAndWindowUsage>());
+                session.setAttribute(NavigationalState.PRP_SESSION_KEY, publicRenderParametersMap);
+            }
+
+            for (Iterator<Map.Entry<QName, String[]>> iter = requestStates.getPublicRenderParametersMap().entrySet()
+                                                                          .iterator(); iter.hasNext();)
+            {
+                Map.Entry<QName, String[]> entry = iter.next();
+                ValuesAndWindowUsage vawu = publicRenderParametersMap.get(entry.getKey());
+                if (vawu == null || changedParameterValues(entry.getValue(), vawu.getValues()))
+                {
+                    if (vawu != null && vawu.getWindowIds() != null)
+                    {
+                        for (String windowId : vawu.getWindowIds())
+                        {
+                            removeFromCache(context, windowId, cache);
+                        }
+                        for (String pageId : vawu.getPageIds())
+                        {
+                            removeFromCache(context, pageId, decorationCache);
+                        }
+                    }
+                    if (entry.getValue() == null)
+                    {
+                        iter.remove();
+                        publicRenderParametersMap.remove(entry.getKey());
+                    }
+                    else if (vawu == null)
+                    {
+                        publicRenderParametersMap.put(entry.getKey(), new ValuesAndWindowUsage(entry.getValue()));
+                    }
+                    else
+                    {
+                        vawu.setValues(entry.getValue());
+                    }
+                }
+            }
+        }
+        
+        if (publicRenderParametersMap == null)
+        {
+            HttpSession session = context.getRequest().getSession(false);
+            if (session != null)
+            {
+                publicRenderParametersMap = (Map<QName, ValuesAndWindowUsage>)session.getAttribute(NavigationalState.PRP_SESSION_KEY);
+            }
+        }
+        
+        if (publicRenderParametersMap != null && !publicRenderParametersMap.isEmpty())
+        {
+            Map<QName, String[]> map = requestStates.getPublicRenderParametersMap();
+            if (map == null)
+            {
+                map = new HashMap<QName, String[]>();
+            }
+            for (Map.Entry<QName, ValuesAndWindowUsage> entry : publicRenderParametersMap.entrySet())
+            {
+                if (!map.containsKey(entry.getKey()))
+                {
+                    map.put(entry.getKey(), entry.getValue().getValues());
+                }
+            }
+            requestStates.setPublicRenderParametersMap(map);
+        }
+    }
+ 
+    
     protected void resetRequestPortletWindowPublicRenderParameters()
     {
         for (PortletWindowRequestNavigationalState state : requestStates.getPortletWindowRequestNavigationalStates().values())
@@ -443,6 +557,11 @@
                 {
                     Map<String, String[]> targets = new HashMap<String, String[]>();
                     Map<QName, String[]> qtargets = new HashMap<QName, String[]>();
+                    Map<QName, String[]> rsPrpMap = requestStates.getPublicRenderParametersMap();
+                    if (rsPrpMap == null)
+                    {
+                        rsPrpMap = new HashMap<QName,String[]>();
+                    }
                     for (Map.Entry<String,String[]> entry : publicRenderParametersMap.entrySet())
                     {
                         QName qname = targetState.getPublicRenderParameterQNameByIdentifier(entry.getKey());
@@ -452,14 +571,18 @@
                             targets.put(entry.getKey(),entry.getValue());
                             if (entry.getValue() == null)
                             {
-                                requestStates.getPublicRenderParametersMap().remove(qname);
+                                rsPrpMap.remove(qname);
                             }
                             else
                             {
-                                requestStates.getPublicRenderParametersMap().put(qname, entry.getValue());
+                                rsPrpMap.put(qname, entry.getValue());
                             }
                         }
                     }
+                    if (!rsPrpMap.isEmpty())
+                    {
+                        requestStates.setPublicRenderParametersMap(rsPrpMap);
+                    }
                     targetState.setTargetPublicRenderParametersMap(targets);
                     // now symc with the requestStates publicParametersMap and other possible targetted states
                     
@@ -625,4 +748,36 @@
     {
         return requestStates.getWindowIdIterator();
     }
+    
+    @SuppressWarnings("unchecked")
+    public void registerPortletContentCachedForPublicRenderParameters(RequestContext context, PortletContent content)
+    {
+        String windowId = content.getCacheKey().getWindowId();
+        PortletWindowRequestNavigationalState state = requestStates.getPortletWindowNavigationalState(windowId);
+        if (state != null && state.getPublicRenderParametersMap() != null && !state.getPublicRenderParametersMap().isEmpty())
+        {
+            HttpSession session = context.getRequest().getSession(true);
+            
+            synchronized (session)
+            {
+                String pageId = context.getPage().getId();
+                Map<QName, ValuesAndWindowUsage> publicRenderParametersMap = (Map<QName, ValuesAndWindowUsage>)session.getAttribute(NavigationalState.PRP_SESSION_KEY);
+                if (publicRenderParametersMap == null)
+                {
+                    // should not be possible, because having publicRenderParameters implies the publicRenderParametersMap already must have been created
+                    publicRenderParametersMap = Collections.synchronizedMap(new HashMap<QName, ValuesAndWindowUsage>());
+                    session.setAttribute(PRP_SESSION_KEY, publicRenderParametersMap);
+                }
+                for (String identifier : state.getPublicRenderParametersMap().keySet())
+                {
+                    QName qname = state.getPublicRenderParameterQNameByIdentifier(identifier);
+                    ValuesAndWindowUsage usage = publicRenderParametersMap.get(qname);
+                    if (usage != null)
+                    {
+                        usage.registerWindowUsage(pageId, windowId);
+                    }
+                }
+            }
+        }
+    }
 }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PathNavigationalState.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PathNavigationalState.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PathNavigationalState.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PathNavigationalState.java Thu Apr 16 09:33:58 2009
@@ -38,7 +38,7 @@
 
     public boolean sync(RequestContext context)
     {        
-        HttpSession session = context.getRequest().getSession();
+        HttpSession session = context.getRequest().getSession(false);
         Object syncLock = session;
         if (syncLock == null)
         {
@@ -48,6 +48,7 @@
         {
             boolean result = resolvePortletWindows(context);
             resolvePublicParametersMap();
+            syncPublicRequestParameters(context, false);
             resetRequestPortletWindowPublicRenderParameters();
             return result;
         }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PortletWindowSessionNavigationalStates.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PortletWindowSessionNavigationalStates.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PortletWindowSessionNavigationalStates.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/PortletWindowSessionNavigationalStates.java Thu Apr 16 09:33:58 2009
@@ -24,7 +24,6 @@
 
 import javax.portlet.PortletMode;
 import javax.portlet.WindowState;
-import javax.xml.namespace.QName;
 
 import org.apache.jetspeed.cache.ContentCacheKey;
 import org.apache.jetspeed.cache.JetspeedContentCache;
@@ -46,7 +45,6 @@
 
     private final boolean storeParameters;
     private Map<String, PageState> pageStates = new HashMap<String, PageState>();
-    private Map<QName, ValuesAndWindowUsage> publicRenderParametersMap = Collections.synchronizedMap(new HashMap<QName, ValuesAndWindowUsage>());
 
     public PortletWindowSessionNavigationalStates(boolean storeParameters)
     {
@@ -114,69 +112,10 @@
                         ((PortletWindowExtendedNavigationalState)sessionState).resetDecoratorActionEncodings();
                     }
                 }
-                syncPublicRequestParameters(context, requestStates, false, cache, decorationCache);
             }      
         } 
     }
     
-    public void syncPublicRequestParameters(RequestContext context, PortletWindowRequestNavigationalStates requestStates, 
-                                               boolean transientNavState, 
-                                               JetspeedContentCache cache, JetspeedContentCache decorationCache)
-    {
-        // sync session states public render parameters
-        if (!transientNavState && requestStates.getPublicRenderParametersMap() != null)
-        {            
-            for (Iterator<Map.Entry<QName, String[]>> iter = requestStates.getPublicRenderParametersMap().entrySet().iterator(); iter.hasNext(); )
-            {
-                Map.Entry<QName, String[]> entry = iter.next();
-                ValuesAndWindowUsage vawu = publicRenderParametersMap.get(entry.getKey());
-                if (vawu == null || changedParameterValues(entry.getValue(), vawu.getValues()))
-                {
-                    if (vawu != null && vawu.getWindowIds() != null)
-                    {
-                        for (String windowId : vawu.getWindowIds())
-                        {
-                            removeFromCache(context, windowId, cache);
-                        }
-                        for (String pageId : vawu.getPageIds())
-                        {
-                            removeFromCache(context, pageId, decorationCache);
-                        }
-                    }
-                    if (entry.getValue() == null)
-                    {
-                        iter.remove();
-                    }
-                    else if (vawu == null)
-                    {
-                        publicRenderParametersMap.put(entry.getKey(), new ValuesAndWindowUsage(entry.getValue()));
-                    }
-                    else
-                    {
-                        vawu.setValues(entry.getValue());
-                    }
-                }
-            }
-        }
-        
-        if (!publicRenderParametersMap.isEmpty())
-        {
-            Map<QName, String[]> map = requestStates.getPublicRenderParametersMap();
-            if (map == null)
-            {
-                map = new HashMap<QName, String[]>();
-            }
-            for (Map.Entry<QName, ValuesAndWindowUsage> entry : publicRenderParametersMap.entrySet())
-            {
-                if (!map.containsKey(entry.getKey()))
-                {
-                    map.put(entry.getKey(), entry.getValue().getValues());
-                }
-            }
-            requestStates.setPublicRenderParametersMap(map);
-        }
-    }
-    
     public void sync(RequestContext context, Page page, 
                      PortletWindowRequestNavigationalStates requestStates, 
                      JetspeedContentCache cache, JetspeedContentCache decorationCache)
@@ -327,7 +266,6 @@
                 }
             }
         }        
-        syncPublicRequestParameters(context, requestStates, false, cache, decorationCache);
     }
     
     private boolean modeChanged(PortletMode req, PortletMode ses)

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/state/impl/SessionNavigationalState.java Thu Apr 16 09:33:58 2009
@@ -59,7 +59,7 @@
     
     public boolean sync(RequestContext context)
     {
-        HttpSession session = context.getRequest().getSession();
+        HttpSession session = context.getRequest().getSession(false);
         Object syncLock = session;
         if (syncLock == null)
         {
@@ -109,14 +109,6 @@
                         }
                     }
                 }
-                if ( session != null )
-                {
-                    PortletWindowSessionNavigationalStates sessionStates = (PortletWindowSessionNavigationalStates)session.getAttribute(NavigationalState.NAVSTATE_SESSION_KEY);
-                    if ( sessionStates != null )
-                    {
-                        sessionStates.syncPublicRequestParameters(context, requestStates, true, cache, decorationCache);
-                    }
-                }
             }
             else
             {
@@ -144,8 +136,8 @@
                     }
                 }
             }
-            
-            this.resetRequestPortletWindowPublicRenderParameters();
+            syncPublicRequestParameters(context, transientNavState);
+            resetRequestPortletWindowPublicRenderParameters();
             
             return result;
         }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/MockRenderJob.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/MockRenderJob.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/MockRenderJob.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/aggregator/MockRenderJob.java Thu Apr 16 09:33:58 2009
@@ -107,6 +107,15 @@
         // TODO Auto-generated method stub
         return window;
     }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.aggregator.RenderingJob#getRenderer()
+     */
+    public PortletRenderer getRenderer()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
     /* (non-Javadoc)
      * @see org.apache.jetspeed.aggregator.RenderingJob#getPortletContent()

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=765538&r1=765537&r2=765538&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 Thu Apr 16 09:33:58 2009
@@ -56,12 +56,6 @@
     void complete();
     
     /**
-     * Notify that this content is complete with error
-     *
-     */
-    void completeWithError();
-    
-    /**
      * Get a writer to the content to stream content into this object
      * @return
      */

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletRenderer.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletRenderer.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletRenderer.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/PortletRenderer.java Thu Apr 16 09:33:58 2009
@@ -21,6 +21,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.jetspeed.container.PortletWindow;
 import org.apache.jetspeed.om.page.ContentFragment;
 import org.apache.jetspeed.request.RequestContext;
 
@@ -82,10 +83,10 @@
     /**
      * Notify that content completed by worker jobs 
      * So that renderer can update its state
-     * 
-     * @param content
+     * @param context
+     * @param window
      */
-    public void notifyContentComplete(PortletContent content);
+    public void notifyContentComplete(RequestContext context, PortletWindow window);
 
     PortletTrackingManager getPortletTrackingManager();
     

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/RenderingJob.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/RenderingJob.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/RenderingJob.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/aggregator/RenderingJob.java Thu Apr 16 09:33:58 2009
@@ -36,6 +36,8 @@
 {
     void execute();
     
+    PortletRenderer getRenderer();
+    
     PortletWindow getWindow(); 
 
     PortletContent getPortletContent();

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/state/NavigationalState.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/state/NavigationalState.java?rev=765538&r1=765537&r2=765538&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/state/NavigationalState.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/state/NavigationalState.java Thu Apr 16 09:33:58 2009
@@ -24,6 +24,7 @@
 import javax.portlet.WindowState;
 
 import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.aggregator.PortletContent;
 import org.apache.jetspeed.container.PortletWindow;
 import org.apache.jetspeed.container.url.PortalURL;
 
@@ -40,7 +41,15 @@
  */
 public interface NavigationalState 
 {
+    /**
+     * Session key for storing the PortletWindowSessionNavigationalStates
+     */
     public static final String NAVSTATE_SESSION_KEY = "org.apache.jetspeed.navstate";
+    
+    /**
+     * Session key for storing the PublicRenderParametersMap
+     */
+    public static final String PRP_SESSION_KEY = "org.apache.jetspeed.prp";
 
     /*
      * Decodes an encoded Navigational State as retrieved from a Portal URL.
@@ -236,4 +245,6 @@
      * @return true if render parameters will be saved in the Session
      */
     boolean isRenderParameterStateFull();
+    
+    void registerPortletContentCachedForPublicRenderParameters(RequestContext context, PortletContent content);
 }



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