01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: */
19:
20: package de.schlund.pfixxml.exceptionprocessor;
21:
22: import java.io.IOException;
23: import java.util.Properties;
24:
25: import javax.servlet.ServletContext;
26: import javax.servlet.ServletException;
27: import javax.servlet.http.HttpServletRequest;
28: import javax.servlet.http.HttpServletResponse;
29:
30: import de.schlund.pfixxml.PfixServletRequest;
31:
32: /**
33: * Every <code>ExceptionProcessor</code> that is configured to process exceptions
34: * via the <code>processor</code>-attribute in the <code>exception</code>-tag of the
35: * pustefix servlet-configuration file, must implement this interface.
36: * <br />
37: * Classes that implement this interface <b>must</b> provide a no-args constructor,
38: * and the {@link #processException processException}-method should be thread-safe.
39: * <br />
40: * Look at the
41: * {@link processException(Throwable,ExceptionConfig,PfixServletRequest,ServletContext,HttpServletRequest,HttpServletResponse res) processException}-method
42: * for further details how to implement this interface.
43: *
44: * If the implementation doesn't output a response, a ServletException is thrown.
45: *
46: * @author <a href="mailto:benjamin@schlund.de">Benjamin Reitzammer</a>
47: * @version $Id: ExceptionProcessor.java 3302 2007-11-30 16:56:16Z jenstl $
48: */
49: public interface ExceptionProcessor {
50:
51: /**
52: * If implementing classes forward the request, in which an exception occurred, they
53: * should make sure, to save the occurred exception with
54: * {@link de.schlund.pfixxml.PfixServletRequest#setLastException(Throwable) PfixServletRequest.setLastException()}.
55: * This is needed, so that {@link de.schlund.pfixxml.ServletManager ServletManager}
56: * can prevent infinite forwarding loops.
57: *
58: * @param exception is not allowed to be <code>null</code>
59: * @param exConfig the {@link ExceptionConfig ExceptionConfig}-instance that
60: * corresponds to the type of the <code>exception</code>-param that should
61: * be handled by this <code>SimpleExceptionProcessor</code>-object
62: * @param pfixReq the pustefix-specific request object of the current request, during
63: * which the exception occurred
64: * @param servletContext the {@link javax.servlet.ServletContext ServletContext}-instance
65: * in which the request is answered
66: * @param req the {@link javax.servlet.http.HttpServletRequest HttpServletRequest} of the current request
67: * @param res the {@link javax.servlet.http.HttpServletResponse HttpServletResponse} of the current request
68: * @param properties
69: */
70: public void processException(Throwable exception,
71: ExceptionConfig exConfig, PfixServletRequest pfixReq,
72: ServletContext servletContext, HttpServletRequest req,
73: HttpServletResponse res, Properties properties)
74: throws IOException, ServletException;
75:
76: }
|