Fixed SWS-122: A MessageSender setter on WebServicesGatewaySupport

This commit is contained in:
Arjen Poutsma
2007-05-27 09:34:32 +00:00
parent b003a6f848
commit 4f8fb2c0c0
3 changed files with 39 additions and 6 deletions

View File

@@ -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;
}

View File

@@ -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");
}
}

View File

@@ -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