INT-1866 moved HeaderMapper building logic to parsers (part 2)

This commit is contained in:
Oleg Zhurakousky
2011-05-03 18:39:01 -04:00
parent 7ecd7c2490
commit 7622fd9112
7 changed files with 15 additions and 22 deletions

View File

@@ -33,6 +33,7 @@ import org.w3c.dom.Element;
* 'inbound-channel-adapter' and 'true' for the 'inbound-gateway'.
*
* @author Mark Fisher
* @author Oleg Zhurakousky
*/
public class HttpInboundEndpointParser extends AbstractSingleBeanDefinitionParser {

View File

@@ -72,9 +72,7 @@ public class HttpOutboundChannelAdapterParser extends AbstractOutboundChannelAda
else if (StringUtils.hasText(mappedRequestHeaders)) {
BeanDefinitionBuilder headerMapperBuilder = BeanDefinitionBuilder.genericBeanDefinition(
"org.springframework.integration.http.support.DefaultHttpHeaderMapper");
if (StringUtils.hasText(mappedRequestHeaders)) {
IntegrationNamespaceUtils.setValueIfAttributeDefined(headerMapperBuilder, element, "mapped-request-headers", "outboundHeaderNames");
}
IntegrationNamespaceUtils.setValueIfAttributeDefined(headerMapperBuilder, element, "mapped-request-headers", "outboundHeaderNames");
builder.addPropertyValue("headerMapper", headerMapperBuilder.getBeanDefinition());
}
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "charset");

View File

@@ -34,6 +34,7 @@ import org.springframework.util.xml.DomUtils;
* Parser for the 'outbound-gateway' element of the http namespace.
*
* @author Mark Fisher
* @author Oleg Zhurakousky
*/
public class HttpOutboundGatewayParser extends AbstractConsumerEndpointParser {
@@ -71,7 +72,7 @@ public class HttpOutboundGatewayParser extends AbstractConsumerEndpointParser {
}
builder.addPropertyReference("headerMapper", headerMapper);
}
else {//if (StringUtils.hasText(mappedRequestHeaders) || StringUtils.hasText(mappedResponseHeaders)) {
else {
BeanDefinitionBuilder headerMapperBuilder = BeanDefinitionBuilder.genericBeanDefinition(
"org.springframework.integration.http.support.DefaultHttpHeaderMapper");
headerMapperBuilder.setFactoryMethod("outboundMapper");

View File

@@ -44,6 +44,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.integration.MessageHeaders;
import org.springframework.integration.context.IntegrationContextUtils;
import org.springframework.integration.mapping.HeaderMapper;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
@@ -344,7 +345,8 @@ public class DefaultHttpHeaderMapper implements HeaderMapper<HttpHeaders>, BeanF
public void afterPropertiesSet() throws Exception {
if (this.beanFactory != null && this.beanFactory instanceof DefaultListableBeanFactory){
this.conversionService = ((DefaultListableBeanFactory)this.beanFactory).getConversionService();
this.conversionService = IntegrationContextUtils.getConversionService(this.beanFactory);
}
}

View File

@@ -29,15 +29,11 @@
<inbound-gateway id="withMappedHeadersAndConverter" request-channel="requests"
mapped-response-headers="abc, xyz, person"
mapped-request-headers="foo,bar"/>
<beans:bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<beans:property name="converters">
<util:set>
<beans:bean class="org.springframework.integration.http.config.HttpInboundGatewayParserTests.PersonConverter"/>
</util:set>
</beans:property>
</beans:bean>
<si:converter ref="personConverter"/>
<beans:bean id="personConverter" class="org.springframework.integration.http.config.HttpInboundGatewayParserTests.PersonConverter"/>
</beans:beans>

View File

@@ -35,12 +35,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.http.HttpHeaders;
import org.springframework.integration.Message;
import org.springframework.integration.MessageHeaders;
@@ -63,9 +60,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class HttpInboundGatewayParserTests {
@Autowired
private DefaultListableBeanFactory beanFactory;
@Autowired
@Qualifier("inboundGateway")
private HttpRequestHandlingMessagingGateway gateway;

View File

@@ -462,7 +462,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
mapper.setOutboundHeaderNames(new String[] {"customHeader*"});
ConversionService cs = ConversionServiceFactory.createDefaultConversionService();
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
beanFactory.setConversionService(cs);
beanFactory.registerSingleton("integrationConversionService", cs);
mapper.setBeanFactory(beanFactory);
mapper.afterPropertiesSet();
@@ -484,7 +484,7 @@ public class DefaultHttpHeaderMapperFromMessageInboundTests {
GenericConversionService cs = ConversionServiceFactory.createDefaultConversionService();
cs.addConverter(new TestClassConverter());
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
beanFactory.setConversionService(cs);
beanFactory.registerSingleton("integrationConversionService", cs);
mapper.setBeanFactory(beanFactory);
mapper.afterPropertiesSet();