Fix complexity for DefaultHttpHeaderMapper (#2881)

* Fix complexity for DefaultHttpHeaderMapper

* Deprecate `DefaultHttpHeaderMapper` constants which are fully
Spring Web `HttpHeaders` constants
* Introduce lowercase constants for `getHttpHeader()` switch
* Reuse `HttpHeaders` API as much as possible
* Simplify logic in some methods to break them to smaller methods

* * Remove Java Streams from critical paths
* Rework `setHttpHeader()` for `switch`

* * Use `ObjectUtils.toObjectArray()` to simplify complexity

* * Fix complexity in `setAccept()`, `setAcceptCharset()`, `setAllow()`
& `setIfNoneMatch()` using newly extracted `valueToCollection()`
This commit is contained in:
Artem Bilan
2019-04-05 13:48:47 -04:00
committed by Gary Russell
parent 2e2b49a22f
commit cff67ccdb4
5 changed files with 1042 additions and 858 deletions

View File

@@ -188,9 +188,7 @@ public abstract class AbstractHttpRequestExecutingMessageHandler extends Abstrac
* be returned as a payload of the reply Message.
* To take advantage of the HttpMessageConverters
* registered on this adapter, provide a different type).
*
* @param expectedResponseType The expected type.
*
* Also see {@link #setExpectedResponseTypeExpression(Expression)}
*/
public void setExpectedResponseType(Class<?> expectedResponseType) {
@@ -221,7 +219,6 @@ public abstract class AbstractHttpRequestExecutingMessageHandler extends Abstrac
/**
* Set the Map of URI variable expressions to evaluate against the outbound message
* when replacing the variable placeholders in a URI template.
*
* @param uriVariableExpressions The URI variable expressions.
*/
public void setUriVariableExpressions(Map<String, Expression> uriVariableExpressions) {
@@ -235,7 +232,6 @@ public abstract class AbstractHttpRequestExecutingMessageHandler extends Abstrac
* Set the {@link Expression} to evaluate against the outbound message; the expression
* must evaluate to a Map of URI variable expressions to evaluate against the outbound message
* when replacing the variable placeholders in a URI template.
*
* @param uriVariablesExpression The URI variables expression.
*/
public void setUriVariablesExpression(Expression uriVariablesExpression) {
@@ -246,7 +242,6 @@ public abstract class AbstractHttpRequestExecutingMessageHandler extends Abstrac
* Set to true if you wish 'Set-Cookie' headers in responses to be
* transferred as 'Cookie' headers in subsequent interactions for
* a message.
*
* @param transferCookies the transferCookies to set.
*/
public void setTransferCookies(boolean transferCookies) {
@@ -343,14 +338,14 @@ public abstract class AbstractHttpRequestExecutingMessageHandler extends Abstrac
private void doConvertSetCookie(Map<String, Object> headers) {
String keyName = null;
for (String key : headers.keySet()) {
if (key.equalsIgnoreCase(DefaultHttpHeaderMapper.SET_COOKIE)) {
if (key.equalsIgnoreCase(HttpHeaders.SET_COOKIE)) {
keyName = key;
break;
}
}
if (keyName != null) {
Object cookies = headers.remove(keyName);
headers.put(DefaultHttpHeaderMapper.COOKIE, cookies);
headers.put(HttpHeaders.COOKIE, cookies);
if (logger.isDebugEnabled()) {
logger.debug("Converted Set-Cookie header to Cookie for: "
+ cookies);
@@ -562,7 +557,6 @@ public abstract class AbstractHttpRequestExecutingMessageHandler extends Abstrac
.usingEvaluationContext(evaluationContextToUse)
.withRoot(requestMessage)
.build();
}
}

View File

@@ -61,11 +61,11 @@ import org.springframework.web.client.RestTemplate;
* @since 2.0
*/
public class HttpRequestExecutingMessageHandler extends AbstractHttpRequestExecutingMessageHandler {
private final RestTemplate restTemplate;
/**
* Create a handler that will send requests to the provided URI.
*
* @param uri The URI.
*/
public HttpRequestExecutingMessageHandler(URI uri) {
@@ -74,7 +74,6 @@ public class HttpRequestExecutingMessageHandler extends AbstractHttpRequestExecu
/**
* Create a handler that will send requests to the provided URI.
*
* @param uri The URI.
*/
public HttpRequestExecutingMessageHandler(String uri) {
@@ -83,7 +82,6 @@ public class HttpRequestExecutingMessageHandler extends AbstractHttpRequestExecu
/**
* Create a handler that will send requests to the provided URI Expression.
*
* @param uriExpression The URI expression.
*/
public HttpRequestExecutingMessageHandler(Expression uriExpression) {
@@ -142,9 +140,7 @@ public class HttpRequestExecutingMessageHandler extends AbstractHttpRequestExecu
/**
* Set the {@link ClientHttpRequestFactory} for the underlying {@link RestTemplate}.
*
* @param requestFactory The request factory.
*
* @see RestTemplate#setRequestFactory(ClientHttpRequestFactory)
*/
public void setRequestFactory(ClientHttpRequestFactory requestFactory) {
@@ -154,6 +150,7 @@ public class HttpRequestExecutingMessageHandler extends AbstractHttpRequestExecu
@Override
protected Object exchange(Supplier<URI> uriSupplier, HttpMethod httpMethod, HttpEntity<?> httpRequest,
Object expectedResponseType, Message<?> requestMessage) {
URI uri = uriSupplier.get();
ResponseEntity<?> httpResponse;
try {
@@ -162,14 +159,13 @@ public class HttpRequestExecutingMessageHandler extends AbstractHttpRequestExecu
(ParameterizedTypeReference<?>) expectedResponseType);
}
else {
httpResponse = this.restTemplate.exchange(uri, httpMethod, httpRequest,
(Class<?>) expectedResponseType);
httpResponse = this.restTemplate.exchange(uri, httpMethod, httpRequest, (Class<?>) expectedResponseType);
}
return getReply(httpResponse);
}
catch (RestClientException e) {
throw new MessageHandlingException(requestMessage,
"HTTP request execution failed for URI [" + uri + "]", e);
throw new MessageHandlingException(requestMessage, "HTTP request execution failed for URI [" + uri + "]", e);
}
}
}

View File

@@ -75,7 +75,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAllow().size()).isEqualTo(1);
assertThat(headers.getAllow()).hasSize(1);
assertThat(headers.getAllow().iterator().next()).isEqualTo(HttpMethod.GET);
}
@@ -87,7 +87,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAllow().size()).isEqualTo(1);
assertThat(headers.getAllow()).hasSize(1);
assertThat(headers.getAllow().iterator().next()).isEqualTo(HttpMethod.GET);
}
@@ -99,7 +99,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAllow().size()).isEqualTo(1);
assertThat(headers.getAllow()).hasSize(1);
assertThat(headers.getAllow().iterator().next()).isEqualTo(HttpMethod.GET);
}
@@ -301,12 +301,12 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateTransferEncodingMappedFromHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "Transfer-Encoding" });
mapper.setInboundHeaderNames("Transfer-Encoding");
HttpHeaders headers = new HttpHeaders();
headers.set("Transfer-Encoding", "chunked");
Map<String, ?> result = mapper.toHeaders(headers);
assertThat(result.size()).isEqualTo(1);
assertThat(result).hasSize(1);
assertThat(result.get("Transfer-Encoding")).isEqualTo("chunked");
}
@@ -329,23 +329,23 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateCustomHeaderNamesMappedToHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "foo", "bar" });
mapper.setOutboundHeaderNames("foo", "bar");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foo", "abc");
messageHeaders.put("bar", "123");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.size()).isEqualTo(2);
assertThat(headers.get("foo").size()).isEqualTo(1);
assertThat(headers.get("foo")).hasSize(1);
assertThat(headers.getFirst("foo")).isEqualTo("abc");
assertThat(headers.get("bar").size()).isEqualTo(1);
assertThat(headers.get("bar")).hasSize(1);
assertThat(headers.getFirst("bar")).isEqualTo("123");
}
@Test
public void validateCustomHeaderNamePatternsMappedToHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "x*", "*z", "a*f" });
mapper.setOutboundHeaderNames("x*", "*z", "a*f");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("x1", "x1-value");
messageHeaders.put("1x", "1x-value");
@@ -361,18 +361,18 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
assertThat(headers.get("z1")).isNull();
assertThat(headers.get("abc")).isNull();
assertThat(headers.get("def")).isNull();
assertThat(headers.get("x1").size()).isEqualTo(1);
assertThat(headers.get("x1")).hasSize(1);
assertThat(headers.getFirst("x1")).isEqualTo("x1-value");
assertThat(headers.get("1z").size()).isEqualTo(1);
assertThat(headers.get("1z")).hasSize(1);
assertThat(headers.getFirst("1z")).isEqualTo("1z-value");
assertThat(headers.get("abcdef").size()).isEqualTo(1);
assertThat(headers.get("abcdef")).hasSize(1);
assertThat(headers.getFirst("abcdef")).isEqualTo("abcdef-value");
}
@Test
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
mapper.setOutboundHeaderNames("foo*", "HTTP_RESPONSE_HEADERS");
mapper.setUserDefinedHeaderPrefix("X-");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
@@ -383,7 +383,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
assertThat(headers.size()).isEqualTo(2);
assertThat(headers.getAccept().isEmpty()).isTrue();
assertThat(headers.getContentType()).isEqualTo(MediaType.TEXT_XML);
assertThat(headers.get("X-foobar").size()).isEqualTo(1);
assertThat(headers.get("X-foobar")).hasSize(1);
assertThat(headers.getFirst("X-foobar")).isEqualTo("abc");
}
@@ -391,7 +391,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefix() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setUserDefinedHeaderPrefix("Z-");
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
mapper.setOutboundHeaderNames("foo*", "HTTP_RESPONSE_HEADERS");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
@@ -401,7 +401,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
assertThat(headers.size()).isEqualTo(2);
assertThat(headers.getAccept().isEmpty()).isTrue();
assertThat(headers.getContentType()).isEqualTo(MediaType.TEXT_XML);
assertThat(headers.get("Z-foobar").size()).isEqualTo(1);
assertThat(headers.get("Z-foobar")).hasSize(1);
assertThat(headers.getFirst("Z-foobar")).isEqualTo("abc");
}
@@ -409,7 +409,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefixEmptyString() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setUserDefinedHeaderPrefix("");
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
mapper.setOutboundHeaderNames("foo*", "HTTP_RESPONSE_HEADERS");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
@@ -419,7 +419,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
assertThat(headers.size()).isEqualTo(2);
assertThat(headers.getAccept().isEmpty()).isTrue();
assertThat(headers.getContentType()).isEqualTo(MediaType.TEXT_XML);
assertThat(headers.get("foobar").size()).isEqualTo(1);
assertThat(headers.get("foobar")).hasSize(1);
assertThat(headers.getFirst("foobar")).isEqualTo("abc");
}
@@ -427,7 +427,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
public void validateCustomHeaderNamePatternsAndStandardResponseHeadersMappedToHttpHeadersWithCustomPrefixNull() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setUserDefinedHeaderPrefix(null);
mapper.setOutboundHeaderNames(new String[] { "foo*", "HTTP_RESPONSE_HEADERS" });
mapper.setOutboundHeaderNames("foo*", "HTTP_RESPONSE_HEADERS");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Accept", "text/html");
@@ -437,14 +437,14 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
assertThat(headers.size()).isEqualTo(2);
assertThat(headers.getAccept().isEmpty()).isTrue();
assertThat(headers.getContentType()).isEqualTo(MediaType.TEXT_XML);
assertThat(headers.get("foobar").size()).isEqualTo(1);
assertThat(headers.get("foobar")).hasSize(1);
assertThat(headers.getFirst("foobar")).isEqualTo("abc");
}
@Test
public void validateCustomHeaderNamesMappedFromHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "foo", "bar" });
mapper.setInboundHeaderNames("foo", "bar");
HttpHeaders headers = new HttpHeaders();
headers.set("foo", "abc");
headers.set("bar", "123");
@@ -457,7 +457,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateCustomHeaderNamePatternsMappedFromHttpHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "x*", "*z", "a*f" });
mapper.setInboundHeaderNames("x*", "*z", "a*f");
HttpHeaders headers = new HttpHeaders();
headers.set("x1", "x1-value");
headers.set("1x", "1x-value");
@@ -482,13 +482,13 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
throws URISyntaxException {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] { "foo*", "HTTP_REQUEST_HEADERS" });
mapper.setInboundHeaderNames("foo*", "HTTP_REQUEST_HEADERS");
HttpHeaders headers = new HttpHeaders();
headers.set("foobar", "abc");
headers.setAccept(Collections.singletonList(MediaType.TEXT_XML));
headers.setLocation(new URI("http://www.example.org"));
Map<String, ?> result = mapper.toHeaders(headers);
assertThat(result.size()).isEqualTo(2);
assertThat(result).hasSize(2);
assertThat(result.get("Location")).isNull();
assertThat(result.get("foobar")).isEqualTo("abc");
assertThat(result.get("Accept")).isEqualTo(MediaType.TEXT_XML);
@@ -497,7 +497,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateCustomHeadersWithNonStringValuesAndNoConverter() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "customHeader*" });
mapper.setOutboundHeaderNames("customHeader*");
HttpHeaders headers = new HttpHeaders();
Map<String, Object> messageHeaders = new HashMap<>();
@@ -513,7 +513,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateCustomHeadersWithNonStringValuesAndDefaultConverterOnly() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "customHeader*" });
mapper.setOutboundHeaderNames("customHeader*");
ConversionService cs = new DefaultConversionService();
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
beanFactory.registerSingleton("integrationConversionService", cs);
@@ -534,7 +534,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
@Test
public void validateCustomHeadersWithNonStringValuesAndDefaultConverterWithCustomConverter() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] { "customHeader*" });
mapper.setOutboundHeaderNames("customHeader*");
GenericConversionService cs = new DefaultConversionService();
cs.addConverter(new TestClassConverter());
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();

