/** * Return a new {@code HandlerStrategies} with default initialization. * @return the new {@code HandlerStrategies} */ static HandlerStrategies withDefaults() { return builder().build(); }
@Override protected HandlerStrategies handlerStrategies() { return HandlerStrategies.builder() .viewResolver(new DummyViewResolver()) .build(); }
@Override protected HandlerStrategies handlerStrategies() { return HandlerStrategies.builder() .viewResolver(new DummyViewResolver()) .localeContextResolver(new FixedLocaleContextResolver(Locale.GERMANY)) .build(); }
@Test public void toHttpHandlerWebFilter() { AtomicBoolean filterInvoked = new AtomicBoolean(); WebFilter webFilter = new WebFilter() { @Override public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) { filterInvoked.set(true); return chain.filter(exchange); } }; HandlerFunction<ServerResponse> handlerFunction = request -> ServerResponse.accepted().build(); RouterFunction<ServerResponse> routerFunction = RouterFunctions.route(RequestPredicates.all(), handlerFunction); HandlerStrategies handlerStrategies = HandlerStrategies.builder() .webFilter(webFilter).build(); HttpHandler result = RouterFunctions.toHttpHandler(routerFunction, handlerStrategies); assertNotNull(result); MockServerHttpRequest httpRequest = MockServerHttpRequest.get("http://localhost").build(); MockServerHttpResponse httpResponse = new MockServerHttpResponse(); result.handle(httpRequest, httpResponse).block(); assertEquals(HttpStatus.ACCEPTED, httpResponse.getStatusCode()); assertTrue(filterInvoked.get()); }
@Test public void exceptionHandler() { RouterFunction<ServerResponse> routerFunction = RouterFunctions.route() .GET("/error", request -> Mono.error(new IllegalStateException("boo"))) .build(); new DefaultRouterFunctionSpec(routerFunction) .handlerStrategies(HandlerStrategies.builder() .exceptionHandler((exchange, ex) -> { exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST); return Mono.empty(); }) .build()) .build() .get() .uri("/error") .exchange() .expectStatus().isBadRequest(); } }
@Test public void webFilter() { RouterFunction<ServerResponse> routerFunction = RouterFunctions.route() .GET("/", request -> ServerResponse.ok().build()) .build(); new DefaultRouterFunctionSpec(routerFunction) .handlerStrategies(HandlerStrategies.builder() .webFilter((exchange, chain) -> { exchange.getResponse().getHeaders().set("foo", "123"); return chain.filter(exchange); }) .build()) .build() .get() .uri("/") .exchange() .expectStatus().isOk() .expectHeader().valueEquals("foo", "123"); }
/** * Create a {@code ResponseResultHandler} with default strategies. */ public ServerResponseResultHandler() { this(HandlerStrategies.builder().build()); }
/** * Return a new {@code HandlerStrategies} with default initialization. * @return the new {@code HandlerStrategies} */ static HandlerStrategies withDefaults() { return builder().build(); }
/** * Return a new {@code HandlerStrategies} based on the given * {@linkplain ApplicationContext application context}. * The returned supplier will search for all {@link HttpMessageReader}, {@link HttpMessageWriter}, * and {@link ViewResolver} instances in the given application context and return them for * {@link #messageReaders()}, {@link #messageWriters()}, and {@link #viewResolvers()} * respectively. * @param applicationContext the application context to base the strategies on * @return the new {@code HandlerStrategies} */ static HandlerStrategies of(ApplicationContext applicationContext) { return builder(applicationContext).build(); }
public static void main(String[] args) throws Exception { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); PostRepository posts = new PostRepository(); PostHandler postHandler = new PostHandler(posts); Routes routesBean = new Routes(postHandler); context.registerBean(PostRepository.class, () -> posts); context.registerBean(PostHandler.class, () -> postHandler); context.registerBean(Routes.class, () -> routesBean); context.registerBean(WebHandler.class, () -> RouterFunctions.toWebHandler(routesBean.routes(), HandlerStrategies.builder().build())); context.refresh(); nettyServer(context).onDispose().block(); }