diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParser.java b/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParser.java index cc6d051b81..21599b4f87 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParser.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParser.java @@ -41,6 +41,7 @@ public class HttpOutboundChannelAdapterParser extends AbstractOutboundChannelAda builder.addPropertyValue("expectReply", false); builder.addConstructorArgValue(element.getAttribute("url")); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "http-method"); + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "message-converters"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "charset"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-payload"); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "request-factory"); diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundGatewayParser.java b/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundGatewayParser.java index d98c3c4b8c..84b0dc9e63 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundGatewayParser.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/config/HttpOutboundGatewayParser.java @@ -44,6 +44,7 @@ public class HttpOutboundGatewayParser extends AbstractConsumerEndpointParser { PACKAGE_PATH + ".HttpRequestExecutingMessageHandler"); builder.addConstructorArgValue(element.getAttribute("url")); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "http-method"); + IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "message-converters"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "charset"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "extract-request-payload", "extractPayload"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "request-timeout", "sendTimeout"); diff --git a/spring-integration-http/src/main/resources/org/springframework/integration/http/config/spring-integration-http-2.0.xsd b/spring-integration-http/src/main/resources/org/springframework/integration/http/config/spring-integration-http-2.0.xsd index dd4a03b5fa..ada705c87f 100644 --- a/spring-integration-http/src/main/resources/org/springframework/integration/http/config/spring-integration-http-2.0.xsd +++ b/spring-integration-http/src/main/resources/org/springframework/integration/http/config/spring-integration-http-2.0.xsd @@ -133,6 +133,14 @@ + + + + Provide a reference to a list of HttpMessageConverter instances. If specified, these converters will replace + all of the default converters that would normally be present on the underlying RestTemplate. + + + @@ -185,6 +193,14 @@ + + + + Provide a reference to a list of HttpMessageConverter instances. If specified, these converters will replace + all of the default converters that would normally be present on the underlying RestTemplate. + + + diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests-context.xml b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests-context.xml index b192291fab..f8105b6775 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests-context.xml +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests-context.xml @@ -1,14 +1,14 @@ - + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation="http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd + http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> @@ -19,6 +19,7 @@ http-method="GET" channel="requests" charset="UTF-8" + message-converters="converterList" extract-payload="false" request-factory="testRequestFactory" order="77" @@ -26,4 +27,9 @@ + + + + + diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests.java b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests.java index e5c69ef478..efe9a6c577 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests.java +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundChannelAdapterParserTests.java @@ -91,6 +91,8 @@ public class HttpOutboundChannelAdapterParserTests { templateAccessor.getPropertyValue("requestFactory"); assertTrue(mapper instanceof DefaultOutboundRequestMapper); assertTrue(requestFactory instanceof SimpleClientHttpRequestFactory); + Object converterListBean = this.applicationContext.getBean("converterList"); + assertEquals(converterListBean, templateAccessor.getPropertyValue("messageConverters")); Object requestFactoryBean = this.applicationContext.getBean("testRequestFactory"); assertEquals(requestFactoryBean, requestFactory); DirectFieldAccessor mapperAccessor = new DirectFieldAccessor(mapper); diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests-context.xml b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests-context.xml index 2ec2db3025..4d0176196e 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests-context.xml +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests-context.xml @@ -3,12 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:si="http://www.springframework.org/schema/integration" + xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/integration/http - http://www.springframework.org/schema/integration/http/spring-integration-http.xsd"> + http://www.springframework.org/schema/integration/http/spring-integration-http.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> @@ -24,6 +26,7 @@ request-channel="requests" request-factory="testRequestFactory" request-timeout="1234" + message-converters="converterList" extract-request-payload="false" reply-channel="replies" charset="UTF-8" @@ -32,4 +35,9 @@ + + + + + diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests.java b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests.java index c204443d1c..791ac74438 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests.java +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/config/HttpOutboundGatewayParserTests.java @@ -98,6 +98,8 @@ public class HttpOutboundGatewayParserTests { templateAccessor.getPropertyValue("requestFactory"); assertTrue(mapper instanceof DefaultOutboundRequestMapper); assertTrue(requestFactory instanceof SimpleClientHttpRequestFactory); + Object converterListBean = this.applicationContext.getBean("converterList"); + assertEquals(converterListBean, templateAccessor.getPropertyValue("messageConverters")); DirectFieldAccessor mapperAccessor = new DirectFieldAccessor(mapper); assertEquals("http://localhost/test2", handlerAccessor.getPropertyValue("uri")); assertEquals(HttpMethod.PUT, handlerAccessor.getPropertyValue("httpMethod")); diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/config/StubHttpMessageConverter.java b/spring-integration-http/src/test/java/org/springframework/integration/http/config/StubHttpMessageConverter.java new file mode 100644 index 0000000000..9867277a98 --- /dev/null +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/config/StubHttpMessageConverter.java @@ -0,0 +1,47 @@ +/* + * Copyright 2002-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.integration.http.config; + +import java.io.IOException; + +import org.springframework.http.HttpInputMessage; +import org.springframework.http.HttpOutputMessage; +import org.springframework.http.converter.AbstractHttpMessageConverter; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.http.converter.HttpMessageNotWritableException; + +/** + * @author Mark Fisher + * @since 2.0 + */ +public class StubHttpMessageConverter extends AbstractHttpMessageConverter { + + @Override + protected String readInternal(Class clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { + return null; + } + + @Override + protected boolean supports(Class clazz) { + return false; + } + + @Override + protected void writeInternal(String t, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { + } + +}