/** * Create a {@link WebClient} configured with {@link VaultEndpoint} and * {@link ClientHttpConnector}. The client accepts relative URIs without a leading * slash that are expanded to use {@link VaultEndpoint}. * <p> * Requires Jackson 2 for Object-to-JSON mapping. * * @param endpointProvider must not be {@literal null}. * @param connector must not be {@literal null}. * @return the configured {@link WebClient}. */ public static WebClient createWebClient(VaultEndpointProvider endpointProvider, ClientHttpConnector connector) { Assert.notNull(endpointProvider, "VaultEndpointProvider must not be null"); Assert.notNull(connector, "ClientHttpConnector must not be null"); UriBuilderFactory uriBuilderFactory = VaultClients .createUriBuilderFactory(endpointProvider); ExchangeStrategies strategies = ExchangeStrategies.builder() .codecs(configurer -> { CustomCodecs cc = configurer.customCodecs(); cc.decoder(new ByteArrayDecoder()); cc.decoder(new Jackson2JsonDecoder()); cc.decoder(StringDecoder.allMimeTypes(false)); cc.encoder(new ByteArrayEncoder()); cc.encoder(new Jackson2JsonEncoder()); }).build(); return WebClient.builder().uriBuilderFactory(uriBuilderFactory) .exchangeStrategies(strategies).clientConnector(connector).build(); }
protected WebTestClient createWebClient(int port) { ObjectMapper mapper = new ObjectMapper().registerModule(new JsonOrgModule()); return WebTestClient.bindToServer() .baseUrl("http://localhost:" + port) .exchangeStrategies(ExchangeStrategies.builder().codecs((configurer) -> { configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(mapper)); configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(mapper)); }).build()) .build(); }