From 113716effdcada7e37e8327e51200615bbb0965e Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Sat, 4 Oct 2014 10:11:59 +0100 Subject: [PATCH] INT-3526 Used Expanded URI In Exception Message JIRA: https://jira.spring.io/browse/INT-3526 Previously, the URI in the exception message is the raw URI with placeholders, if present. Use the expanded URI in the message instead. --- .../http/outbound/HttpRequestExecutingMessageHandler.java | 7 +++++-- .../http/outbound/UriVariableExpressionTests.java | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java b/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java index fd15951b62..226be9969d 100755 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java @@ -397,6 +397,7 @@ public class HttpRequestExecutingMessageHandler extends AbstractReplyProducingMe protected Object handleRequestMessage(Message requestMessage) { String uri = this.uriExpression.getValue(this.evaluationContext, requestMessage, String.class); Assert.notNull(uri, "URI Expression evaluation cannot result in null"); + URI realUri = null; try { HttpMethod httpMethod = this.determineHttpMethod(requestMessage); @@ -412,7 +413,7 @@ public class HttpRequestExecutingMessageHandler extends AbstractReplyProducingMe HttpEntity httpRequest = this.generateHttpRequest(requestMessage, httpMethod); Map uriVariables = this.determineUriVariables(requestMessage); UriComponents uriComponents = UriComponentsBuilder.fromUriString(uri).buildAndExpand(uriVariables); - URI realUri = this.encodeUri ? uriComponents.toUri() : new URI(uriComponents.toUriString()); + realUri = this.encodeUri ? uriComponents.toUri() : new URI(uriComponents.toUriString()); ResponseEntity httpResponse; if (expectedResponseType instanceof ParameterizedTypeReference) { httpResponse = this.restTemplate.exchange(realUri, httpMethod, httpRequest, (ParameterizedTypeReference) expectedResponseType); @@ -445,7 +446,9 @@ public class HttpRequestExecutingMessageHandler extends AbstractReplyProducingMe throw e; } catch (Exception e) { - throw new MessageHandlingException(requestMessage, "HTTP request execution failed for URI [" + uri + "]", e); + throw new MessageHandlingException(requestMessage, "HTTP request execution failed for URI [" + + (realUri == null ? uri : realUri.toString()) + + "]", e); } } diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/outbound/UriVariableExpressionTests.java b/spring-integration-http/src/test/java/org/springframework/integration/http/outbound/UriVariableExpressionTests.java index 6b4c1d3b49..95eecb82e3 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/outbound/UriVariableExpressionTests.java +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/outbound/UriVariableExpressionTests.java @@ -16,7 +16,9 @@ package org.springframework.integration.http.outbound; +import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; @@ -71,6 +73,7 @@ public class UriVariableExpressionTests { } catch (Exception e) { assertEquals("intentional", e.getCause().getMessage()); + assertThat(e.getMessage(), containsString("http://test/bar")); } assertEquals("http://test/bar", uriHolder.get().toString()); }