View File

@@ -48,6 +48,7 @@ import org.springframework.util.StopWatch;
* @author Gunnar Hillert
* @author Artem Bilan
* @author Gary Russell
*
* @since 2.0.1
*/
public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@@ -56,7 +57,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test(expected = IllegalArgumentException.class)
public void validateAcceptHeaderWithNoSlash() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", "bar");
HttpHeaders headers = new HttpHeaders();
@@ -66,7 +67,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptHeaderSingleString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", "bar/foo");
HttpHeaders headers = new HttpHeaders();
@@ -79,7 +80,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptHeaderSingleMediaType() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", new MediaType("bar", "foo"));
HttpHeaders headers = new HttpHeaders();
@@ -92,12 +93,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptHeaderMultipleAsDelimitedString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", "bar/foo, text/xml");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAccept().size()).isEqualTo(2);
assertThat(headers.getAccept()).hasSize(2);
assertThat(headers.getAccept().get(0).toString()).isEqualTo("bar/foo");
assertThat(headers.getAccept().get(1).toString()).isEqualTo("text/xml");
}
@@ -105,12 +106,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptHeaderMultipleAsStringArray() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept", new String[] {"bar/foo", "text/xml"});
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", new String[] { "bar/foo", "text/xml" });
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAccept().size()).isEqualTo(2);
assertThat(headers.getAccept()).hasSize(2);
assertThat(headers.getAccept().get(0).toString()).isEqualTo("bar/foo");
assertThat(headers.getAccept().get(1).toString()).isEqualTo("text/xml");
}
@@ -118,12 +119,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptHeaderMultipleAsStringCollection() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", Arrays.asList("bar/foo", "text/xml"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAccept().size()).isEqualTo(2);
assertThat(headers.getAccept()).hasSize(2);
assertThat(headers.getAccept().get(0).toString()).isEqualTo("bar/foo");
assertThat(headers.getAccept().get(1).toString()).isEqualTo("text/xml");
}
@@ -131,25 +132,25 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptHeaderMultipleAsStringCollectionCaseInsensitive() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("acCePt", Arrays.asList("bar/foo", "text/xml"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAccept().size()).isEqualTo(2);
assertThat(headers.getAccept()).hasSize(2);
assertThat(headers.getAccept().get(0).toString()).isEqualTo("bar/foo");
assertThat(headers.getAccept().get(1).toString()).isEqualTo("text/xml");
}
@Test
public void validateAcceptHeaderMultipleAsMediatypeCollection() {
public void validateAcceptHeaderMultipleAsMediaTypeCollection() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept", Arrays.asList(new MediaType("bar", "foo"), new MediaType("text", "xml")));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAccept().size()).isEqualTo(2);
assertThat(headers.getAccept()).hasSize(2);
assertThat(headers.getAccept().get(0).toString()).isEqualTo("bar/foo");
assertThat(headers.getAccept().get(1).toString()).isEqualTo("text/xml");
}
@@ -159,7 +160,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test(expected = UnsupportedCharsetException.class)
public void validateAcceptCharsetHeaderWithWrongCharset() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -168,36 +169,36 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptCharsetHeaderSingleString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", "UTF-8");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(1);
assertThat(headers.getAcceptCharset()).hasSize(1);
assertThat(headers.getAcceptCharset().get(0).displayName()).isEqualTo("UTF-8");
}
@Test
public void validateAcceptCharsetHeaderSingleCharset() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", Charset.forName("UTF-8"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(1);
assertThat(headers.getAcceptCharset()).hasSize(1);
assertThat(headers.getAcceptCharset().get(0).displayName()).isEqualTo("UTF-8");
}
@Test
public void validateAcceptCharsetHeaderMultipleAsDelimitedString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", "UTF-8, ISO-8859-1");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(2);
assertThat(headers.getAcceptCharset()).hasSize(2);
// validate contains since the order is not enforced
assertThat(headers.getAcceptCharset().contains(Charset.forName("UTF-8"))).isTrue();
assertThat(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1"))).isTrue();
@@ -206,12 +207,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptCharsetHeaderMultipleAsStringArray() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", new String[] {"UTF-8", "ISO-8859-1"});
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", new String[] { "UTF-8", "ISO-8859-1" });
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(2);
assertThat(headers.getAcceptCharset()).hasSize(2);
// validate contains since the order is not enforced
assertThat(headers.getAcceptCharset().contains(Charset.forName("UTF-8"))).isTrue();
assertThat(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1"))).isTrue();
@@ -220,12 +221,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptCharsetHeaderMultipleAsCharsetArray() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("Accept-Charset", new Charset[] {Charset.forName("UTF-8"), Charset.forName("ISO-8859-1")});
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", new Charset[] { Charset.forName("UTF-8"), Charset.forName("ISO-8859-1") });
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(2);
assertThat(headers.getAcceptCharset()).hasSize(2);
// validate contains since the order is not enforced
assertThat(headers.getAcceptCharset().contains(Charset.forName("UTF-8"))).isTrue();
assertThat(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1"))).isTrue();
@@ -234,12 +235,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptCharsetHeaderMultipleAsCollectionOfStrings() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", Arrays.asList("UTF-8", "ISO-8859-1"));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(2);
assertThat(headers.getAcceptCharset()).hasSize(2);
// validate contains since the order is not enforced
assertThat(headers.getAcceptCharset().contains(Charset.forName("UTF-8"))).isTrue();
assertThat(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1"))).isTrue();
@@ -248,12 +249,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateAcceptCharsetHeaderMultipleAsCollectionOfCharsets() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Accept-Charset", Arrays.asList(Charset.forName("UTF-8"), Charset.forName("ISO-8859-1")));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getAcceptCharset().size()).isEqualTo(2);
assertThat(headers.getAcceptCharset()).hasSize(2);
// validate contains since the order is not enforced
assertThat(headers.getAcceptCharset().contains(Charset.forName("UTF-8"))).isTrue();
assertThat(headers.getAcceptCharset().contains(Charset.forName("ISO-8859-1"))).isTrue();
@@ -264,7 +265,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateCacheControl() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Cache-Control", "foo");
HttpHeaders headers = new HttpHeaders();
@@ -277,7 +278,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateContentLengthAsString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Content-Length", "1");
HttpHeaders headers = new HttpHeaders();
@@ -288,7 +289,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateContentLengthAsNumber() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Content-Length", 1);
HttpHeaders headers = new HttpHeaders();
@@ -299,7 +300,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test(expected = NumberFormatException.class)
public void validateContentLengthAsNonNumericString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Content-Length", "foo");
HttpHeaders headers = new HttpHeaders();
@@ -311,7 +312,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test(expected = IllegalArgumentException.class)
public void validateContentTypeWrongValue() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put(MessageHeaders.CONTENT_TYPE, "foo");
HttpHeaders headers = new HttpHeaders();
@@ -321,7 +322,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateContentTypeAsString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Content-Type", "text/html");
HttpHeaders headers = new HttpHeaders();
@@ -333,7 +334,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateContentTypeAsMediaType() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put(MessageHeaders.CONTENT_TYPE, new MediaType("text", "html"));
HttpHeaders headers = new HttpHeaders();
@@ -347,7 +348,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateDateAsNumber() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Date", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -360,7 +361,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateDateAsString() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Date", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -373,7 +374,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateDateAsDate() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Date", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -388,7 +389,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateIfModifiedSinceAsNumber() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-Modified-Since", 12345678);
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -402,7 +403,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateIfModifiedSinceAsString() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-Modified-Since", "12345678");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -416,7 +417,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
@Test
public void validateIfModifiedSinceAsDate() throws ParseException {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-Modified-Since", new Date(12345678));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -430,74 +431,74 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
// If-None-Match
@Test
public void validateIfNoneMatch() throws ParseException {
public void validateIfNoneMatch() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-None-Match", "\"1234567\"");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getIfNoneMatch().size()).isEqualTo(1);
assertThat(headers.getIfNoneMatch()).hasSize(1);
assertThat(headers.getIfNoneMatch().get(0)).isEqualTo("\"1234567\"");
}
@Test
public void validateIfNoneMatchAsDelimitedString() throws ParseException {
public void validateIfNoneMatchAsDelimitedString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-None-Match", "\"123,4567\", \"123\"");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getIfNoneMatch().size()).isEqualTo(2);
assertThat(headers.getIfNoneMatch()).hasSize(2);
assertThat(headers.getIfNoneMatch().get(0)).isEqualTo("\"123,4567\"");
assertThat(headers.getIfNoneMatch().get(1)).isEqualTo("\"123\"");
}
@Test
public void validateIfNoneMatchAsStringArray() throws ParseException {
public void validateIfNoneMatchAsStringArray() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
messageHeaders.put("If-None-Match", new String[] {"\"1234567\"", "\"123\""});
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-None-Match", new String[] { "\"1234567\"", "\"123\"" });
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getIfNoneMatch().size()).isEqualTo(2);
assertThat(headers.getIfNoneMatch()).hasSize(2);
assertThat(headers.getIfNoneMatch().get(0)).isEqualTo("\"1234567\"");
assertThat(headers.getIfNoneMatch().get(1)).isEqualTo("\"123\"");
}
@Test
public void validateIfNoneMatchAsCommaDelimitedString() throws ParseException {
public void validateIfNoneMatchAsCommaDelimitedString() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-None-Match", "\"123.4567\", \"123\"");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getIfNoneMatch().size()).isEqualTo(2);
assertThat(headers.getIfNoneMatch()).hasSize(2);
assertThat(headers.getIfNoneMatch().get(0)).isEqualTo("\"123.4567\"");
assertThat(headers.getIfNoneMatch().get(1)).isEqualTo("\"123\"");
}
@Test
public void validateIfNoneMatchAsStringCollection() throws ParseException {
public void validateIfNoneMatchAsStringCollection() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("If-None-Match", Arrays.asList("\"1234567\"", "\"123\""));
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.getIfNoneMatch().size()).isEqualTo(2);
assertThat(headers.getIfNoneMatch()).hasSize(2);
assertThat(headers.getIfNoneMatch().get(0)).isEqualTo("\"1234567\"");
assertThat(headers.getIfNoneMatch().get(1)).isEqualTo("\"123\"");
}
// Pragma tests
@Test
public void validatePragma() throws ParseException {
public void validatePragma() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Pragma", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -506,9 +507,9 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
// Transfer-Encoding tests
@Test
public void validateTransferEncoding() throws ParseException {
public void validateTransferEncoding() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Transfer-Encoding", "chunked");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -516,20 +517,20 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
}
@Test
public void validateTransferEncodingToHeaders() throws ParseException {
public void validateTransferEncodingToHeaders() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("Transfer-Encoding", "chunked");
Map<String, ?> messageHeaders = mapper.toHeaders(httpHeaders);
assertThat(messageHeaders.size()).isEqualTo(1);
assertThat(messageHeaders).hasSize(1);
}
@Test
@Ignore
public void perf() throws ParseException {
public void perf() {
HeaderMapper<HttpHeaders> mapper = DefaultHttpHeaderMapper.outboundMapper();
HttpHeaders httpHeaders = new HttpHeaders();
@@ -554,9 +555,9 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
// Custom headers
@Test
public void validateCustomHeaderWithNoHeaderNames() throws ParseException {
public void validateCustomHeaderWithNoHeaderNames() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foo", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
@@ -565,24 +566,24 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
}
@Test
public void validateCustomHeaderWithHeaderNames() throws ParseException {
public void validateCustomHeaderWithHeaderNames() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] {"foo"});
Map<String, Object> messageHeaders = new HashMap<String, Object>();
mapper.setOutboundHeaderNames("foo");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foo", "foo");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.get("X-foo")).isNull();
assertThat(headers.get("foo")).isNotNull();
assertThat(headers.get("foo").size() == 1).isTrue();
assertThat(headers.get("foo")).hasSize(1);
assertThat(headers.get("foo").get(0)).isEqualTo("foo");
}
@Test
public void validateCustomHeaderWithHeaderNamePatterns() throws ParseException {
public void validateCustomHeaderWithHeaderNamePatterns() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] {"x*", "*z", "a*f"});
Map<String, Object> messageHeaders = new HashMap<String, Object>();
mapper.setOutboundHeaderNames("x*", "*z", "a*f");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("x1", "x1-value");
messageHeaders.put("1x", "1x-value");
messageHeaders.put("z1", "z1-value");
@@ -592,80 +593,80 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
messageHeaders.put("abcdef", "abcdef-value");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.size()).isEqualTo(3);
assertThat(headers).hasSize(3);
assertThat(headers.get("1x")).isNull();
assertThat(headers.get("z1")).isNull();
assertThat(headers.get("abc")).isNull();
assertThat(headers.get("def")).isNull();
assertThat(headers.get("x1").size()).isEqualTo(1);
assertThat(headers.get("x1")).hasSize(1);
assertThat(headers.getFirst("x1")).isEqualTo("x1-value");
assertThat(headers.get("1z").size()).isEqualTo(1);
assertThat(headers.get("1z")).hasSize(1);
assertThat(headers.getFirst("1z")).isEqualTo("1z-value");
assertThat(headers.get("abcdef").size()).isEqualTo(1);
assertThat(headers.get("abcdef")).hasSize(1);
assertThat(headers.getFirst("abcdef")).isEqualTo("abcdef-value");
}
@Test
public void validateCustomHeaderWithHeaderNamePatternsAndStandardRequestHeaders() throws ParseException {
public void validateCustomHeaderWithHeaderNamePatternsAndStandardRequestHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] {"foo*", "HTTP_REQUEST_HEADERS"});
Map<String, Object> messageHeaders = new HashMap<String, Object>();
mapper.setOutboundHeaderNames("foo*", "HTTP_REQUEST_HEADERS");
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("Content-Type", "text/html");
messageHeaders.put("Accept", "text/xml");
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.size()).isEqualTo(3);
assertThat(headers.get("foobar").size()).isEqualTo(1);
assertThat(headers).hasSize(3);
assertThat(headers.get("foobar")).hasSize(1);
assertThat(headers.getFirst("foobar")).isEqualTo("abc");
assertThat(headers.getContentType().toString()).isEqualTo("text/html");
assertThat(headers.getAccept().size()).isEqualTo(1);
assertThat(headers.getAccept()).hasSize(1);
assertThat(headers.getAccept().get(0)).isEqualTo(MediaType.TEXT_XML);
}
@Test
public void validateCustomHeaderWithHeaderNamePatternsAndStandardResponseHeaders() throws ParseException {
public void validateCustomHeaderWithHeaderNamePatternsAndStandardResponseHeaders() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] {"foo*", "HTTP_RESPONSE_HEADERS"});
mapper.setInboundHeaderNames("foo*", "HTTP_RESPONSE_HEADERS");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("foobar", "abc");
httpHeaders.setContentType(MediaType.TEXT_HTML);
httpHeaders.setAccept(Collections.singletonList(MediaType.TEXT_HTML));
Map<String, ?> messageHeaders = mapper.toHeaders(httpHeaders);
assertThat(messageHeaders.size()).isEqualTo(2);
assertThat(messageHeaders).hasSize(2);
assertThat(messageHeaders.get("Accept")).isNull();
assertThat(messageHeaders.get("foobar")).isEqualTo("abc");
assertThat(messageHeaders.get(MessageHeaders.CONTENT_TYPE).toString()).isEqualTo("text/html");
}
@Test
public void validateCustomHeaderWithStandardPrefix() throws Exception {
public void validateCustomHeaderWithStandardPrefix() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] {"X-Foo"});
mapper.setInboundHeaderNames("X-Foo");
HttpHeaders headers = new HttpHeaders();
headers.set("x-foo", "x-foo-value");
Map<String, ?> result = mapper.toHeaders(headers);
assertThat(result.size()).isEqualTo(1);
assertThat(result).hasSize(1);
assertThat(result.get("x-foo")).isEqualTo("x-foo-value");
}
@Test
public void validateCustomHeaderWithStandardPrefixSameCase() throws Exception {
public void validateCustomHeaderWithStandardPrefixSameCase() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setInboundHeaderNames(new String[] {"X-Foo"});
mapper.setInboundHeaderNames("X-Foo");
HttpHeaders headers = new HttpHeaders();
headers.set("X-Foo", "x-foo-value");
Map<String, ?> result = mapper.toHeaders(headers);
assertThat(result.size()).isEqualTo(1);
assertThat(result).hasSize(1);
assertThat(result.get("X-Foo")).isEqualTo("x-foo-value");
}
@Test
public void validateCustomHeaderCaseInsensitivity() throws ParseException {
public void validateCustomHeaderCaseInsensitivity() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
mapper.setOutboundHeaderNames(new String[] {"*", "HTTP_REQUEST_HEADERS"});
mapper.setOutboundHeaderNames("*", "HTTP_REQUEST_HEADERS");
mapper.setUserDefinedHeaderPrefix("X-");
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("foobar", "abc");
messageHeaders.put("X-bar", "xbar");
messageHeaders.put("x-baz", "xbaz");
@@ -674,12 +675,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
HttpHeaders headers = new HttpHeaders();
mapper.fromHeaders(new MessageHeaders(messageHeaders), headers);
assertThat(headers.size()).isEqualTo(5);
assertThat(headers.get("X-foobar").size()).isEqualTo(1);
assertThat(headers.get("x-foobar").size()).isEqualTo(1);
assertThat(headers.get("X-bar").size()).isEqualTo(1);
assertThat(headers.get("x-bar").size()).isEqualTo(1);
assertThat(headers.get("X-baz").size()).isEqualTo(1);
assertThat(headers.get("x-baz").size()).isEqualTo(1);
assertThat(headers.get("X-foobar")).hasSize(1);
assertThat(headers.get("x-foobar")).hasSize(1);
assertThat(headers.get("X-bar")).hasSize(1);
assertThat(headers.get("x-bar")).hasSize(1);
assertThat(headers.get("X-baz")).hasSize(1);
assertThat(headers.get("x-baz")).hasSize(1);
}
@Test
@@ -687,7 +688,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
DefaultHttpHeaderMapper mapper = DefaultHttpHeaderMapper.outboundMapper();
// not suppressed on outbound request, by default
mapper.setExcludedOutboundStandardRequestHeaderNames("Content-Length");
Map<String, Object> messageHeaders = new HashMap<String, Object>();
Map<String, Object> messageHeaders = new HashMap<>();
messageHeaders.put("Content-Length", 4);
HttpHeaders headers = new HttpHeaders();
@@ -704,7 +705,7 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
}
@Test
public void testInt2995IfModifiedSince() throws Exception {
public void testInt2995IfModifiedSince() {
Date ifModifiedSince = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
@@ -720,12 +721,12 @@ public class DefaultHttpHeaderMapperFromMessageOutboundTests {
}
@Test
public void testContentDispositionHeader() throws Exception {
public void testContentDispositionHeader() {
HttpHeaders headers = new HttpHeaders();
String headerValue = "attachment; filename=\"test.txt\"";
headers.set("Content-Disposition", headerValue);
Map<String, Object> messageHeaders = DefaultHttpHeaderMapper.outboundMapper().toHeaders(headers);
assertThat(messageHeaders.size()).isEqualTo(1);
assertThat(messageHeaders).hasSize(1);
assertThat(messageHeaders.get("Content-Disposition")).isEqualTo(headerValue);
}