INT-1752 added test cases to validate 'rest-template' attribute support
This commit is contained in:
@@ -23,7 +23,7 @@ import org.springframework.beans.factory.xml.ParserContext;
|
||||
* @author Oleg Zhurakousky
|
||||
* @since 2.0.2
|
||||
*/
|
||||
public class HttpParsingUtils {
|
||||
class HttpAdapterParsingUtils {
|
||||
|
||||
private static final String[] REST_TEMPLATE_ATTRIBUTES = {
|
||||
"request-factory", "error-handler", "message-converters"
|
||||
@@ -50,8 +50,8 @@ public class HttpOutboundChannelAdapterParser extends AbstractOutboundChannelAda
|
||||
|
||||
String restTemplate = element.getAttribute("rest-template");
|
||||
if (StringUtils.hasText(restTemplate)){
|
||||
HttpParsingUtils.verifyNoRestTemplateAttributes(element, parserContext);
|
||||
builder.addPropertyReference("restTemplate", restTemplate);
|
||||
HttpAdapterParsingUtils.verifyNoRestTemplateAttributes(element, parserContext);
|
||||
builder.addConstructorArgReference("restTemplate");
|
||||
}
|
||||
else {
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "message-converters");
|
||||
|
||||
@@ -48,12 +48,11 @@ public class HttpOutboundGatewayParser extends AbstractConsumerEndpointParser {
|
||||
"org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler");
|
||||
builder.addConstructorArgValue(element.getAttribute("url"));
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "http-method");
|
||||
//IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "message-converters");
|
||||
|
||||
String restTemplate = element.getAttribute("rest-template");
|
||||
if (StringUtils.hasText(restTemplate)){
|
||||
HttpParsingUtils.verifyNoRestTemplateAttributes(element, parserContext);
|
||||
builder.addPropertyReference("restTemplate", restTemplate);
|
||||
HttpAdapterParsingUtils.verifyNoRestTemplateAttributes(element, parserContext);
|
||||
builder.addConstructorArgReference("restTemplate");
|
||||
}
|
||||
else {
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "message-converters");
|
||||
@@ -83,8 +82,6 @@ public class HttpOutboundGatewayParser extends AbstractConsumerEndpointParser {
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-request-payload", "extractPayload");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "expected-response-type");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "request-timeout", "sendTimeout");
|
||||
//IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "request-factory");
|
||||
//IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "error-handler");
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "reply-channel", "outputChannel");
|
||||
List<Element> uriVariableElements = DomUtils.getChildElementsByTagName(element, "uri-variable");
|
||||
if (!CollectionUtils.isEmpty(uriVariableElements)) {
|
||||
|
||||
@@ -94,7 +94,7 @@ public class HttpRequestExecutingMessageHandler extends AbstractReplyProducingMe
|
||||
|
||||
private final Map<String, Expression> uriVariableExpressions = new HashMap<String, Expression>();
|
||||
|
||||
private volatile RestTemplate restTemplate = new RestTemplate();
|
||||
private final RestTemplate restTemplate;
|
||||
|
||||
private final StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
|
||||
|
||||
@@ -110,15 +110,20 @@ public class HttpRequestExecutingMessageHandler extends AbstractReplyProducingMe
|
||||
* Create a handler that will send requests to the provided URI.
|
||||
*/
|
||||
public HttpRequestExecutingMessageHandler(String uri) {
|
||||
this(uri, null);
|
||||
}
|
||||
/**
|
||||
* Create a handler that will send requests to the provided URI using a provided RestTemplate
|
||||
* @param uri
|
||||
* @param resrTemplate
|
||||
*/
|
||||
public HttpRequestExecutingMessageHandler(String uri, RestTemplate restTemplate) {
|
||||
Assert.hasText(uri, "URI is required");
|
||||
this.restTemplate = (restTemplate == null ? new RestTemplate() : restTemplate);
|
||||
this.restTemplate.getMessageConverters().add(0, new SerializingHttpMessageConverter());
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
public void setRestTemplate(RestTemplate restTemplate) {
|
||||
this.restTemplate = restTemplate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the {@link HttpMethod} for requests. The default method will be POST.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user