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/05/07 02:48:32 UTC
svn commit: r772480 - in
/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed:
pipeline/valve/impl/ActionValveImpl.java request/
resource/ResourceValveImpl.java
Author: ate
Date: Thu May 7 00:48:31 2009
New Revision: 772480
URL: http://svn.apache.org/viewvc?rev=772480&view=rev
Log:
JS2-947: Properly handling container invocation errors like processAction throwing an unexcepted exception and displaying a meaningful message to the end user
See also: https://issues.apache.org/jira/browse/JS2-947
Solving this issue by leveraging the new RequestDiagnostics feature, see JS2-992
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/ (props changed)
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/resource/ResourceValveImpl.java
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java?rev=772480&r1=772479&r2=772480&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java Thu May 7 00:48:31 2009
@@ -16,10 +16,8 @@
*/
package org.apache.jetspeed.pipeline.valve.impl;
-import java.io.IOException;
import java.util.Collection;
-import javax.portlet.PortletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -39,8 +37,9 @@
import org.apache.jetspeed.pipeline.valve.ActionValve;
import org.apache.jetspeed.pipeline.valve.ValveContext;
import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.request.RequestDiagnostics;
+import org.apache.jetspeed.request.RequestDiagnosticsFactory;
import org.apache.pluto.container.PortletContainer;
-import org.apache.pluto.container.PortletContainerException;
/**
* <p>
@@ -83,6 +82,7 @@
public void invoke(RequestContext request, ValveContext context) throws PipelineException
{
boolean responseCommitted = false;
+ boolean failure = false;
try
{
PortletWindow actionWindow = request.getActionWindow();
@@ -110,30 +110,20 @@
request.setAttribute(PortalReservedParameters.PIPELINE, null); // clear the pipeline
}
}
- catch (PortletContainerException e)
- {
- log.error("Unable to retrieve portlet container!", e);
- throw new PipelineException("Unable to retrieve portlet container!", e);
- }
- catch (PortletException e)
- {
- log.warn("Unexpected PortletException in ActionValveImpl", e);
- // throw new PipelineException("Unexpected PortletException in ActionValveImpl", e);
-
- }
- catch (IOException e)
- {
- log.error("Unexpected IOException in ActionValveImpl", e);
- // throw new PipelineException("Unexpected IOException in ActionValveImpl", e);
- }
catch (IllegalStateException e)
{
log.error("Illegal State Exception. Response was written to in Action Phase", e);
+ failure = true;
responseCommitted = true;
}
catch (Throwable t)
{
- log.error("Unknown exception processing Action", t);
+ failure = true;
+ RequestDiagnostics rd = RequestDiagnosticsFactory.newRequestDiagnostics();
+ RequestDiagnosticsFactory.fillInPortletWindow(rd, request.getActionWindow(), t);
+ PipelineException pe = new PipelineException(t);
+ pe.setRequestDiagnostics(rd);
+ throw pe;
}
finally
{
@@ -143,13 +133,12 @@
{
log.info("Action processed and response committed (pipeline processing stopped)");
}
- else
+ else if (!failure)
{
// Pass control to the next Valve in the Pipeline
context.invokeNext(request);
}
}
-
}
protected void clearPortletCacheForPage(RequestContext request, PortletWindow actionWindow)
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/request/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu May 7 00:48:31 2009
@@ -1,2 +1,2 @@
-target
+target
surefire*.properties
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/resource/ResourceValveImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/resource/ResourceValveImpl.java?rev=772480&r1=772479&r2=772480&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/resource/ResourceValveImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/resource/ResourceValveImpl.java Thu May 7 00:48:31 2009
@@ -16,22 +16,17 @@
*/
package org.apache.jetspeed.resource;
-import java.io.IOException;
-
-import javax.portlet.PortletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.jetspeed.PortalReservedParameters;
-import org.apache.jetspeed.om.page.Fragment;
import org.apache.jetspeed.pipeline.PipelineException;
import org.apache.jetspeed.pipeline.valve.AbstractValve;
import org.apache.jetspeed.pipeline.valve.ValveContext;
import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.request.RequestDiagnostics;
+import org.apache.jetspeed.request.RequestDiagnosticsFactory;
import org.apache.pluto.container.PortletContainer;
-import org.apache.pluto.container.PortletContainerException;
import org.apache.jetspeed.container.PortletWindow;
/**
@@ -44,8 +39,6 @@
*/
public class ResourceValveImpl extends AbstractValve
{
-
- private static final Logger log = LoggerFactory.getLogger(ResourceValveImpl.class);
private PortletContainer container;
public ResourceValveImpl(PortletContainer container)
@@ -64,7 +57,6 @@
{
try
{
- Fragment fragment = resourceWindow.getFragment();
HttpServletRequest servletRequest = request.getRequest();
HttpServletResponse servletResponse = request.getResponse();
resourceWindow.setAttribute(PortalReservedParameters.PORTLET_CONTAINER_INVOKER_USE_FORWARD, Boolean.TRUE);
@@ -77,27 +69,13 @@
container.doServeResource(resourceWindow, servletRequest, servletResponse);
}
}
- catch (PortletContainerException e)
- {
- log.error("Unable to retrieve portlet container!", e);
- throw new PipelineException("Unable to retrieve portlet container!", e);
- }
- catch (PortletException e)
- {
- log.warn("Unexpected PortletException", e);
-
- }
- catch (IOException e)
- {
- log.error("Unexpected IOException", e);
- }
- catch (IllegalStateException e)
- {
- log.error("Unexpected IllegalStateException.", e);
- }
- catch (Exception t)
+ catch (Exception e)
{
- log.error("Unexpected Exception", t);
+ RequestDiagnostics rd = RequestDiagnosticsFactory.newRequestDiagnostics();
+ RequestDiagnosticsFactory.fillInPortletWindow(rd, resourceWindow, e);
+ PipelineException pe = new PipelineException(e);
+ pe.setRequestDiagnostics(rd);
+ throw pe;
}
}
else
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org