Author: taylor
Date: Thu Jan 25 09:56:41 2007
New Revision: 499871

URL: http://svn.apache.org/viewvc?view=rev&rev=499871
Log:
When servlet containers are clustered, ActionValveImpl can throw 
NullPointerException
https://issues.apache.org/jira/browse/JS2-646

patch from Woonsan Ko

Modified:
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java?view=diff&rev=499871&r1=499870&r2=499871
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java
 Thu Jan 25 09:56:41 2007
@@ -16,6 +16,7 @@
 package org.apache.jetspeed.pipeline.valve.impl;
 
 import java.io.IOException;
+import java.util.HashMap;
 
 import javax.portlet.PortletException;
 import javax.servlet.http.HttpServletRequest;
@@ -25,8 +26,9 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.container.window.PortletWindowAccessor;
-import org.apache.jetspeed.messaging.PortletMessagingImpl;
 import org.apache.jetspeed.om.common.portlet.MutablePortletEntity;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentFragmentImpl;
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.pipeline.PipelineException;
@@ -84,6 +86,22 @@
             PortletWindow actionWindow = request.getActionWindow();
             if (actionWindow != null)
             {
+                // If portlet entity is null, try to refresh the actionWindow.
+                // Under some clustered environments, a cached portlet window 
could have null entity.
+                if (null == actionWindow.getPortletEntity())
+                {
+                    try 
+                    {
+                        Fragment fragment = 
request.getPage().getFragmentById(actionWindow.getId().toString());
+                        ContentFragment contentFragment = new 
ContentFragmentImpl(fragment, new HashMap());
+                        actionWindow = 
this.windowAccessor.getPortletWindow(contentFragment);
+                    } 
+                    catch (Exception e)
+                    {
+                        log.error("Failed to refresh action window.", e);
+                    }
+                }
+
                 initWindow(actionWindow, request);
                 HttpServletResponse response = 
request.getResponseForWindow(actionWindow);
                 HttpServletRequest requestForWindow = 
request.getRequestForWindow(actionWindow);



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

Reply via email to