From de63de8c785ca46292c9ed429874b38acc46dfaa Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Sat, 23 Feb 2008 17:29:28 +0000 Subject: [PATCH] Split out WS-Addressing to multiple packages (SWS-84) --- .../AddressingEndpointInterceptor.java | 26 ++++++++++--------- .../AbstractWsAddressingVersion.java | 5 +++- .../{ => version}/WsAddressing200408.java | 3 ++- .../{ => version}/WsAddressing200605.java | 3 ++- .../{ => version}/WsAddressingVersion.java | 7 +++-- ...AbstractAddressingInterceptorTestCase.java | 13 ++++++---- .../AddressingInterceptor200408Test.java | 5 +++- .../AddressingInterceptor200605Test.java | 5 +++- .../SimpleActionEndpointMappingTest.java | 9 ++++--- 9 files changed, 48 insertions(+), 28 deletions(-) rename core/src/main/java/org/springframework/ws/soap/addressing/{ => server}/AddressingEndpointInterceptor.java (88%) rename core/src/main/java/org/springframework/ws/soap/addressing/{ => version}/AbstractWsAddressingVersion.java (98%) rename core/src/main/java/org/springframework/ws/soap/addressing/{ => version}/WsAddressing200408.java (94%) rename core/src/main/java/org/springframework/ws/soap/addressing/{ => version}/WsAddressing200605.java (95%) rename core/src/main/java/org/springframework/ws/soap/addressing/{ => version}/WsAddressingVersion.java (90%) rename core/src/test/java/org/springframework/ws/soap/addressing/{ => server}/AbstractAddressingInterceptorTestCase.java (94%) rename core/src/test/java/org/springframework/ws/soap/addressing/{ => server}/AddressingInterceptor200408Test.java (69%) rename core/src/test/java/org/springframework/ws/soap/addressing/{ => server}/AddressingInterceptor200605Test.java (61%) rename core/src/test/java/org/springframework/ws/soap/addressing/{ => server}/SimpleActionEndpointMappingTest.java (92%) diff --git a/core/src/main/java/org/springframework/ws/soap/addressing/AddressingEndpointInterceptor.java b/core/src/main/java/org/springframework/ws/soap/addressing/server/AddressingEndpointInterceptor.java similarity index 88% rename from core/src/main/java/org/springframework/ws/soap/addressing/AddressingEndpointInterceptor.java rename to core/src/main/java/org/springframework/ws/soap/addressing/server/AddressingEndpointInterceptor.java index 67edb39c..ab174e5a 100644 --- a/core/src/main/java/org/springframework/ws/soap/addressing/AddressingEndpointInterceptor.java +++ b/core/src/main/java/org/springframework/ws/soap/addressing/server/AddressingEndpointInterceptor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.server; import java.io.IOException; import java.net.URI; @@ -26,7 +26,10 @@ import org.springframework.util.Assert; import org.springframework.ws.context.MessageContext; import org.springframework.ws.soap.SoapHeaderElement; import org.springframework.ws.soap.SoapMessage; +import org.springframework.ws.soap.addressing.core.EndpointReference; +import org.springframework.ws.soap.addressing.core.MessageAddressingProperties; import org.springframework.ws.soap.addressing.messageid.MessageIdStrategy; +import org.springframework.ws.soap.addressing.version.WsAddressingVersion; import org.springframework.ws.soap.server.SoapEndpointInterceptor; import org.springframework.ws.transport.WebServiceConnection; import org.springframework.ws.transport.WebServiceMessageSender; @@ -59,9 +62,7 @@ class AddressingEndpointInterceptor implements SoapEndpointInterceptor { URI faultAction) { Assert.notNull(version, "version must not be null"); Assert.notNull(messageIdStrategy, "messageIdStrategy must not be null"); - if (messageSenders == null) { - messageSenders = new WebServiceMessageSender[0]; - } + Assert.notNull(messageSenders, "'messageSenders' must not be null"); this.version = version; this.messageIdStrategy = messageIdStrategy; this.messageSenders = messageSenders; @@ -77,7 +78,7 @@ class AddressingEndpointInterceptor implements SoapEndpointInterceptor { version.addMessageAddressingHeaderRequiredFault((SoapMessage) messageContext.getResponse()); return false; } - if (!requestMap.isValid() || messageIdStrategy.isDuplicate(requestMap.getMessageId())) { + if (messageIdStrategy.isDuplicate(requestMap.getMessageId())) { version.addInvalidAddressingHeaderFault((SoapMessage) messageContext.getResponse()); return false; } @@ -101,10 +102,11 @@ class AddressingEndpointInterceptor implements SoapEndpointInterceptor { if (handleNoneAddress(messageContext, replyEpr)) { return false; } - URI responseMessageId = getMessageId(messageContext); + SoapMessage reply = (SoapMessage) messageContext.getResponse(); + URI replyMessageId = getMessageId(reply); URI action = !isFault ? replyAction : faultAction; - MessageAddressingProperties replyMap = requestMap.getReplyProperties(replyEpr, action, responseMessageId); - version.addAddressingHeaders((SoapMessage) messageContext.getResponse(), replyMap); + MessageAddressingProperties replyMap = requestMap.getReplyProperties(replyEpr, action, replyMessageId); + version.addAddressingHeaders(reply, replyMap); if (handleAnonymousAddress(messageContext, replyEpr)) { return true; } @@ -161,16 +163,16 @@ class AddressingEndpointInterceptor implements SoapEndpointInterceptor { } } } - if (!supported) { + if (!supported && logger.isWarnEnabled()) { logger.warn("Could not send out-of-band response to [" + replyEpr.getAddress() + "]. " + "Configure WebServiceMessageSenders which support this uri."); } } - private URI getMessageId(MessageContext messageContext) { - URI responseMessageId = messageIdStrategy.newMessageId(messageContext); + private URI getMessageId(SoapMessage response) { + URI responseMessageId = messageIdStrategy.newMessageId(response); if (logger.isTraceEnabled()) { - logger.trace("Generated reply MessageID [" + responseMessageId + "] for [" + messageContext + "]"); + logger.trace("Generated reply MessageID [" + responseMessageId + "] for [" + response + "]"); } return responseMessageId; } diff --git a/core/src/main/java/org/springframework/ws/soap/addressing/AbstractWsAddressingVersion.java b/core/src/main/java/org/springframework/ws/soap/addressing/version/AbstractWsAddressingVersion.java similarity index 98% rename from core/src/main/java/org/springframework/ws/soap/addressing/AbstractWsAddressingVersion.java rename to core/src/main/java/org/springframework/ws/soap/addressing/version/AbstractWsAddressingVersion.java index 0af7bd2d..b266f3b1 100644 --- a/core/src/main/java/org/springframework/ws/soap/addressing/AbstractWsAddressingVersion.java +++ b/core/src/main/java/org/springframework/ws/soap/addressing/version/AbstractWsAddressingVersion.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.version; import java.net.URI; import java.net.URISyntaxException; @@ -38,6 +38,9 @@ import org.springframework.ws.soap.SoapFault; import org.springframework.ws.soap.SoapHeader; import org.springframework.ws.soap.SoapHeaderElement; import org.springframework.ws.soap.SoapMessage; +import org.springframework.ws.soap.addressing.WsAddressingException; +import org.springframework.ws.soap.addressing.core.EndpointReference; +import org.springframework.ws.soap.addressing.core.MessageAddressingProperties; import org.springframework.ws.soap.soap11.Soap11Body; import org.springframework.ws.soap.soap12.Soap12Body; import org.springframework.ws.soap.soap12.Soap12Fault; diff --git a/core/src/main/java/org/springframework/ws/soap/addressing/WsAddressing200408.java b/core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressing200408.java similarity index 94% rename from core/src/main/java/org/springframework/ws/soap/addressing/WsAddressing200408.java rename to core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressing200408.java index d27789fa..a320f750 100644 --- a/core/src/main/java/org/springframework/ws/soap/addressing/WsAddressing200408.java +++ b/core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressing200408.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.version; import java.net.URI; import javax.xml.namespace.QName; +import org.springframework.ws.soap.addressing.core.EndpointReference; import org.springframework.xml.namespace.QNameUtils; /** diff --git a/core/src/main/java/org/springframework/ws/soap/addressing/WsAddressing200605.java b/core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressing200605.java similarity index 95% rename from core/src/main/java/org/springframework/ws/soap/addressing/WsAddressing200605.java rename to core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressing200605.java index 1e1f1bc5..a3832004 100644 --- a/core/src/main/java/org/springframework/ws/soap/addressing/WsAddressing200605.java +++ b/core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressing200605.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.version; import java.net.URI; import javax.xml.namespace.QName; +import org.springframework.ws.soap.addressing.core.EndpointReference; import org.springframework.xml.namespace.QNameUtils; /** diff --git a/core/src/main/java/org/springframework/ws/soap/addressing/WsAddressingVersion.java b/core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressingVersion.java similarity index 90% rename from core/src/main/java/org/springframework/ws/soap/addressing/WsAddressingVersion.java rename to core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressingVersion.java index a0df57a4..85d2a4be 100644 --- a/core/src/main/java/org/springframework/ws/soap/addressing/WsAddressingVersion.java +++ b/core/src/main/java/org/springframework/ws/soap/addressing/version/WsAddressingVersion.java @@ -14,11 +14,13 @@ * limitations under the License. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.version; import org.springframework.ws.soap.SoapFault; import org.springframework.ws.soap.SoapHeaderElement; import org.springframework.ws.soap.SoapMessage; +import org.springframework.ws.soap.addressing.core.EndpointReference; +import org.springframework.ws.soap.addressing.core.MessageAddressingProperties; /** * Defines the contract for a specific version of the WS-Addressing specification. @@ -29,7 +31,8 @@ import org.springframework.ws.soap.SoapMessage; public interface WsAddressingVersion { /** - * Returns the {@link MessageAddressingProperties} for the given message. + * Returns the {@link org.springframework.ws.soap.addressing.core.MessageAddressingProperties} for the given + * message. * * @param message the message to find the map for * @return the message addressing properties diff --git a/core/src/test/java/org/springframework/ws/soap/addressing/AbstractAddressingInterceptorTestCase.java b/core/src/test/java/org/springframework/ws/soap/addressing/server/AbstractAddressingInterceptorTestCase.java similarity index 94% rename from core/src/test/java/org/springframework/ws/soap/addressing/AbstractAddressingInterceptorTestCase.java rename to core/src/test/java/org/springframework/ws/soap/addressing/server/AbstractAddressingInterceptorTestCase.java index 83b3cd48..e7b8b195 100644 --- a/core/src/test/java/org/springframework/ws/soap/addressing/AbstractAddressingInterceptorTestCase.java +++ b/core/src/test/java/org/springframework/ws/soap/addressing/server/AbstractAddressingInterceptorTestCase.java @@ -2,7 +2,7 @@ * Copyright (c) 2007, Your Corporation. All Rights Reserved. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.server; import java.net.URI; import java.util.Iterator; @@ -13,7 +13,10 @@ import org.easymock.MockControl; import org.springframework.ws.context.DefaultMessageContext; import org.springframework.ws.context.MessageContext; import org.springframework.ws.soap.SoapHeaderElement; +import org.springframework.ws.soap.SoapMessage; +import org.springframework.ws.soap.addressing.AbstractWsAddressingTestCase; import org.springframework.ws.soap.addressing.messageid.MessageIdStrategy; +import org.springframework.ws.soap.addressing.version.WsAddressingVersion; import org.springframework.ws.soap.saaj.SaajSoapMessage; import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; import org.springframework.ws.transport.WebServiceConnection; @@ -76,7 +79,7 @@ public abstract class AbstractAddressingInterceptorTestCase extends AbstractWsAd SaajSoapMessage valid = loadSaajMessage(getTestPath() + "/request-no-reply-to.xml"); MessageContext context = new DefaultMessageContext(valid, new SaajSoapMessageFactory(messageFactory)); URI messageId = new URI("uid:1234"); - strategyControl.expectAndReturn(strategyMock.newMessageId(context), messageId); + strategyControl.expectAndReturn(strategyMock.newMessageId((SoapMessage) context.getResponse()), messageId); strategyControl.replay(); boolean result = interceptor.handleResponse(context, null); assertTrue("Request with no ReplyTo not handled", result); @@ -91,7 +94,7 @@ public abstract class AbstractAddressingInterceptorTestCase extends AbstractWsAd SaajSoapMessage valid = loadSaajMessage(getTestPath() + "/request-anonymous.xml"); MessageContext context = new DefaultMessageContext(valid, new SaajSoapMessageFactory(messageFactory)); URI messageId = new URI("uid:1234"); - strategyControl.expectAndReturn(strategyMock.newMessageId(context), messageId); + strategyControl.expectAndReturn(strategyMock.newMessageId((SoapMessage) context.getResponse()), messageId); strategyControl.replay(); boolean result = interceptor.handleResponse(context, null); assertTrue("Request with anonymous ReplyTo not handled", result); @@ -117,7 +120,7 @@ public abstract class AbstractAddressingInterceptorTestCase extends AbstractWsAd SaajSoapMessage response = (SaajSoapMessage) context.getResponse(); response.getSoapBody().addServerOrReceiverFault("Error", Locale.ENGLISH); URI messageId = new URI("uid:1234"); - strategyControl.expectAndReturn(strategyMock.newMessageId(context), messageId); + strategyControl.expectAndReturn(strategyMock.newMessageId((SoapMessage) context.getResponse()), messageId); strategyControl.replay(); boolean result = interceptor.handleFault(context, null); assertTrue("Request with anonymous FaultTo not handled", result); @@ -144,7 +147,7 @@ public abstract class AbstractAddressingInterceptorTestCase extends AbstractWsAd SaajSoapMessage response = (SaajSoapMessage) context.getResponse(); URI messageId = new URI("uid:1234"); - strategyControl.expectAndReturn(strategyMock.newMessageId(context), messageId); + strategyControl.expectAndReturn(strategyMock.newMessageId((SoapMessage) context.getResponse()), messageId); URI uri = new URI("http://example.com/business/client1"); senderControl.expectAndReturn(senderMock.supports(uri), true); diff --git a/core/src/test/java/org/springframework/ws/soap/addressing/AddressingInterceptor200408Test.java b/core/src/test/java/org/springframework/ws/soap/addressing/server/AddressingInterceptor200408Test.java similarity index 69% rename from core/src/test/java/org/springframework/ws/soap/addressing/AddressingInterceptor200408Test.java rename to core/src/test/java/org/springframework/ws/soap/addressing/server/AddressingInterceptor200408Test.java index 0a5da3ea..cca4f508 100644 --- a/core/src/test/java/org/springframework/ws/soap/addressing/AddressingInterceptor200408Test.java +++ b/core/src/test/java/org/springframework/ws/soap/addressing/server/AddressingInterceptor200408Test.java @@ -2,7 +2,10 @@ * Copyright (c) 2007, Your Corporation. All Rights Reserved. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.server; + +import org.springframework.ws.soap.addressing.version.WsAddressing200408; +import org.springframework.ws.soap.addressing.version.WsAddressingVersion; public class AddressingInterceptor200408Test extends AbstractAddressingInterceptorTestCase { diff --git a/core/src/test/java/org/springframework/ws/soap/addressing/AddressingInterceptor200605Test.java b/core/src/test/java/org/springframework/ws/soap/addressing/server/AddressingInterceptor200605Test.java similarity index 61% rename from core/src/test/java/org/springframework/ws/soap/addressing/AddressingInterceptor200605Test.java rename to core/src/test/java/org/springframework/ws/soap/addressing/server/AddressingInterceptor200605Test.java index 47169f44..bf17b5a2 100644 --- a/core/src/test/java/org/springframework/ws/soap/addressing/AddressingInterceptor200605Test.java +++ b/core/src/test/java/org/springframework/ws/soap/addressing/server/AddressingInterceptor200605Test.java @@ -2,7 +2,10 @@ * Copyright (c) 2007, Your Corporation. All Rights Reserved. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.server; + +import org.springframework.ws.soap.addressing.version.WsAddressing200605; +import org.springframework.ws.soap.addressing.version.WsAddressingVersion; public class AddressingInterceptor200605Test extends AbstractAddressingInterceptorTestCase { diff --git a/core/src/test/java/org/springframework/ws/soap/addressing/SimpleActionEndpointMappingTest.java b/core/src/test/java/org/springframework/ws/soap/addressing/server/SimpleActionEndpointMappingTest.java similarity index 92% rename from core/src/test/java/org/springframework/ws/soap/addressing/SimpleActionEndpointMappingTest.java rename to core/src/test/java/org/springframework/ws/soap/addressing/server/SimpleActionEndpointMappingTest.java index 681c0dde..b44cf7ee 100644 --- a/core/src/test/java/org/springframework/ws/soap/addressing/SimpleActionEndpointMappingTest.java +++ b/core/src/test/java/org/springframework/ws/soap/addressing/server/SimpleActionEndpointMappingTest.java @@ -14,8 +14,9 @@ * limitations under the License. */ -package org.springframework.ws.soap.addressing; +package org.springframework.ws.soap.addressing.server; +import java.net.URI; import java.util.HashMap; import java.util.Map; @@ -24,6 +25,7 @@ import org.springframework.ws.context.MessageContext; import org.springframework.ws.server.EndpointInterceptor; import org.springframework.ws.server.EndpointInvocationChain; import org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor; +import org.springframework.ws.soap.addressing.AbstractWsAddressingTestCase; import org.springframework.ws.soap.saaj.SaajSoapMessage; import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; import org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor; @@ -34,17 +36,16 @@ public class SimpleActionEndpointMappingTest extends AbstractWsAddressingTestCas private Endpoint1 endpoint1; - private Endpoint2 endpoint2; - protected void onSetUp() throws Exception { mapping = new SimpleActionEndpointMapping(); Map map = new HashMap(); endpoint1 = new Endpoint1(); - endpoint2 = new Endpoint2(); + Endpoint2 endpoint2 = new Endpoint2(); map.put("http://fabrikam123.example/mail/Delete", endpoint1); map.put("http://fabrikam123.example/mail/Add", endpoint2); mapping.setPreInterceptors(new EndpointInterceptor[]{new PayloadLoggingInterceptor()}); mapping.setPostInterceptors(new EndpointInterceptor[]{new PayloadValidatingInterceptor()}); + mapping.setAddress(new URI("mailto:joe@fabrikam123.example")); mapping.setActionMap(map); mapping.afterPropertiesSet(); }