try {  StripesFilter.configurationStash.set(this.configuration);
StripesFilter.configurationStash.set(this.configuration);
    public void doFilter(ServletRequest servletRequest,                         ServletResponse servletResponse,                         FilterChain filterChain) throws IOException, ServletException {        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;        // Wrap pretty much everything in a try/catch so that we can funnel even the most        // bizarre or unexpected exceptions into the exception handler        try {            log.trace("Intercepting request to URL: ", httpRequest.getRequestURI());            try {                // Pop the configuration into thread local                StripesFilter.configurationStash.set(this.configuration);                // Figure out the locale to use, and then wrap the request                Locale locale = this.configuration.getLocalePicker().pickLocale(httpRequest);                StripesRequestWrapper request = wrapRequest(httpRequest);                request.setLocale(locale);                log.debug("LocalePicker selected locale: ", locale);                // Execute the rest of the chain                flashInbound(request);                filterChain.doFilter(request, servletResponse);            }            finally {                // Once the request is processed, take the Configuration back out of thread local                flashOutbound(httpRequest);                StripesFilter.configurationStash.remove();            }        }        catch (Throwable t) {            this.configuration.getExceptionHandler().handle(t, httpRequest, httpResponse);        }    }