/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.shiro.web.servlet; import org.apache.shiro.util.Nameable; import javax.servlet.FilterConfig; /** * Allows a filter to be named via JavaBeans-compatible * {@link #getName()}/{@link #setName(String)} methods. If no name is specified, the name of the filter will * default to the name given to it in {@code web.xml} (the {@code FilterConfig}'s * {@link javax.servlet.FilterConfig#getFilterName() filterName}). * * @since 1.0 */ public abstract class NameableFilter extends AbstractFilter implements Nameable { /** * The name of this filter, unique within an application. */ private String name; /** * Returns the filter's name. * <p/> * Unless overridden by calling the {@link #setName(String) setName(String)} method, this value defaults to the * filter name as specified by the servlet container at start-up: * <pre> * this.name = {@link #getFilterConfig() getFilterConfig()}.{@link javax.servlet.FilterConfig#getFilterName() getName()};</pre> * * @return the filter name, or {@code null} if none available * @see javax.servlet.GenericServlet#getServletName() * @see javax.servlet.FilterConfig#getFilterName() */ protected String getName() { if (this.name == null) { FilterConfig config = getFilterConfig(); if (config != null) { this.name = config.getFilterName(); } } return this.name; } /** * Sets the filter's name. * <p/> * Unless overridden by calling this method, this value defaults to the filter name as specified by the * servlet container at start-up: * <pre> * this.name = {@link #getFilterConfig() getFilterConfig()}.{@link javax.servlet.FilterConfig#getFilterName() getName()};</pre> * * @param name the name of the filter. */ public void setName(String name) { this.name = name; } /** * Returns a StringBuilder instance with the {@link #getName() name}, or if the name is {@code null}, just the * {@code super.toStringBuilder()} instance. * * @return a StringBuilder instance to use for appending String data that will eventually be returned from a * {@code toString()} invocation. */ protected StringBuilder toStringBuilder() { String name = getName(); if (name == null) { return super.toStringBuilder(); } else { StringBuilder sb = new StringBuilder(); sb.append(name); return sb; } } }