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