IN PROGRESS - issue INT-389: Allow configuration of a WebServiceMessageSender instance for WS handlers
http://jira.springframework.org/browse/INT-389 added setter methods on AbstractWebServiceHandler and namespace support
This commit is contained in:
@@ -91,6 +91,19 @@ public class WebServiceHandlerParser extends AbstractSingleBeanDefinitionParser
|
||||
if (StringUtils.hasText(faultMessageResolverRef)) {
|
||||
builder.addPropertyReference("faultMessageResolver", faultMessageResolverRef);
|
||||
}
|
||||
|
||||
String messageSenderRef = element.getAttribute("message-sender");
|
||||
String messageSenderListRef = element.getAttribute("message-senders");
|
||||
if(StringUtils.hasText(messageSenderRef) && StringUtils.hasText(messageSenderListRef)){
|
||||
throw new ConfigurationException("Only one of message-sender or mesage-senders should be specified");
|
||||
}
|
||||
|
||||
if (StringUtils.hasText(messageSenderRef)) {
|
||||
builder.addPropertyReference("messageSender", messageSenderRef);
|
||||
}
|
||||
if (StringUtils.hasText(messageSenderListRef)) {
|
||||
builder.addPropertyReference("messageSenders", messageSenderListRef);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
<xsd:attribute name="request-callback" type="xsd:string"/>
|
||||
<xsd:attribute name="message-factory" type="xsd:string"/>
|
||||
<xsd:attribute name="fault-message-resolver" type="xsd:string"/>
|
||||
<xsd:attribute name="message-sender" type="xsd:string"/>
|
||||
<xsd:attribute name="message-senders" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.springframework.ws.client.core.WebServiceMessageCallback;
|
||||
import org.springframework.ws.client.core.WebServiceTemplate;
|
||||
import org.springframework.ws.soap.SoapMessage;
|
||||
import org.springframework.ws.soap.client.core.SoapActionCallback;
|
||||
import org.springframework.ws.transport.WebServiceMessageSender;
|
||||
|
||||
/**
|
||||
* Base class for outbound Web Service-invoking adapters.
|
||||
@@ -65,7 +66,15 @@ public abstract class AbstractWebServiceHandler extends AbstractMessageHandlingE
|
||||
public void setFaultMessageResolver(FaultMessageResolver faultMessageResolver) {
|
||||
this.webServiceTemplate.setFaultMessageResolver(faultMessageResolver);
|
||||
}
|
||||
|
||||
public void setMessageSender(WebServiceMessageSender messageSender) {
|
||||
this.webServiceTemplate.setMessageSender(messageSender);
|
||||
}
|
||||
|
||||
public void setMessageSenders(WebServiceMessageSender[] messageSenders) {
|
||||
this.webServiceTemplate.setMessageSenders(messageSenders);
|
||||
}
|
||||
|
||||
protected WebServiceTemplate getWebServiceTemplate() {
|
||||
return this.webServiceTemplate;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2002-2007 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.ws.config;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
|
||||
import org.springframework.ws.transport.WebServiceConnection;
|
||||
import org.springframework.ws.transport.WebServiceMessageSender;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jonas Partner
|
||||
*
|
||||
*/
|
||||
public class StubMessageSender implements WebServiceMessageSender {
|
||||
|
||||
public WebServiceConnection createConnection(URI uri) throws IOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean supports(URI uri) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,6 +32,7 @@ import org.springframework.ws.WebServiceMessageFactory;
|
||||
import org.springframework.ws.client.core.FaultMessageResolver;
|
||||
import org.springframework.ws.client.core.SourceExtractor;
|
||||
import org.springframework.ws.client.core.WebServiceMessageCallback;
|
||||
import org.springframework.ws.transport.WebServiceMessageSender;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
@@ -108,6 +109,31 @@ public class WebServiceHandlerParserTests {
|
||||
assertEquals(resolver, accessor.getPropertyValue("faultMessageResolver"));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testSimpleWebServiceHandlerWithCustomMessageSender() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"simpleWebServiceHandlerParserTests.xml", this.getClass());
|
||||
MessageEndpoint endpoint = (MessageEndpoint) context.getBean("handlerWithCustomMessageSender");
|
||||
assertEquals(SimpleWebServiceHandler.class, endpoint.getClass());
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(endpoint);
|
||||
accessor = new DirectFieldAccessor(accessor.getPropertyValue("webServiceTemplate"));
|
||||
WebServiceMessageSender messageSender = (WebServiceMessageSender) context.getBean("messageSender");
|
||||
assertEquals(messageSender, ((WebServiceMessageSender[])accessor.getPropertyValue("messageSenders"))[0]);
|
||||
}
|
||||
@Test
|
||||
public void testSimpleWebServiceHandlerWithCustomMessageSenderList() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"simpleWebServiceHandlerParserTests.xml", this.getClass());
|
||||
MessageEndpoint endpoint = (MessageEndpoint) context.getBean("handlerWithCustomMessageSenderList");
|
||||
assertEquals(SimpleWebServiceHandler.class, endpoint.getClass());
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(endpoint);
|
||||
accessor = new DirectFieldAccessor(accessor.getPropertyValue("webServiceTemplate"));
|
||||
WebServiceMessageSender messageSender = (WebServiceMessageSender) context.getBean("messageSender");
|
||||
assertEquals(messageSender, ((WebServiceMessageSender[])accessor.getPropertyValue("messageSenders"))[0]);
|
||||
assertEquals("Wrong number of message senders " ,2 , ((WebServiceMessageSender[])accessor.getPropertyValue("messageSenders")).length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWebServiceHandlerWithAllInOneMarshaller() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
|
||||
@@ -3,12 +3,15 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:si="http://www.springframework.org/schema/integration"
|
||||
xmlns:ws="http://www.springframework.org/schema/integration/ws"
|
||||
xmlns:util='http://www.springframework.org/schema/util'
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd
|
||||
http://www.springframework.org/schema/integration/ws
|
||||
http://www.springframework.org/schema/integration/ws/spring-integration-ws-1.0.xsd">
|
||||
http://www.springframework.org/schema/integration/ws/spring-integration-ws-1.0.xsd
|
||||
http://www.springframework.org/schema/util
|
||||
http://www.springframework.org/schema/util/spring-util.xsd">
|
||||
|
||||
<si:channel id="inputChannel"/>
|
||||
|
||||
@@ -41,6 +44,16 @@
|
||||
input-channel="inputChannel"
|
||||
uri="http://example.org"
|
||||
fault-message-resolver="faultMessageResolver"/>
|
||||
|
||||
<ws:service-activator id="handlerWithCustomMessageSender"
|
||||
input-channel="inputChannel"
|
||||
uri="http://example.org"
|
||||
message-sender="messageSender"/>
|
||||
|
||||
<ws:service-activator id="handlerWithCustomMessageSenderList"
|
||||
input-channel="inputChannel"
|
||||
uri="http://example.org"
|
||||
message-senders="messageSenders"/>
|
||||
|
||||
<bean id="sourceExtractor" class="org.springframework.integration.ws.config.StubSourceExtractor"/>
|
||||
|
||||
@@ -49,5 +62,12 @@
|
||||
<bean id="messageFactory" class="org.springframework.integration.ws.config.StubMessageFactory"/>
|
||||
|
||||
<bean id="faultMessageResolver" class="org.springframework.integration.ws.config.StubFaultMessageResolver"/>
|
||||
|
||||
<bean id="messageSender" class="org.springframework.integration.ws.config.StubMessageSender"/>
|
||||
|
||||
<util:list id="messageSenders">
|
||||
<ref bean="messageSender"/>
|
||||
<bean class="org.springframework.integration.ws.config.StubMessageSender" />
|
||||
</util:list>
|
||||
|
||||
</beans>
|
||||
|
||||
Reference in New Issue
Block a user