Add ClientRequest attribute for URI template
Issue: SPR-16537
This commit is contained in:
		
							parent
							
								
									36cfdf68b1
								
							
						
					
					
						commit
						9352e3d047
					
				| 
						 | 
				
			
			@ -65,6 +65,8 @@ import org.springframework.web.util.UriBuilderFactory;
 | 
			
		|||
 */
 | 
			
		||||
class DefaultWebClient implements WebClient {
 | 
			
		||||
 | 
			
		||||
	private static final String URI_TEMPLATE_ATTRIBUTE = WebClient.class.getName() + ".uriTemplate";
 | 
			
		||||
 | 
			
		||||
	private static final Mono<ClientResponse> NO_HTTP_CLIENT_RESPONSE_ERROR = Mono.error(
 | 
			
		||||
			new IllegalStateException("The underlying HTTP client completed without emitting a response."));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -161,8 +163,8 @@ class DefaultWebClient implements WebClient {
 | 
			
		|||
		@Nullable
 | 
			
		||||
		private BodyInserter<?, ? super ClientHttpRequest> inserter;
 | 
			
		||||
 | 
			
		||||
		@Nullable
 | 
			
		||||
		private Map<String, Object> attributes;
 | 
			
		||||
		private final Map<String, Object> attributes = new LinkedHashMap<>(4);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		DefaultRequestBodyUriSpec(HttpMethod httpMethod) {
 | 
			
		||||
			this.httpMethod = httpMethod;
 | 
			
		||||
| 
						 | 
				
			
			@ -170,11 +172,13 @@ class DefaultWebClient implements WebClient {
 | 
			
		|||
 | 
			
		||||
		@Override
 | 
			
		||||
		public RequestBodySpec uri(String uriTemplate, Object... uriVariables) {
 | 
			
		||||
			attribute(URI_TEMPLATE_ATTRIBUTE, uriTemplate);
 | 
			
		||||
			return uri(uriBuilderFactory.expand(uriTemplate, uriVariables));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		@Override
 | 
			
		||||
		public RequestBodySpec uri(String uriTemplate, Map<String, ?> uriVariables) {
 | 
			
		||||
			attribute(URI_TEMPLATE_ATTRIBUTE, uriTemplate);
 | 
			
		||||
			return uri(uriBuilderFactory.expand(uriTemplate, uriVariables));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -203,13 +207,6 @@ class DefaultWebClient implements WebClient {
 | 
			
		|||
			return this.cookies;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private Map<String, Object> getAttributes() {
 | 
			
		||||
			if (this.attributes == null) {
 | 
			
		||||
				this.attributes = new LinkedHashMap<>(4);
 | 
			
		||||
			}
 | 
			
		||||
			return this.attributes;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		@Override
 | 
			
		||||
		public DefaultRequestBodyUriSpec header(String headerName, String... headerValues) {
 | 
			
		||||
			for (String headerValue : headerValues) {
 | 
			
		||||
| 
						 | 
				
			
			@ -227,14 +224,14 @@ class DefaultWebClient implements WebClient {
 | 
			
		|||
 | 
			
		||||
		@Override
 | 
			
		||||
		public RequestBodySpec attribute(String name, Object value) {
 | 
			
		||||
			getAttributes().put(name, value);
 | 
			
		||||
			this.attributes.put(name, value);
 | 
			
		||||
			return this;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		@Override
 | 
			
		||||
		public RequestBodySpec attributes(Consumer<Map<String, Object>> attributesConsumer) {
 | 
			
		||||
			Assert.notNull(attributesConsumer, "'attributesConsumer' must not be null");
 | 
			
		||||
			attributesConsumer.accept(getAttributes());
 | 
			
		||||
			attributesConsumer.accept(this.attributes);
 | 
			
		||||
			return this;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -330,7 +327,7 @@ class DefaultWebClient implements WebClient {
 | 
			
		|||
			return ClientRequest.method(this.httpMethod, uri)
 | 
			
		||||
					.headers(headers -> headers.addAll(initHeaders()))
 | 
			
		||||
					.cookies(cookies -> cookies.addAll(initCookies()))
 | 
			
		||||
					.attributes(attributes -> attributes.putAll(getAttributes()));
 | 
			
		||||
					.attributes(attributes -> attributes.putAll(this.attributes));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private HttpHeaders initHeaders() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue