@Override public void onStartup(ServletContext servletContext) throws ServletException { Dynamic fr = servletContext.addFilter("org.springframework.security.web.access.intercept.FilterSecurityInterceptor#0", EmptyFilter.class); if(fr!=null){ fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), true, "/fuckSpringBootFilterSecurityInterceptor"); fr.setAsyncSupported(true); } fr = servletContext.addFilter("org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0", EmptyFilter.class); if(fr!=null){ fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), true, "/fuckSpringBootFilterSecurityInterceptor"); fr.setAsyncSupported(true); } fr = servletContext.addFilter("casFilter", EmptyFilter.class); if(fr!=null){ fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), true, "/fuckSpringBootFilterSecurityInterceptor"); fr.setAsyncSupported(true); } }
@Override public void run(BlogConfiguration blogConfiguration, Environment environment) throws Exception { final BlogDao blogDao = new BlogDao(hibernate.getSessionFactory()); // Register all resources here. environment.jersey().register(new BlogResources(blogDao)); environment.jersey().register(new UploadResources()); environment.jersey().register(new UnitTestResources()); // Register MultiPartFeature.class to support mime type "multipart/form-data." environment.jersey().getResourceConfig().register(MultiPartFeature.class); // All Filter // CORS enable Dynamic filter = environment.servlets().addFilter("CORS", CrossOriginFilter.class); filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), false, "/*"); filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,PUT,POST,DELETE,OPTIONS"); filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*"); filter.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*"); filter.setInitParameter("allowedHeaders", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin"); filter.setInitParameter("allowCredentials", "true"); }
@Test public void testWithProviders() throws ServletException { InitializeSessionManagement ism = new InitializeSessionManagement(); ServletContext context = mock(ServletContext.class); Dynamic dynamic = mock(Dynamic.class); when(context.addFilter(any(String.class), any(Filter.class))).thenReturn(dynamic); when(context.getClassLoader()).thenReturn(this.getClass().getClassLoader()); ism.onStartup(null, context); @SuppressWarnings("rawtypes") ArgumentCaptor<HashMap> arg = ArgumentCaptor.forClass(HashMap.class); verify(context).setAttribute(eq(PROVIDERS), arg.capture()); assertTrue(arg.getValue().containsKey("redis")); assertEquals(JedisSessionRepositoryFactory.class.getName(), arg.getValue().get("redis")); assertTrue(arg.getValue().containsKey("in-memory")); assertEquals(InMemoryRepositoryFactory.class.getName(), arg.getValue().get("in-memory")); }
/** * Add the given filter to the ServletContext and map it to the * {@code DispatcherServlet} as follows: * <ul> * <li>a default filter name is chosen based on its concrete type * <li>the {@code asyncSupported} flag is set depending on the * return value of {@link #isAsyncSupported() asyncSupported} * <li>a filter mapping is created with dispatcher types {@code REQUEST}, * {@code FORWARD}, {@code INCLUDE}, and conditionally {@code ASYNC} depending * on the return value of {@link #isAsyncSupported() asyncSupported} * </ul> * <p>If the above defaults are not suitable or insufficient, override this * method and register filters directly with the {@code ServletContext}. * @param servletContext the servlet context to register filters with * @param filter the filter to be registered * @return the filter registration */ protected FilterRegistration.Dynamic registerServletFilter(ServletContext servletContext, Filter filter) { String filterName = Conventions.getVariableName(filter); Dynamic registration = servletContext.addFilter(filterName, filter); if (registration == null) { int counter = -1; while (counter == -1 || registration == null) { counter++; registration = servletContext.addFilter(filterName + "#" + counter, filter); Assert.isTrue(counter < 100, "Failed to register filter '" + filter + "'." + "Could the same Filter instance have been registered already?"); } } registration.setAsyncSupported(isAsyncSupported()); registration.addMappingForServletNames(getDispatcherTypes(), false, getServletName()); return registration; }
private void handleFilter(FilterConfiguration filter,ServletContext webappContext){ filter.getFilter().visit(clazz-> { setInitParameters(webappContext.addFilter(getName(filter), clazz), filter) .addMappingForUrlPatterns( EnumSet.allOf(DispatcherType.class),true, filter.getMapping()); return 1; }, obj-> { Dynamic filterReg = webappContext.addFilter( getName(filter), obj); filterReg.addMappingForUrlPatterns( EnumSet.allOf(DispatcherType.class),true, filter.getMapping()); return 2; }); }
@Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext webAppContext = new AnnotationConfigWebApplicationContext(); webAppContext.setConfigLocation(getClass().getPackage().getName()); ServletRegistration.Dynamic dispatcher = servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(webAppContext)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping(DISPATCHER_SERVLET_MAPPING); OpenEntityManagerInViewFilter openEntityManagerInViewFilter = new OpenEntityManagerInViewFilter(); openEntityManagerInViewFilter.setEntityManagerFactoryBeanName("entityManagerFactory"); Dynamic dynamic = servletContext.addFilter("openEntityManagerInViewFilter", openEntityManagerInViewFilter); dynamic.addMappingForUrlPatterns(getDispatcherTypes(), false, DISPATCHER_SERVLET_MAPPING); servletContext.addListener(new ContextLoaderListener(webAppContext)); }
@Override public void onStartup(ServletContext servletContext) throws ServletException { super.onStartup(servletContext); Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler()); configureSessionCookie(servletContext); CharacterEncodingFilter cef = new CharacterEncodingFilter(); cef.setEncoding("UTF-8"); cef.setForceEncoding(true); Dynamic characterEncodingFilter = servletContext.addFilter("CharacterEncodingFilter", cef); characterEncodingFilter.setAsyncSupported(true); characterEncodingFilter.addMappingForUrlPatterns(null, false, "/*"); //force log initialization, then disable it XRLog.setLevel(XRLog.EXCEPTION, Level.WARNING); XRLog.setLoggingEnabled(false); }
/** * Sets up servlet context - registers {@link SessionFilter} and * {@link ShutdownListener}. * * @param context * servlet context to set up */ static void setupContext(ServletContext context) { if (ServletLevel.isServlet3) { // When using Servlet 3.x+, we will register SessionFilter to make // sure session replacement is enabled Dynamic reg = context.addFilter("com.amdeus.session.filter", new SessionFilter()); if (reg != null) { // The filter applies to all requests reg.addMappingForUrlPatterns(null, false, "/*"); } // At the web app shutdown, we need to do some cleanup context.addListener(new ShutdownListener()); } }
@Test public void testDefaultWithNullClasses() throws ServletException { InitializeSessionManagement ism = new InitializeSessionManagement(); ServletContext context = mock(ServletContext.class); when(context.getClassLoader()).thenReturn(this.getClass().getClassLoader()); Dynamic dynamic = mock(Dynamic.class); when(context.addFilter(any(String.class), any(Filter.class))).thenReturn(dynamic); ism.onStartup(null, context); verify(context).addFilter(eq("com.amdeus.session.filter"), any(SessionFilter.class)); }
@Test public void testDefault() throws ServletException { InitializeSessionManagement ism = new InitializeSessionManagement(); Set<Class<?>> classes = Collections.emptySet(); ServletContext context = mock(ServletContext.class); Dynamic dynamic = mock(Dynamic.class); when(context.addFilter(any(String.class), any(Filter.class))).thenReturn(dynamic); when(context.getClassLoader()).thenReturn(this.getClass().getClassLoader()); ism.onStartup(classes, context); verify(context).addFilter(eq("com.amdeus.session.filter"), any(SessionFilter.class)); }
/** * Register a {@link DispatcherServlet} against the given servlet context. * <p>This method will create a {@code DispatcherServlet} with the name returned by * {@link #getServletName()}, initializing it with the application context returned * from {@link #createServletApplicationContext()}, and mapping it to the patterns * returned from {@link #getServletMappings()}. * <p>Further customization can be achieved by overriding {@link * #customizeRegistration(ServletRegistration.Dynamic)} or * {@link #createDispatcherServlet(WebApplicationContext)}. * @param servletContext the context to register the servlet against */ protected void registerDispatcherServlet(ServletContext servletContext) { String servletName = getServletName(); Assert.hasLength(servletName, "getServletName() must not return empty or null"); WebApplicationContext servletAppContext = createServletApplicationContext(); Assert.notNull(servletAppContext, "createServletApplicationContext() did not return an application " + "context for servlet [" + servletName + "]"); FrameworkServlet dispatcherServlet = createDispatcherServlet(servletAppContext); dispatcherServlet.setContextInitializers(getServletApplicationContextInitializers()); ServletRegistration.Dynamic registration = servletContext.addServlet(servletName, dispatcherServlet); Assert.notNull(registration, "Failed to register servlet with name '" + servletName + "'." + "Check if there is another servlet registered under the same name."); registration.setLoadOnStartup(1); registration.addMapping(getServletMappings()); registration.setAsyncSupported(isAsyncSupported()); Filter[] filters = getServletFilters(); if (!ObjectUtils.isEmpty(filters)) { for (Filter filter : filters) { registerServletFilter(servletContext, filter); } } customizeRegistration(registration); }
@Override public ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) { if (servlets.containsKey(servletName)) { return null; } servlets.put(servletName, servlet); MockServletRegistration registration = new MockServletRegistration(); servletRegistrations.put(servletName, registration); return registration; }
@Override public Dynamic addFilter(String filterName, Filter filter) { if (filters.containsKey(filterName)) { return null; } filters.put(filterName, filter); MockFilterRegistration registration = new MockFilterRegistration(); filterRegistrations.put(filterName, registration); return registration; }
@Override public void contextInitialized(ServletContextEvent sce) { Dynamic filterRegistration = sce.getServletContext().addFilter("BraveServletFilter", new BraveServletFilter(brave.serverRequestInterceptor(), brave.serverResponseInterceptor(), new DefaultSpanNameProvider())); // Explicit mapping to avoid trace on readiness probe filterRegistration.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), false, "/api/hello", "/api/hello-chaining"); }
private void addExplicitlyDeclaredFilters(ServletContext webappContext) { for (FilterData filterData : filterData) { Dynamic filterReg = webappContext.addFilter( filterData.getFilterName(), filterData.getFilter()); filterReg.addMappingForUrlPatterns( EnumSet.allOf(DispatcherType.class),true, filterData.getMapping()); logFilter(filterData); } }
@Override public void setServletContext(ServletContext servletContext) { try { ServletRegistration openmrsServletReg = servletContext.getServletRegistration("openmrs"); addMappings(openmrsServletReg, "*.htm", "*.form", "*.list", "*.json", "*.field", "*.portlet", "*.page", "*.action"); addMappings(servletContext.getServletRegistration("jsp"), "*.withjstl"); ServletRegistration servletReg = servletContext.addServlet("logoutServlet", new LogoutServlet()); servletReg.addMapping("/logout"); Dynamic filter = servletContext.addFilter("forcePasswordChangeFilter", new ForcePasswordChangeFilter()); filter.setInitParameter("changePasswordForm", "/admin/users/changePassword.form"); filter.setInitParameter("excludeURL", "changePasswordForm,logout,.js,.css,.gif,.jpg,.jpeg,.png"); filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); filter = servletContext.addFilter("adminPageFilter", new AdminPageFilter()); filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/admin"); servletContext.addListener(new SessionListener()); /* * EfficientShutdownServletContextAttributeListener is used instead of * EfficientShutdownServletContextListener since the latter implements ServletContextListener, * which is not supported by ServletContext.addListener. */ servletContext.addListener(new EfficientShutdownServletContextAttributeListener()); } catch (Exception ex) { //TODO need a work around for: java.lang.IllegalStateException: Started //Unable to configure mapping for servlet because this servlet context has already been initialized. //This happens on running openmrs after InitializationFilter or UpdateFilter //hence requiring a restart to see any page other than index.htm //After a restart, all mappings will then happen within Listener.contextInitialized() ex.printStackTrace(); } }
protected void registeredEncodingFilter(ServletContext servletContext, Class<? extends Filter> encodingFilterClass){ Optional.ofNullable(encodingFilterClass).ifPresent(cls->{ Dynamic fr = servletContext.addFilter("characterEncodingFilter", encodingFilterClass); Optional.ofNullable(fr).ifPresent(frconfig->{ frconfig.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), isMatchAfter, "/*"); frconfig.setAsyncSupported(true); frconfig.setInitParameters(ImmutableMap.of("encoding", "UTF-8", "forceEncoding", "true")); logger.info("FilterInitializer: {} has bean registered!", encodingFilterClass.getSimpleName()); }); }); }
protected void registeredMultipartFilter(ServletContext servletContext, Class<? extends Filter> multipartFilterClass){ Optional.ofNullable(multipartFilterClass).ifPresent(cls->{ Dynamic fr = servletContext.addFilter(MultipartFilter.DEFAULT_MULTIPART_RESOLVER_BEAN_NAME, multipartFilterClass); Optional.ofNullable(fr).ifPresent(frconfig->{ frconfig.setAsyncSupported(true); frconfig.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), isMatchAfter, "/*"); logger.info("FilterInitializer: {} has bean registered!", multipartFilterClass.getSimpleName()); }); }); }
protected void registeredInitFilter(ServletContext servletContext, Class<? extends Filter> initFilterClass){ logger.info("registeredInitFilter: {} ", initFilterClass); Optional.ofNullable(initFilterClass).ifPresent(cls->{ logger.info("execute registeredInitFilter ..."); Dynamic initfr = servletContext.addFilter("systemFilter", cls); initfr.addMappingForUrlPatterns(this.getAllDispatcherTypes(), isMatchAfter, "/*"); initfr.setAsyncSupported(true); initfr.setInitParameter("filterSuffix", "true"); logger.info("registeredInitFilter result: {} has bean registered!", initFilterClass.getSimpleName()); }); }
protected void registeredHiddenMethodFilter(ServletContext servletContext, Class<? extends Filter> hiddenFilterClass){ Optional.ofNullable(hiddenFilterClass).ifPresent(cls->{ Dynamic fr = servletContext.addFilter(hiddenFilterClass.getSimpleName(), hiddenFilterClass); Optional.ofNullable(fr).ifPresent(frconfig->{ // fr.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "/*"); // fr.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, AbstractDispatcherServletInitializer.DEFAULT_SERVLET_NAME); fr.setAsyncSupported(true); fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), isMatchAfter, "/*"); // .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); logger.info("FilterInitializer: {} has bean registered!", hiddenFilterClass.getSimpleName()); }); }); }
/** * @see javax.servlet.ServletContext#addServlet(java.lang.String, java.lang.Class) */ @Override public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, Class<? extends Servlet> arg1) { return null; }
private void configureCors(Environment environment) { Dynamic filter = environment.servlets().addFilter("CORS", CrossOriginFilter.class); filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*"); filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,PUT,POST,DELETE,OPTIONS"); filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*"); filter.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*"); filter.setInitParameter("allowedHeaders", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin"); filter.setInitParameter("allowCredentials", "true"); }
@Override public void contextInitialized(ServletContextEvent sce) { ServletContext ctx = sce.getServletContext(); Dynamic filter = ctx.addFilter("JUGFilter", JugFilterDispatcher.class); filter.setInitParameter("javax.ws.rs.Application", ApplicationConfig.class.getName()); filter.addMappingForUrlPatterns(EnumSet.of(REQUEST), true, "/*"); }
/** * Registers the provided filter using the {@link #isAsyncSessionSupported()} and * {@link #getSessionDispatcherTypes()}. * * @param servletContext the servlet context * @param insertBeforeOtherFilters should this Filter be inserted before or after * other {@link Filter} * @param filterName the filter name * @param filter the filter */ private void registerFilter(ServletContext servletContext, boolean insertBeforeOtherFilters, String filterName, Filter filter) { Dynamic registration = servletContext.addFilter(filterName, filter); if (registration == null) { throw new IllegalStateException( "Duplicate Filter registration for '" + filterName + "'. Check to ensure the Filter is only configured once."); } registration.setAsyncSupported(isAsyncSessionSupported()); EnumSet<DispatcherType> dispatcherTypes = getSessionDispatcherTypes(); registration.addMappingForUrlPatterns(dispatcherTypes, !insertBeforeOtherFilters, "/*"); }
@Override public void contextInitialized(ServletContextEvent sce) { this.instance = createHazelcastInstance(); Map<String, Session> sessions = this.instance.getMap(SESSION_MAP_NAME); MapSessionRepository sessionRepository = new MapSessionRepository(sessions); SessionRepositoryFilter<? extends Session> filter = new SessionRepositoryFilter<>( sessionRepository); Dynamic fr = sce.getServletContext().addFilter("springSessionFilter", filter); fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); }
/** * Register a {@link DispatcherServlet} against the given servlet context. * <p>This method will create a {@code DispatcherServlet} with the name returned by * {@link #getServletName()}, initializing it with the application context returned * from {@link #createServletApplicationContext()}, and mapping it to the patterns * returned from {@link #getServletMappings()}. * <p>Further customization can be achieved by overriding {@link * #customizeRegistration(ServletRegistration.Dynamic)}. * @param servletContext the context to register the servlet against */ protected void registerDispatcherServlet(ServletContext servletContext) { String servletName = getServletName(); Assert.hasLength(servletName, "getServletName() may not return empty or null"); WebApplicationContext servletAppContext = createServletApplicationContext(); Assert.notNull(servletAppContext, "createServletApplicationContext() did not return an application " + "context for servlet [" + servletName + "]"); DispatcherServlet dispatcherServlet = new DispatcherServlet(servletAppContext); ServletRegistration.Dynamic registration = servletContext.addServlet(servletName, dispatcherServlet); Assert.notNull(registration, "Failed to register servlet with name '" + servletName + "'." + "Check if there is another servlet registered under the same name."); registration.setLoadOnStartup(1); registration.addMapping(getServletMappings()); registration.setAsyncSupported(isAsyncSupported()); Filter[] filters = getServletFilters(); if (!ObjectUtils.isEmpty(filters)) { for (Filter filter : filters) { registerServletFilter(servletContext, filter); } } customizeRegistration(registration); }
@Override public ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) { servlets.put(servletName, servlet); MockServletRegistration registration = new MockServletRegistration(); servletRegistrations.put(servletName, registration); return registration; }
@Override public Dynamic addFilter(String filterName, Filter filter) { filters.put(filterName, filter); MockFilterRegistration registration = new MockFilterRegistration(); filterRegistrations.put(filterName, registration); return registration; }
@Override public FilterRegistration.Dynamic addFilter(String filterName, String className) { return null; }
@Override public ServletRegistration.Dynamic addServlet(String servletName, String className) { return null; }
@Override public Dynamic addFilter(String filterName, Filter filter) { return null; }
@Override public Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) { return null; }
@Override public ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) { return null; }
@Override public ServletRegistration.Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass) { return null; }
@Override public Dynamic addFilter(String arg0, String arg1) { // TODO Auto-generated method stub return null; }
@Override public Dynamic addFilter(String arg0, Filter arg1) { // TODO Auto-generated method stub return null; }
@Override public Dynamic addFilter(String arg0, Class<? extends Filter> arg1) { // TODO Auto-generated method stub return null; }
@Override public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, String arg1) { // TODO Auto-generated method stub return null; }