taylor 2004/11/02 14:58:14
Modified: commons/src/java/org/apache/jetspeed/container
JetspeedContainerServlet.java
Log:
Handle errors for Velocity portlets
Revision Changes Path
1.18 +27 -17
jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/container/JetspeedContainerServlet.java
Index: JetspeedContainerServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/container/JetspeedContainerServlet.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- JetspeedContainerServlet.java 20 Aug 2004 05:06:41 -0000 1.17
+++ JetspeedContainerServlet.java 2 Nov 2004 22:58:13 -0000 1.18
@@ -216,8 +216,8 @@
}
PortletDefinition portletDefinition =
JetspeedPortletFactoryProxy.getCurrentPortletDefinition();
- Portlet portlet =
JetspeedPortletFactoryProxy.getPortlet(this.getServletConfig(), portletDefinition);
portletName = portletDefinition.getName();
+ Portlet portlet =
JetspeedPortletFactoryProxy.getPortlet(this.getServletConfig(), portletDefinition);
if (method == ContainerConstants.METHOD_ACTION)
{
@@ -236,7 +236,6 @@
// if we get this far we are home free
return;
-
}
catch (Throwable t)
{
@@ -249,30 +248,41 @@
{
errorTemplate = "/WEB-INF/templates/generic/html/error.vm";
}
- RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(errorTemplate);
- request.setAttribute("e", t);
- StringWriter stackTrace = new StringWriter();
- t.printStackTrace(new PrintWriter(stackTrace));
- request.setAttribute("stacktrace", stackTrace.toString());
- dispatcher.include(request, response);
-
+ if (null != context.getResource(errorTemplate))
+ {
+ RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(errorTemplate);
+ request.setAttribute("e", t);
+ StringWriter stackTrace = new StringWriter();
+ t.printStackTrace(new PrintWriter(stackTrace));
+ request.setAttribute("stacktrace", stackTrace.toString());
+ dispatcher.include(request, response);
+ }
+ else
+ {
+ displayPortletNotAvailableMessage(t, response, portletName);
+ }
}
- catch (Exception e)
+ catch (Throwable e)
{
- context.log(JCS + "Error rendering JetspeedContainerServlet error
page: " + e.toString(), e);
- PrintWriter directError = new PrintWriter(response.getWriter());
- directError.write("Error Rendering portlet: " + portletName + ": "
+ t.toString() + "\n\n");
- t.printStackTrace(directError);
- directError.close();
+ displayPortletNotAvailableMessage(t, response, portletName);
}
finally
{
t.printStackTrace();
}
}
-
}
+ private void displayPortletNotAvailableMessage(Throwable t, HttpServletResponse
response, String portletName)
+ throws IOException
+ {
+ getServletContext().log(JCS + "Error rendering JetspeedContainerServlet
error page: " + t.toString(), t);
+ PrintWriter directError = new PrintWriter(response.getWriter());
+ directError.write("Portlet is Not Available: " + portletName +
"<br/>Reason: " + t.getMessage());
+ //t.printStackTrace(directError);
+ directError.close();
+ }
+
/**
* In this application doGet and doPost are the same thing.
*
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]