@Test public void testCompositeFilter() throws ServletException, IOException { ServletContext sc = new MockServletContext(); MockFilter targetFilter = new MockFilter(); MockFilterConfig proxyConfig = new MockFilterConfig(sc); CompositeFilter filterProxy = new CompositeFilter(); filterProxy.setFilters(Arrays.asList(targetFilter)); filterProxy.init(proxyConfig); MockHttpServletRequest request = new MockHttpServletRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); filterProxy.doFilter(request, response, null); assertNotNull(targetFilter.filterConfig); assertEquals(Boolean.TRUE, request.getAttribute("called")); filterProxy.destroy(); assertNull(targetFilter.filterConfig); }
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; request.setCharacterEncoding(StandardCharsets.UTF_8.name()); String requestURI = request.getRequestURI(); if (!requestURI.endsWith("/")) { requestURI = requestURI + "/"; } for (String bypassUrl : bypassUrls) { if (requestURI.contains(bypassUrl)) { log.trace("Skip URL check: '{}' contains '{}'", requestURI, bypassUrl); chain.doFilter(servletRequest, servletResponse); return; } } super.doFilter(request, response, chain); } }