@Override public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { if (scriptIterator.hasNext()) { Script script = scriptIterator.next(); if (logger.isDebugEnabled()) { logger.debug("Executing filter script at " + script.getUrl()); } HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; Map<String, Object> variables = new HashMap<>(); GroovyUtils.addCommonVariables(variables, httpRequest, httpResponse, servletContext); GroovyUtils.addSecurityVariables(variables); GroovyUtils.addFilterChainVariable(variables, this); try { script.execute(variables); } catch (ScriptException e) { Throwable cause = e.getCause(); if (cause instanceof ServletException) { throw (ServletException) cause; } else { throw new ServletException("Error executing filter script at " + script.getUrl(), cause); } } } else { delegateChain.doFilter(request, response); } }