diff --git a/core/src/main/java/org/springframework/ws/client/core/support/WebServiceGatewaySupport.java b/core/src/main/java/org/springframework/ws/client/core/support/WebServiceGatewaySupport.java index c2ecfc0c..6a850b6a 100644 --- a/core/src/main/java/org/springframework/ws/client/core/support/WebServiceGatewaySupport.java +++ b/core/src/main/java/org/springframework/ws/client/core/support/WebServiceGatewaySupport.java @@ -24,8 +24,10 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.oxm.Marshaller; import org.springframework.oxm.Unmarshaller; +import org.springframework.util.Assert; import org.springframework.ws.WebServiceMessageFactory; import org.springframework.ws.client.core.WebServiceTemplate; +import org.springframework.ws.transport.WebServiceMessageSender; /** * Convenient super class for application classes that need Web service access. @@ -86,6 +88,21 @@ public abstract class WebServiceGatewaySupport implements InitializingBean, Appl webServiceTemplate.setDefaultUri(uri); } + /** Returns the WebServiceMessageSender used by the gateway. */ + public final WebServiceMessageSender[] getMessageSender() { + return webServiceTemplate.getMessageSenders(); + } + + /** Sets a single WebServiceMessageSender to be used by the gateway. */ + public final void setMessageSender(WebServiceMessageSender messageSender) { + webServiceTemplate.setMessageSender(messageSender); + } + + /** Sets multiple WebServiceMessageSender to be used by the gateway. */ + public final void setMessageSenders(WebServiceMessageSender[] messageSenders) { + webServiceTemplate.setMessageSenders(messageSenders); + } + /** Returns the WebServiceTemplate for the gateway. */ public final WebServiceTemplate getWebServiceTemplate() { return webServiceTemplate; @@ -93,6 +110,7 @@ public abstract class WebServiceGatewaySupport implements InitializingBean, Appl /** Sets the WebServiceTemplate to be used by the gateway. */ public final void setWebServiceTemplate(WebServiceTemplate webServiceTemplate) { + Assert.notNull(webServiceTemplate, "'webServiceTemplate' must not be null"); this.webServiceTemplate = webServiceTemplate; } diff --git a/core/src/main/java/org/springframework/ws/client/support/WebServiceAccessor.java b/core/src/main/java/org/springframework/ws/client/support/WebServiceAccessor.java index b38e58db..816d63bb 100644 --- a/core/src/main/java/org/springframework/ws/client/support/WebServiceAccessor.java +++ b/core/src/main/java/org/springframework/ws/client/support/WebServiceAccessor.java @@ -55,11 +55,25 @@ public abstract class WebServiceAccessor extends TransformerObjectSupport implem return messageSenders; } + /** + * Sets the single message sender used for sending messages. + *

+ * This message sender will be used to resolve an URI to a {@link WebServiceConnection}. + * + * @see #createConnection(String) + */ public void setMessageSender(WebServiceMessageSender messageSender) { Assert.notNull(messageSender, "'messageSender' must not be null"); this.messageSenders = new WebServiceMessageSender[]{messageSender}; } + /** + * Sets the message senders used for sending messages. + *

+ * These message senders will be used to resolve an URI to a {@link WebServiceConnection}. + * + * @see #createConnection(String) + */ public void setMessageSenders(WebServiceMessageSender[] messageSenders) { Assert.notEmpty(messageSenders, "'messageSenders' must not be empty"); this.messageSenders = messageSenders; @@ -72,6 +86,10 @@ public abstract class WebServiceAccessor extends TransformerObjectSupport implem /** * Creates a connection to the given URI, or throws an exception when it cannot be resolved. + *

+ * Default implementation iterates over all configured {@link WebServiceMessageSender} objects, and calls {@link + * WebServiceMessageSender#supports(String)} for each of them. If the sender supports the parameter URI, it creates + * a connection using {@link WebServiceMessageSender#createConnection(String)} . * * @param uri the URI to open a connection to * @return the created connection @@ -80,16 +98,13 @@ public abstract class WebServiceAccessor extends TransformerObjectSupport implem */ protected WebServiceConnection createConnection(String uri) throws IOException { Assert.notEmpty(getMessageSenders(), "Property 'messageSenders' is required"); - WebServiceMessageSender messageSender = null; WebServiceMessageSender[] messageSenders = getMessageSenders(); for (int i = 0; i < messageSenders.length; i++) { if (messageSenders[i].supports(uri)) { - messageSender = messageSenders[i]; - break; + return messageSenders[i].createConnection(uri); } } - Assert.notNull(messageSender, "Could not resolve [" + uri + "] to a WebServiceMessageSender"); - return messageSender.createConnection(uri); + throw new IllegalArgumentException("Could not resolve [" + uri + "] to a WebServiceMessageSender"); } } diff --git a/src/site/apt/upgrading.apt b/src/site/apt/upgrading.apt index d491c4be..72770877 100644 --- a/src/site/apt/upgrading.apt +++ b/src/site/apt/upgrading.apt @@ -15,7 +15,7 @@ should help most users the project update their applications: * The <<>> property on <<> was renamed to <>>. - * Methods for getting and adding attachments were taken from <<> and extraced into a new interface: + * Methods for getting and adding attachments were taken from <<>> and extraced into a new interface: <<>>. Adding a method requires a content id now. * WebServiceTemplate