//======================================================================== //$Id: TestFilter.java,v 1.5 2005/11/01 11:42:53 gregwilkins Exp $ //Copyright 2004-2005 Mort Bay Consulting Pty. Ltd. //------------------------------------------------------------------------ //Licensed 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 com.acme; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletRequestWrapper; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /* ------------------------------------------------------------ */ /** TestFilter. * @author gregw * */ public class TestFilter implements Filter { private ServletContext _context; /* ------------------------------------------------------------ */ /* * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig filterConfig) throws ServletException { _context= filterConfig.getServletContext(); } /* ------------------------------------------------------------ */ /* * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { Integer old_value=null; ServletRequest r = request; while (r instanceof ServletRequestWrapper) r=((ServletRequestWrapper)r).getRequest(); try { old_value=(Integer)request.getAttribute("testFilter"); Integer value=(old_value==null)?new Integer(1):new Integer(old_value.intValue()+1); request.setAttribute("testFilter", value); String qString = ((HttpServletRequest)request).getQueryString(); if (qString != null && qString.indexOf("wrap")>0) { request=new HttpServletRequestWrapper((HttpServletRequest)request); } _context.setAttribute("request"+r.hashCode(),value); chain.doFilter(request, response); } finally { request.setAttribute("testFilter", old_value); _context.setAttribute("request"+r.hashCode(),old_value); } } /* ------------------------------------------------------------ */ /* * @see javax.servlet.Filter#destroy() */ public void destroy() { } }