@SafeVarargs public static void installServletFilters(ServletContextHandler context, Class<? extends Filter>... filters) { installServletFilters(context, Arrays.asList(filters)); }
private WebAppContext servletContextHandler(ManagementContext managementContext) { WebAppContext context = new WebAppContext(); context.setAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT, managementContext); installWar(context); ImmutableList.Builder<Object> providersListBuilder = ImmutableList.builder(); providersListBuilder.add( new ManagementContextProvider(), new ShutdownHandlerProvider(shutdownListener), new RequestTaggingRsFilter(), new NoCacheFilter(), new HaHotCheckResourceFilter(), new EntitlementContextFilter(), new CsrfTokenFilter()); if (BrooklynFeatureEnablement.isEnabled(BrooklynFeatureEnablement.FEATURE_CORS_CXF_PROPERTY)) { providersListBuilder.add(new CorsImplSupplierFilter(managementContext)); } RestApiSetup.installRest(context, providersListBuilder.build().toArray()); RestApiSetup.installServletFilters(context, this.filters); context.setContextPath("/"); return context; }
public static void installRest(ServletContextHandler context, Object... providers) { initSwagger(); BrooklynRestApp app = new BrooklynRestApp(); for (Object o : providers) { app.singleton(o); } CXFNonSpringJaxrsServlet servlet = new CXFNonSpringJaxrsServlet(app); servlet.setBus(BusFactory.newInstance().createBus()); servlet.getBus().getInInterceptors().add(new GZIPInInterceptor()); servlet.getBus().getInFaultInterceptors().add(new GZIPInInterceptor()); servlet.getBus().getOutInterceptors().add(new GZIPOutInterceptor()); final ServletHolder servletHolder = new ServletHolder(servlet); context.addServlet(servletHolder, "/v1/*"); }
/** NB: not fully supported; use one of the other {@link StartMode}s */ private WebAppContext webXmlContextHandler(ManagementContext mgmt) { RestApiSetup.initSwagger(); WebAppContext context; if (findMatchingFile("src/main/webapp")!=null) { // running in source mode; need to use special classpath context = new WebAppContext("src/main/webapp", "/"); context.setExtraClasspath("./target/classes"); } else if (findRestApiWar()!=null) { context = new WebAppContext(findRestApiWar(), "/"); } else { throw new IllegalStateException("Cannot find WAR for REST API. Expected in target/*.war, Maven repo, or in source directories."); } context.setAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT, mgmt); // TODO shutdown hook return context; }