You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by jm...@apache.org on 2003/07/09 01:53:28 UTC
cvs commit: jakarta-turbine-3/src/java/org/apache/turbine Turbine.java
jmcnally 2003/07/08 16:53:28
Modified: src/java/org/apache/turbine/exception
DefaultExceptionHandler.java *
src/java/org/apache/turbine/exception/DefaultExceptionHandler.java
- handleException: default to attempting to clean
up pull tool resources and execute security logic
which occurs in CleanUpValve; if the application
does not use the pull service, it will need to
define an alternate error handler *
src/java/org/apache/turbine/Turbine.java -
handleException: execute the error handler in all
cases. broke worse case logic in handleException
into a new private method
handleExceptionHandlerException so that it can be
reused.
src/java/org/apache/turbine Turbine.java *
src/java/org/apache/turbine/exception/DefaultExceptionHandler.java
- handleException: default to attempting to clean
up pull tool resources and execute security logic
which occurs in CleanUpValve; if the application
does not use the pull service, it will need to
define an alternate error handler *
src/java/org/apache/turbine/Turbine.java -
handleException: execute the error handler in all
cases. broke worse case logic in handleException
into a new private method
handleExceptionHandlerException so that it can be
reused.
Log:
Revision Changes Path
1.6 +12 -4 jakarta-turbine-3/src/java/org/apache/turbine/exception/DefaultExceptionHandler.java
Index: DefaultExceptionHandler.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/exception/DefaultExceptionHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DefaultExceptionHandler.java 10 Sep 2002 14:55:19 -0000 1.5
+++ DefaultExceptionHandler.java 8 Jul 2003 23:53:25 -0000 1.6
@@ -59,6 +59,7 @@
import org.apache.turbine.Turbine;
import org.apache.turbine.ValveContext;
import org.apache.turbine.pipeline.DefaultTargetValve;
+import org.apache.turbine.pipeline.CleanUpValve;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
@@ -83,9 +84,16 @@
data.setStackTrace( ExceptionUtils.getStackTrace( throwable ), throwable );
- // Simulate a minimal Pipeline here to run the target.
-
- new DefaultTargetValve().invoke(data, new NullValveContext());
+ try
+ {
+ // Simulate a minimal Pipeline here to run the target.
+ new DefaultTargetValve().invoke(data, new NullValveContext());
+ }
+ finally
+ {
+ // generally pull tools will need to be cleaned up.
+ new CleanUpValve().invoke(data, new NullValveContext());
+ }
}
/**
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
1.44 +79 -68 jakarta-turbine-3/src/java/org/apache/turbine/Turbine.java
Index: Turbine.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/Turbine.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- Turbine.java 12 Sep 2002 15:57:06 -0000 1.43
+++ Turbine.java 8 Jul 2003 23:53:26 -0000 1.44
@@ -372,81 +372,92 @@
// make sure that the stack trace makes it the log
log.error("handleException: " + t.getMessage(), t);
- if ( INTEGRATED.equals(configuration.getString(MODE)) ||
- req.getAttribute(INTEGRATED_REQUEST_KEY) != null )
+ try
{
- // leave error handling to the invoking application
- throw new ServletException(t);
+ exceptionHandler.handleException( data, t );
}
- else
+ catch (ServletException e)
{
- try
+ if ( INTEGRATED.equals(configuration.getString(MODE)) ||
+ req.getAttribute(INTEGRATED_REQUEST_KEY) != null )
{
- exceptionHandler.handleException( data, t );
+ // let the invoking application deal with it
+ throw e;
}
- catch (Exception f)
+ else
{
- log.error( "Failed to dispatch to exception handler", f );
-
- String mimeType = "text/plain";
-
- try
- {
- // TODO: Make output formatting more flexible --
- // what's below was to remove the use of ECS.
- String trace = ExceptionUtils.getStackTrace(t);
- data.setStackTrace(trace,t);
- data.getResponse().setContentType(data.getContentType());
- data.getResponse().setStatus(data.getStatusCode());
- data.getOut().print("<pre>\n" + trace + "\n</pre>");
- }
- // Catch this one because it occurs if some code hasn't been
- // completely re-compiled after a change..
- catch ( java.lang.NoSuchFieldError e )
- {
- try
- {
- data.getResponse().setContentType( mimeType );
- data.getResponse().setStatus ( 200 );
- }
- catch (Exception ignored) {}
-
- try
- {
- data.getOut().print ("java.lang.NoSuchFieldError: " +
- "Please recompile all of your " +
- "source code.");
- }
- catch (IOException ignored) {}
+ handleExceptionHandlerException(data, res, e, t);
+ }
+ }
+ catch (Exception f)
+ {
+ handleExceptionHandlerException(data, res, f, t);
+ }
+ }
- log.info ( data.getStackTrace() );
- log.error ( e.getMessage(), e );
- }
- // Attempt to do *something* at this point...
- catch ( Throwable reallyScrewedNow )
- {
- StringBuffer msg = new StringBuffer();
- msg.append("Horrible Exception: ");
- if (data != null)
- {
- msg.append(data.getStackTrace());
- }
- else
- {
- msg.append(t);
- }
- try
- {
- res.setContentType( mimeType );
- res.setStatus ( 200 );
- res.getWriter().print (msg.toString());
- }
- catch (Exception ignored)
- {
- }
- log.error(reallyScrewedNow.getMessage(), reallyScrewedNow);
- }
+ private void handleExceptionHandlerException(RunData data,
+ HttpServletResponse res,
+ Exception f,
+ Throwable t)
+ {
+ log.error( "Failed to dispatch to exception handler", f );
+
+ String mimeType = "text/plain";
+ try
+ {
+ // TODO: Make output formatting more flexible --
+ // what's below was to remove the use of ECS.
+ String trace = ExceptionUtils.getStackTrace(t);
+ data.setStackTrace(trace,t);
+ res.setContentType(data.getContentType());
+ res.setStatus(data.getStatusCode());
+ data.getOut().print("<pre>\n" + trace + "\n</pre>");
+ }
+ // Catch this one because it occurs if some code hasn't been
+ // completely re-compiled after a change..
+ catch ( java.lang.NoSuchFieldError e )
+ {
+ try
+ {
+ res.setContentType( mimeType );
+ res.setStatus ( 200 );
+ }
+ catch (Exception ignored) {}
+
+ try
+ {
+ data.getOut().print ("java.lang.NoSuchFieldError: " +
+ "Please recompile all of your " +
+ "source code.");
+ }
+ catch (IOException ignored) {}
+
+ log.info ( data.getStackTrace() );
+ log.error ( e.getMessage(), e );
+ }
+ // Attempt to do *something* at this point...
+ catch ( Throwable reallyScrewedNow )
+ {
+ StringBuffer msg = new StringBuffer();
+ msg.append("Horrible Exception: ");
+ if (data != null)
+ {
+ msg.append(data.getStackTrace());
+ }
+ else
+ {
+ msg.append(t);
+ }
+ try
+ {
+ res.setContentType( mimeType );
+ res.setStatus ( 200 );
+ res.getWriter().print (msg.toString());
+ }
+ catch (Exception ignored)
+ {
}
+ log.error(reallyScrewedNow.getMessage(), reallyScrewedNow);
}
}
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
No revision
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org