Merge branch '5.1.x'
This commit is contained in:
commit
dea9ad6cb2
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>> {
|
||||||
|
|
Loading…
Reference in New Issue