INT-1752 added test cases to validate 'rest-template' attribute support

This commit is contained in:
Oleg Zhurakousky
2011-01-29 11:34:26 -05:00
parent c4fe6f1c47
commit fc00a926c0
7 changed files with 68 additions and 13 deletions

View File

@@ -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"

View File

@@ -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");

View File

@@ -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)) {

View File

@@ -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.
*/