Fixed SWS-122: A MessageSender setter on WebServicesGatewaySupport
This commit is contained in:
@@ -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 <code>WebServiceMessageSender</code> used by the gateway. */
|
||||
public final WebServiceMessageSender[] getMessageSender() {
|
||||
return webServiceTemplate.getMessageSenders();
|
||||
}
|
||||
|
||||
/** Sets a single <code>WebServiceMessageSender</code> to be used by the gateway. */
|
||||
public final void setMessageSender(WebServiceMessageSender messageSender) {
|
||||
webServiceTemplate.setMessageSender(messageSender);
|
||||
}
|
||||
|
||||
/** Sets multiple <code>WebServiceMessageSender</code> to be used by the gateway. */
|
||||
public final void setMessageSenders(WebServiceMessageSender[] messageSenders) {
|
||||
webServiceTemplate.setMessageSenders(messageSenders);
|
||||
}
|
||||
|
||||
/** Returns the <code>WebServiceTemplate</code> for the gateway. */
|
||||
public final WebServiceTemplate getWebServiceTemplate() {
|
||||
return webServiceTemplate;
|
||||
@@ -93,6 +110,7 @@ public abstract class WebServiceGatewaySupport implements InitializingBean, Appl
|
||||
|
||||
/** Sets the <code>WebServiceTemplate</code> to be used by the gateway. */
|
||||
public final void setWebServiceTemplate(WebServiceTemplate webServiceTemplate) {
|
||||
Assert.notNull(webServiceTemplate, "'webServiceTemplate' must not be null");
|
||||
this.webServiceTemplate = webServiceTemplate;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,11 +55,25 @@ public abstract class WebServiceAccessor extends TransformerObjectSupport implem
|
||||
return messageSenders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the single message sender used for sending messages.
|
||||
* <p/>
|
||||
* 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.
|
||||
* <p/>
|
||||
* 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.
|
||||
* <p/>
|
||||
* 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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ should help most users the project update their applications:
|
||||
|
||||
* The <<<id>>> property on <<<Attachment>> was renamed to <<contentId>>>.
|
||||
|
||||
* Methods for getting and adding attachments were taken from <<<SoapMessage>> and extraced into a new interface:
|
||||
* Methods for getting and adding attachments were taken from <<<SoapMessage>>> and extraced into a new interface:
|
||||
<<<MimeMessage>>>. Adding a method requires a content id now.
|
||||
|
||||
* WebServiceTemplate
|
||||
|
||||
Reference in New Issue
Block a user