jakarta.servlet.GenericFilter Maven / Gradle / Ivy
/*
* Copyright (c) 1997, 2023 Oracle and/or its affiliates and others.
* All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package jakarta.servlet;
import java.util.Enumeration;
import java.util.ResourceBundle;
/**
*
*
* Defines a generic, protocol-independent filter. To write an HTTP filter for use on the Web, extend
* {@link jakarta.servlet.http.HttpFilter} instead.
*
*
*
* GenericFilter
implements the Filter
and FilterConfig
interfaces.
* GenericFilter
may be directly extended by a filter, although it's more common to extend a
* protocol-specific subclass such as HttpFilter
.
*
*
* GenericFilter
makes writing filters easier. It provides simple versions of the lifecycle methods
* init
and destroy
and of the methods in the FilterConfig
interface.
*
*
* To write a generic filter, you need only override the abstract doFilter
method.
*
* @author Various
*
* @since Servlet 4.0
*/
public abstract class GenericFilter implements Filter, FilterConfig, java.io.Serializable {
private static final long serialVersionUID = 4060116231031076581L;
private static final String LSTRING_FILE = "jakarta.servlet.LocalStrings";
private static final ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
private transient FilterConfig config;
/**
*
*
* Does nothing. All of the filter initialization is done by one of the init
methods.
*
*
* @since Servlet 4.0
*/
public GenericFilter() {
}
/**
*
* Returns a String
containing the value of the named initialization parameter, or null
if the
* parameter does not exist. See {@link FilterConfig#getInitParameter}.
*
*
*
* This method is supplied for convenience. It gets the value of the named parameter from the servlet's
* ServletConfig
object.
*
* @param name a String
specifying the name of the initialization parameter
*
* @return String a String
containing the value of the initialization parameter
*
* @since Servlet 4.0
*
*/
@Override
public String getInitParameter(String name) {
FilterConfig fc = getFilterConfig();
if (fc == null) {
throw new IllegalStateException(lStrings.getString("err.filter_config_not_initialized"));
}
return fc.getInitParameter(name);
}
/**
*
* Returns the names of the filter's initialization parameters as an Enumeration
of String
* objects, or an empty Enumeration
if the filter has no initialization parameters. See
* {@link FilterConfig#getInitParameterNames}.
*
*
*
* This method is supplied for convenience. It gets the parameter names from the filter's FilterConfig
* object.
*
* @return Enumeration an enumeration of String
objects containing the names of the filter's initialization
* parameters
*
* @since Servlet 4.0
*/
@Override
public Enumeration getInitParameterNames() {
FilterConfig fc = getFilterConfig();
if (fc == null) {
throw new IllegalStateException(lStrings.getString("err.filter_config_not_initialized"));
}
return fc.getInitParameterNames();
}
/**
*
* Returns this servlet's {@link ServletConfig} object.
*
*
* @return FilterConfig the FilterConfig
object that initialized this filter
*
* @since Servlet 4.0
*/
public FilterConfig getFilterConfig() {
return config;
}
/**
*
* Returns a reference to the {@link ServletContext} in which this filter is running. See
* {@link FilterConfig#getServletContext}.
*
*
*
* This method is supplied for convenience. It gets the context from the filter's FilterConfig
object.
*
* @return ServletContext the ServletContext
object passed to this filter by the init
method
*
* @since Servlet 4.0
*/
@Override
public ServletContext getServletContext() {
FilterConfig sc = getFilterConfig();
if (sc == null) {
throw new IllegalStateException(lStrings.getString("err.filter_config_not_initialized"));
}
return sc.getServletContext();
}
/**
*
* Called by the servlet container to indicate to a filter that it is being placed into service. See
* {@link Filter#init}.
*
*
*
* This implementation stores the {@link FilterConfig} object it receives from the servlet container for later use. When
* overriding this form of the method, call super.init(config)
.
*
* @param config the FilterConfig
object that contains configuration information for this filter
*
* @exception ServletException if an exception occurs that interrupts the servlet's normal operation
*
* @see UnavailableException
*
* @since Servlet 4.0
*/
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
this.init();
}
/**
*
* A convenience method which can be overridden so that there's no need to call super.init(config)
.
*
*
*
* Instead of overriding {@link #init(FilterConfig)}, simply override this method and it will be called by
* GenericFilter.init(FilterConfig config)
. The FilterConfig
object can still be retrieved via
* {@link #getFilterConfig}.
*
* @exception ServletException if an exception occurs that interrupts the servlet's normal operation
*
* @since Servlet 4.0
*/
public void init() throws ServletException {
}
/**
*
* Returns the name of this filter instance. See {@link FilterConfig#getFilterName}.
*
*
* @return the name of this filter instance
*
* @since Servlet 4.0
*/
@Override
public String getFilterName() {
FilterConfig sc = getFilterConfig();
if (sc == null) {
throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
}
return sc.getFilterName();
}
}