001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ValveBase.java,v 1.4 2002/01/25 20:12:27 amyroh Exp $
003: * $Revision: 1.4 $
004: * $Date: 2002/01/25 20:12:27 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: * [Additional notices, if required by prior licensing conditions]
061: *
062: */
063:
064: package org.apache.catalina.valves;
065:
066: import java.io.IOException;
067: import javax.servlet.ServletException;
068: import org.apache.catalina.Contained;
069: import org.apache.catalina.Container;
070: import org.apache.catalina.Request;
071: import org.apache.catalina.Response;
072: import org.apache.catalina.Valve;
073: import org.apache.catalina.ValveContext;
074: import org.apache.catalina.util.StringManager;
075:
076: /**
077: * Convenience base class for implementations of the <b>Valve</b> interface.
078: * A subclass <strong>MUST</strong> implement an <code>invoke()</code>
079: * method to provide the required functionality, and <strong>MAY</strong>
080: * implement the <code>Lifecycle</code> interface to provide configuration
081: * management and lifecycle support.
082: *
083: * @author Craig R. McClanahan
084: * @version $Revision: 1.4 $ $Date: 2002/01/25 20:12:27 $
085: */
086:
087: public abstract class ValveBase implements Contained, Valve {
088:
089: //------------------------------------------------------ Instance Variables
090:
091: /**
092: * The Container whose pipeline this Valve is a component of.
093: */
094: protected Container container = null;
095:
096: /**
097: * The debugging detail level for this component.
098: */
099: protected int debug = 0;
100:
101: /**
102: * Descriptive information about this Valve implementation. This value
103: * should be overridden by subclasses.
104: */
105: protected static String info = "org.apache.catalina.core.ValveBase/1.0";
106:
107: /**
108: * The string manager for this package.
109: */
110: protected final static StringManager sm = StringManager
111: .getManager(Constants.Package);
112:
113: //-------------------------------------------------------------- Properties
114:
115: /**
116: * Return the Container with which this Valve is associated, if any.
117: */
118: public Container getContainer() {
119:
120: return (container);
121:
122: }
123:
124: /**
125: * Set the Container with which this Valve is associated, if any.
126: *
127: * @param container The new associated container
128: */
129: public void setContainer(Container container) {
130:
131: this .container = container;
132:
133: }
134:
135: /**
136: * Return the debugging detail level for this component.
137: */
138: public int getDebug() {
139:
140: return (this .debug);
141:
142: }
143:
144: /**
145: * Set the debugging detail level for this component.
146: *
147: * @param debug The new debugging detail level
148: */
149: public void setDebug(int debug) {
150:
151: this .debug = debug;
152:
153: }
154:
155: /**
156: * Return descriptive information about this Valve implementation.
157: */
158: public String getInfo() {
159:
160: return (info);
161:
162: }
163:
164: //---------------------------------------------------------- Public Methods
165:
166: /**
167: * The implementation-specific logic represented by this Valve. See the
168: * Valve description for the normal design patterns for this method.
169: * <p>
170: * This method <strong>MUST</strong> be provided by a subclass.
171: *
172: * @param request The servlet request to be processed
173: * @param response The servlet response to be created
174: * @param context The valve context used to invoke the next valve
175: * in the current processing pipeline
176: *
177: * @exception IOException if an input/output error occurs
178: * @exception ServletException if a servlet error occurs
179: */
180: public abstract void invoke(Request request, Response response,
181: ValveContext context) throws IOException, ServletException;
182:
183: }
|