@Override public void init(FilterConfig filterConfig) throws ServletException { final ServletContext servletContext = filterConfig.getServletContext(); // Store servlet context in a weakreference, for injection GuiceFilter.servletContext = new WeakReference<>(servletContext); // In the default pipeline, this is a noop. However, if replaced // by a managed pipeline, a lazy init will be triggered the first time // dispatch occurs. FilterPipeline filterPipeline = getFilterPipeline(); filterPipeline.initPipeline(servletContext); }
public final void testQueryInRequestUri_regex() throws Exception { final Injector injector = Guice.createInjector( new ServletModule() { @Override protected void configureServlets() { filterRegex("(.)*\\.html").through(TestFilter.class); serveRegex("(.)*\\.html").with(TestServlet.class); } }); final FilterPipeline pipeline = injector.getInstance(FilterPipeline.class); pipeline.initPipeline(null); //create ourselves a mock request with test URI HttpServletRequest requestMock = createMock(HttpServletRequest.class); expect(requestMock.getRequestURI()).andReturn("/index.html?query=params").atLeastOnce(); expect(requestMock.getContextPath()).andReturn("").anyTimes(); //dispatch request replay(requestMock); pipeline.dispatch(requestMock, null, createMock(FilterChain.class)); pipeline.destroyPipeline(); verify(requestMock); assertEquals(1, doFilters); assertEquals(1, services); }
pipeline.initPipeline(null);
pipeline.initPipeline(null);
pipeline.initPipeline(null);
pipeline.initPipeline(null);
pipeline.initPipeline(null);
pipeline.initPipeline(null);
pipeline.initPipeline(null);
pipeline.initPipeline(null);
public final void testFilterExceptionPrunesStack() throws Exception { Injector injector = Guice.createInjector( new ServletModule() { @Override protected void configureServlets() { filter("/").through(TestFilter.class); filter("/nothing").through(TestFilter.class); filter("/").through(ThrowingFilter.class); } }); HttpServletRequest request = newFakeHttpServletRequest(); FilterPipeline pipeline = injector.getInstance(FilterPipeline.class); pipeline.initPipeline(null); try { pipeline.dispatch(request, null, null); fail("expected exception"); } catch (ServletException ex) { for (StackTraceElement element : ex.getStackTrace()) { String className = element.getClassName(); assertTrue( "was: " + element, !className.equals(FilterChainInvocation.class.getName()) && !className.equals(FilterDefinition.class.getName())); } } }
pipeline.initPipeline(null);
pipeline.initPipeline(null);
public final void testServletExceptionPrunesStack() throws Exception { Injector injector = Guice.createInjector( new ServletModule() { @Override protected void configureServlets() { filter("/").through(TestFilter.class); filter("/nothing").through(TestFilter.class); serve("/").with(ThrowingServlet.class); } }); HttpServletRequest request = newFakeHttpServletRequest(); FilterPipeline pipeline = injector.getInstance(FilterPipeline.class); pipeline.initPipeline(null); try { pipeline.dispatch(request, null, null); fail("expected exception"); } catch (ServletException ex) { for (StackTraceElement element : ex.getStackTrace()) { String className = element.getClassName(); assertTrue( "was: " + element, !className.equals(FilterChainInvocation.class.getName()) && !className.equals(FilterDefinition.class.getName())); } } }
pipeline.initPipeline(null);
pipeline.initPipeline(null);
public void testFilterOrder() throws Exception { AtomicInteger counter = new AtomicInteger(); final CountFilter f1 = new CountFilter(counter); final CountFilter f2 = new CountFilter(counter); Injector injector = Guice.createInjector( new ServletModule() { @Override protected void configureServlets() { filter("/").through(f1); install( new ServletModule() { @Override protected void configureServlets() { filter("/").through(f2); } }); } }); HttpServletRequest request = newFakeHttpServletRequest(); final FilterPipeline pipeline = injector.getInstance(FilterPipeline.class); pipeline.initPipeline(null); pipeline.dispatch(request, null, newNoOpFilterChain()); assertEquals(0, f1.calledAt); assertEquals(1, f2.calledAt); }
public final void testFilterBypass() throws ServletException, IOException { final Injector injector = Guice.createInjector( new ServletModule() { @Override protected void configureServlets() { filter("/protected/*").through(TestFilter.class); } }); final FilterPipeline pipeline = injector.getInstance(FilterPipeline.class); pipeline.initPipeline(null); assertEquals(1, inits); runRequestForPath(pipeline, "/./protected/resource", true); runRequestForPath(pipeline, "/protected/../resource", false); runRequestForPath(pipeline, "/protected/../protected/resource", true); assertEquals(0, destroys); pipeline.destroyPipeline(); assertEquals(1, destroys); }
pipeline.initPipeline(null);
public void add(final BeanEntry<Annotation, FilterPipeline> entry, final DynamicFilterPipeline watcher) throws Exception { // initialize pipeline before exposing via cache final FilterPipeline pipeline = entry.getValue(); pipeline.initPipeline(watcher.getServletContext()); watcher.refreshCache(); }