This commit is contained in:
Stéphane Nicoll 2024-01-16 18:45:59 +01:00
parent dc5a21fbd1
commit 1b312b6f3f
3 changed files with 15 additions and 26 deletions

View File

@ -185,9 +185,6 @@ class DefaultWebTestClient implements WebTestClient {
private final Map<String, Object> attributes = new LinkedHashMap<>(4); private final Map<String, Object> attributes = new LinkedHashMap<>(4);
@Nullable
private Consumer<ClientHttpRequest> httpRequestConsumer;
@Nullable @Nullable
private String uriTemplate; private String uriTemplate;
@ -195,7 +192,7 @@ class DefaultWebTestClient implements WebTestClient {
DefaultRequestBodyUriSpec(HttpMethod httpMethod) { DefaultRequestBodyUriSpec(HttpMethod httpMethod) {
this.httpMethod = httpMethod; this.httpMethod = httpMethod;
this.requestId = String.valueOf(requestIndex.incrementAndGet()); this.requestId = String.valueOf(DefaultWebTestClient.this.requestIndex.incrementAndGet());
this.headers = new HttpHeaders(); this.headers = new HttpHeaders();
this.headers.add(WebTestClient.WEBTESTCLIENT_REQUEST_ID, this.requestId); this.headers.add(WebTestClient.WEBTESTCLIENT_REQUEST_ID, this.requestId);
} }
@ -203,19 +200,19 @@ class DefaultWebTestClient implements WebTestClient {
@Override @Override
public RequestBodySpec uri(String uriTemplate, Object... uriVariables) { public RequestBodySpec uri(String uriTemplate, Object... uriVariables) {
this.uriTemplate = uriTemplate; this.uriTemplate = uriTemplate;
return uri(uriBuilderFactory.expand(uriTemplate, uriVariables)); return uri(DefaultWebTestClient.this.uriBuilderFactory.expand(uriTemplate, uriVariables));
} }
@Override @Override
public RequestBodySpec uri(String uriTemplate, Map<String, ?> uriVariables) { public RequestBodySpec uri(String uriTemplate, Map<String, ?> uriVariables) {
this.uriTemplate = uriTemplate; this.uriTemplate = uriTemplate;
return uri(uriBuilderFactory.expand(uriTemplate, uriVariables)); return uri(DefaultWebTestClient.this.uriBuilderFactory.expand(uriTemplate, uriVariables));
} }
@Override @Override
public RequestBodySpec uri(Function<UriBuilder, URI> uriFunction) { public RequestBodySpec uri(Function<UriBuilder, URI> uriFunction) {
this.uriTemplate = null; this.uriTemplate = null;
return uri(uriFunction.apply(uriBuilderFactory.builder())); return uri(uriFunction.apply(DefaultWebTestClient.this.uriBuilderFactory.builder()));
} }
@Override @Override
@ -358,10 +355,10 @@ class DefaultWebTestClient implements WebTestClient {
initRequestBuilder().body(this.inserter).build() : initRequestBuilder().body(this.inserter).build() :
initRequestBuilder().build()); initRequestBuilder().build());
ClientResponse response = exchangeFunction.exchange(request).block(getResponseTimeout()); ClientResponse response = DefaultWebTestClient.this.exchangeFunction.exchange(request).block(getResponseTimeout());
Assert.state(response != null, "No ClientResponse"); Assert.state(response != null, "No ClientResponse");
ExchangeResult result = wiretapConnector.getExchangeResult( ExchangeResult result = DefaultWebTestClient.this.wiretapConnector.getExchangeResult(
this.requestId, this.uriTemplate, getResponseTimeout()); this.requestId, this.uriTemplate, getResponseTimeout());
return new DefaultResponseSpec(result, response, return new DefaultResponseSpec(result, response,
@ -369,34 +366,28 @@ class DefaultWebTestClient implements WebTestClient {
} }
private ClientRequest.Builder initRequestBuilder() { private ClientRequest.Builder initRequestBuilder() {
ClientRequest.Builder builder = ClientRequest.create(this.httpMethod, initUri()) return ClientRequest.create(this.httpMethod, initUri())
.headers(headersToUse -> { .headers(headersToUse -> {
if (!CollectionUtils.isEmpty(defaultHeaders)) { if (!CollectionUtils.isEmpty(DefaultWebTestClient.this.defaultHeaders)) {
headersToUse.putAll(defaultHeaders); headersToUse.putAll(DefaultWebTestClient.this.defaultHeaders);
} }
if (!CollectionUtils.isEmpty(this.headers)) { if (!CollectionUtils.isEmpty(this.headers)) {
headersToUse.putAll(this.headers); headersToUse.putAll(this.headers);
} }
}) })
.cookies(cookiesToUse -> { .cookies(cookiesToUse -> {
if (!CollectionUtils.isEmpty(defaultCookies)) { if (!CollectionUtils.isEmpty(DefaultWebTestClient.this.defaultCookies)) {
cookiesToUse.putAll(defaultCookies); cookiesToUse.putAll(DefaultWebTestClient.this.defaultCookies);
} }
if (!CollectionUtils.isEmpty(this.cookies)) { if (!CollectionUtils.isEmpty(this.cookies)) {
cookiesToUse.putAll(this.cookies); cookiesToUse.putAll(this.cookies);
} }
}) })
.attributes(attributes -> attributes.putAll(this.attributes)); .attributes(attributes -> attributes.putAll(this.attributes));
if (this.httpRequestConsumer != null) {
builder.httpRequest(this.httpRequestConsumer);
}
return builder;
} }
private URI initUri() { private URI initUri() {
return (this.uri != null ? this.uri : uriBuilderFactory.expand("")); return (this.uri != null ? this.uri : DefaultWebTestClient.this.uriBuilderFactory.expand(""));
} }
} }
@ -520,9 +511,7 @@ class DefaultWebTestClient implements WebTestClient {
// that is not a RuntimeException, but since ExceptionCollector may // that is not a RuntimeException, but since ExceptionCollector may
// throw a checked Exception, we handle this to appease the compiler // throw a checked Exception, we handle this to appease the compiler
// and in case someone uses a "sneaky throws" technique. // and in case someone uses a "sneaky throws" technique.
AssertionError assertionError = new AssertionError(ex.getMessage()); throw new AssertionError(ex.getMessage(), ex);
assertionError.initCause(ex);
throw assertionError;
} }
return this; return this;
} }

View File

@ -256,7 +256,7 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
} }
@Override @Override
@SuppressWarnings("deprecation") @Deprecated
public WebTestClient.Builder exchangeStrategies(Consumer<ExchangeStrategies.Builder> configurer) { public WebTestClient.Builder exchangeStrategies(Consumer<ExchangeStrategies.Builder> configurer) {
if (this.strategiesConfigurers == null) { if (this.strategiesConfigurers == null) {
this.strategiesConfigurers = new ArrayList<>(4); this.strategiesConfigurers = new ArrayList<>(4);

View File

@ -60,7 +60,7 @@ import org.springframework.util.MultiValueMap;
*/ */
public class HttpHandlerConnector implements ClientHttpConnector { public class HttpHandlerConnector implements ClientHttpConnector {
private static Log logger = LogFactory.getLog(HttpHandlerConnector.class); private static final Log logger = LogFactory.getLog(HttpHandlerConnector.class);
private final HttpHandler handler; private final HttpHandler handler;