Merge branch '5.1.x'

This commit is contained in:
Juergen Hoeller 2019-07-31 23:53:32 +02:00
commit dea9ad6cb2
4 changed files with 53 additions and 53 deletions

View File

@ -28,8 +28,8 @@ import org.springframework.messaging.Message;
/** /**
* Resolves method parameters by delegating to a list of registered * Resolves method parameters by delegating to a list of registered
* {@link HandlerMethodArgumentResolver}. Previously resolved method parameters are cached * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}.
* for faster lookups. * Previously resolved method parameters are cached for faster lookups.
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Juergen Hoeller * @author Juergen Hoeller
@ -46,8 +46,8 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
/** /**
* Add the given {@link HandlerMethodArgumentResolver}. * Add the given {@link HandlerMethodArgumentResolver}.
*/ */
public HandlerMethodArgumentResolverComposite addResolver(HandlerMethodArgumentResolver argumentResolver) { public HandlerMethodArgumentResolverComposite addResolver(HandlerMethodArgumentResolver resolver) {
this.argumentResolvers.add(argumentResolver); this.argumentResolvers.add(resolver);
return this; return this;
} }
@ -55,7 +55,9 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
* Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}.
* @since 4.3 * @since 4.3
*/ */
public HandlerMethodArgumentResolverComposite addResolvers(@Nullable HandlerMethodArgumentResolver... resolvers) { public HandlerMethodArgumentResolverComposite addResolvers(
@Nullable HandlerMethodArgumentResolver... resolvers) {
if (resolvers != null) { if (resolvers != null) {
Collections.addAll(this.argumentResolvers, resolvers); Collections.addAll(this.argumentResolvers, resolvers);
} }
@ -66,10 +68,10 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
* Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}.
*/ */
public HandlerMethodArgumentResolverComposite addResolvers( public HandlerMethodArgumentResolverComposite addResolvers(
@Nullable List<? extends HandlerMethodArgumentResolver> argumentResolvers) { @Nullable List<? extends HandlerMethodArgumentResolver> resolvers) {
if (argumentResolvers != null) { if (resolvers != null) {
this.argumentResolvers.addAll(argumentResolvers); this.argumentResolvers.addAll(resolvers);
} }
return this; return this;
} }
@ -102,8 +104,7 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
* Iterate over registered * Iterate over registered
* {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers} * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}
* and invoke the one that supports it. * and invoke the one that supports it.
* @throws IllegalStateException if no suitable * @throws IllegalArgumentException if no suitable argument resolver is found
* {@link HandlerMethodArgumentResolver} is found.
*/ */
@Override @Override
@Nullable @Nullable

View File

@ -41,6 +41,7 @@ import org.springframework.web.context.request.NativeWebRequest;
*/ */
public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgumentResolver { public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgumentResolver {
@Deprecated
protected final Log logger = LogFactory.getLog(getClass()); protected final Log logger = LogFactory.getLog(getClass());
private final List<HandlerMethodArgumentResolver> argumentResolvers = new LinkedList<>(); private final List<HandlerMethodArgumentResolver> argumentResolvers = new LinkedList<>();
@ -61,7 +62,9 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
* Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}.
* @since 4.3 * @since 4.3
*/ */
public HandlerMethodArgumentResolverComposite addResolvers(@Nullable HandlerMethodArgumentResolver... resolvers) { public HandlerMethodArgumentResolverComposite addResolvers(
@Nullable HandlerMethodArgumentResolver... resolvers) {
if (resolvers != null) { if (resolvers != null) {
Collections.addAll(this.argumentResolvers, resolvers); Collections.addAll(this.argumentResolvers, resolvers);
} }
@ -107,10 +110,9 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
/** /**
* Iterate over registered * Iterate over registered
* {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers} and * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}
* invoke the one that supports it. * and invoke the one that supports it.
* @throws IllegalStateException if no suitable * @throws IllegalArgumentException if no suitable argument resolver is found
* {@link HandlerMethodArgumentResolver} is found.
*/ */
@Override @Override
@Nullable @Nullable
@ -133,9 +135,9 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu
private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter) { private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter) {
HandlerMethodArgumentResolver result = this.argumentResolverCache.get(parameter); HandlerMethodArgumentResolver result = this.argumentResolverCache.get(parameter);
if (result == null) { if (result == null) {
for (HandlerMethodArgumentResolver methodArgumentResolver : this.argumentResolvers) { for (HandlerMethodArgumentResolver resolver : this.argumentResolvers) {
if (methodArgumentResolver.supportsParameter(parameter)) { if (resolver.supportsParameter(parameter)) {
result = methodArgumentResolver; result = resolver;
this.argumentResolverCache.put(parameter, result); this.argumentResolverCache.put(parameter, result);
break; break;
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2018 the original author or authors. * Copyright 2002-2019 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -66,11 +66,11 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
@Nullable @Nullable
private ClientHttpConnector connector; private ClientHttpConnector connector;
private ExchangeStrategies exchangeStrategies;
@Nullable @Nullable
private ExchangeFunction exchangeFunction; private ExchangeFunction exchangeFunction;
private ExchangeStrategies exchangeStrategies;
public DefaultWebClientBuilder() { public DefaultWebClientBuilder() {
this.exchangeStrategies = ExchangeStrategies.withDefaults(); this.exchangeStrategies = ExchangeStrategies.withDefaults();
@ -80,8 +80,8 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
Assert.notNull(other, "DefaultWebClientBuilder must not be null"); Assert.notNull(other, "DefaultWebClientBuilder must not be null");
this.baseUrl = other.baseUrl; this.baseUrl = other.baseUrl;
this.defaultUriVariables = this.defaultUriVariables = (other.defaultUriVariables != null ?
other.defaultUriVariables != null ? new LinkedHashMap<>(other.defaultUriVariables) : null; new LinkedHashMap<>(other.defaultUriVariables) : null);
this.uriBuilderFactory = other.uriBuilderFactory; this.uriBuilderFactory = other.uriBuilderFactory;
if (other.defaultHeaders != null) { if (other.defaultHeaders != null) {
this.defaultHeaders = new HttpHeaders(); this.defaultHeaders = new HttpHeaders();
@ -90,13 +90,13 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
else { else {
this.defaultHeaders = null; this.defaultHeaders = null;
} }
this.defaultCookies = this.defaultCookies = (other.defaultCookies != null ?
other.defaultCookies != null ? new LinkedMultiValueMap<>(other.defaultCookies) : null; new LinkedMultiValueMap<>(other.defaultCookies) : null);
this.defaultRequest = other.defaultRequest; this.defaultRequest = other.defaultRequest;
this.filters = other.filters != null ? new ArrayList<>(other.filters) : null; this.filters = other.filters != null ? new ArrayList<>(other.filters) : null;
this.connector = other.connector; this.connector = other.connector;
this.exchangeFunction = other.exchangeFunction;
this.exchangeStrategies = other.exchangeStrategies; this.exchangeStrategies = other.exchangeStrategies;
this.exchangeFunction = other.exchangeFunction;
} }
@ -163,12 +163,6 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
return this; return this;
} }
@Override
public WebClient.Builder clientConnector(ClientHttpConnector connector) {
this.connector = connector;
return this;
}
@Override @Override
public WebClient.Builder filter(ExchangeFilterFunction filter) { public WebClient.Builder filter(ExchangeFilterFunction filter) {
Assert.notNull(filter, "ExchangeFilterFunction must not be null"); Assert.notNull(filter, "ExchangeFilterFunction must not be null");
@ -190,8 +184,8 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
} }
@Override @Override
public WebClient.Builder exchangeFunction(ExchangeFunction exchangeFunction) { public WebClient.Builder clientConnector(ClientHttpConnector connector) {
this.exchangeFunction = exchangeFunction; this.connector = connector;
return this; return this;
} }
@ -202,6 +196,23 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
return this; return this;
} }
@Override
public WebClient.Builder exchangeFunction(ExchangeFunction exchangeFunction) {
this.exchangeFunction = exchangeFunction;
return this;
}
@Override
public WebClient.Builder apply(Consumer<WebClient.Builder> builderConsumer) {
builderConsumer.accept(this);
return this;
}
@Override
public WebClient.Builder clone() {
return new DefaultWebClientBuilder(this);
}
@Override @Override
public WebClient build() { public WebClient build() {
ExchangeFunction exchange = initExchangeFunction(); ExchangeFunction exchange = initExchangeFunction();
@ -245,15 +256,4 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
return CollectionUtils.unmodifiableMultiValueMap(new LinkedMultiValueMap<>(map)); return CollectionUtils.unmodifiableMultiValueMap(new LinkedMultiValueMap<>(map));
} }
@Override
public WebClient.Builder clone() {
return new DefaultWebClientBuilder(this);
}
@Override
public WebClient.Builder apply(Consumer<WebClient.Builder> builderConsumer) {
builderConsumer.accept(this);
return this;
}
} }

View File

@ -307,11 +307,6 @@ public interface WebClient {
*/ */
Builder exchangeFunction(ExchangeFunction exchangeFunction); Builder exchangeFunction(ExchangeFunction exchangeFunction);
/**
* Clone this {@code WebClient.Builder}.
*/
Builder clone();
/** /**
* Apply the given {@code Consumer} to this builder instance. * Apply the given {@code Consumer} to this builder instance.
* <p>This can be useful for applying pre-packaged customizations. * <p>This can be useful for applying pre-packaged customizations.
@ -319,17 +314,20 @@ public interface WebClient {
*/ */
Builder apply(Consumer<Builder> builderConsumer); Builder apply(Consumer<Builder> builderConsumer);
/**
* Clone this {@code WebClient.Builder}.
*/
Builder clone();
/** /**
* Builder the {@link WebClient} instance. * Builder the {@link WebClient} instance.
*/ */
WebClient build(); WebClient build();
} }
/** /**
* Contract for specifying the URI for a request. * Contract for specifying the URI for a request.
*
* @param <S> a self reference to the spec type * @param <S> a self reference to the spec type
*/ */
interface UriSpec<S extends RequestHeadersSpec<?>> { interface UriSpec<S extends RequestHeadersSpec<?>> {
@ -370,7 +368,6 @@ public interface WebClient {
/** /**
* Contract for specifying request headers leading up to the exchange. * Contract for specifying request headers leading up to the exchange.
*
* @param <S> a self reference to the spec type * @param <S> a self reference to the spec type
*/ */
interface RequestHeadersSpec<S extends RequestHeadersSpec<S>> { interface RequestHeadersSpec<S extends RequestHeadersSpec<S>> {