You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by pr...@apache.org on 2008/05/12 17:27:44 UTC
svn commit: r655524 - in /webservices/axis2/trunk/java/modules:
addressing/src/org/apache/axis2/handlers/addressing/
kernel/src/org/apache/axis2/addressing/
kernel/test/org/apache/axis2/addressing/
Author: pradine
Date: Mon May 12 08:27:43 2008
New Revision: 655524
URL: http://svn.apache.org/viewvc?rev=655524&view=rev
Log:
The AddressingValidationHandler is incorrectly rejecting requests that contain wsa:ReplyTo EPRs with the none URI address, according to the WS-Addressing Metadata spec.
Modified:
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java?rev=655524&r1=655523&r2=655524&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java Mon May 12 08:27:43 2008
@@ -56,9 +56,6 @@
// Check if the wsa:MessageID is required or not.
checkMessageIDHeader(msgContext);
-
- // Check that if wsamInvocationPattern flag is in effect that the replyto and faultto are valid
- checkWSAMInvocationPattern(msgContext);
}
}
@@ -66,6 +63,11 @@
// Check that if wsaddressing=required that addressing headers were found inbound
checkUsingAddressing(msgContext);
}
+
+ // Check that if wsamInvocationPattern flag is in effect that the replyto and faultto are valid
+ // This method must always be called to ensure that the async required invocation pattern is
+ // enforced.
+ checkWSAMInvocationPattern(msgContext);
return InvocationResponse.CONTINUE;
}
@@ -110,7 +112,7 @@
}
if(!AddressingConstants.WSAM_INVOCATION_PATTERN_BOTH.equals(value)){
if (WSAM_INVOCATION_PATTERN_SYNCHRONOUS.equals(value)) {
- if (AddressingHelper.isReplyRedirected(msgContext)) {
+ if (!AddressingHelper.isSyncReplyAllowed(msgContext)) {
EndpointReference anonEPR =
new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL);
msgContext.setReplyTo(anonEPR);
@@ -118,7 +120,7 @@
AddressingFaultsHelper.triggerOnlyAnonymousAddressSupportedFault(msgContext,
AddressingConstants.WSA_REPLY_TO);
}
- if (AddressingHelper.isFaultRedirected(msgContext)) {
+ if (!AddressingHelper.isSyncFaultAllowed(msgContext)) {
EndpointReference anonEPR =
new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL);
msgContext.setReplyTo(anonEPR);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java?rev=655524&r1=655523&r2=655524&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java Mon May 12 08:27:43 2008
@@ -24,7 +24,6 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.AxisDescription;
import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.util.LoggingControl;
import org.apache.axis2.util.Utils;
@@ -38,6 +37,52 @@
private static final Log log = LogFactory.getLog(AddressingHelper.class);
/**
+ * Returns true if the ReplyTo address matches one of the supported
+ * anonymous urls. If the ReplyTo is not set, anonymous is assumed, per the Final
+ * spec. The AddressingInHandler should have set the ReplyTo to non-null in the
+ * 2004/08 case to ensure the different semantics. (per AXIS2-885)
+ *
+ * According to the WS-Addressing Metadata spec the none URI must not be rejected.
+ *
+ * @param messageContext
+ */
+ public static boolean isSyncReplyAllowed(MessageContext messageContext) {
+ EndpointReference replyTo = messageContext.getReplyTo();
+ if (replyTo == null) {
+ if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
+ log.debug(messageContext.getLogIDString() +
+ " isSyncReplyAllowed: ReplyTo is null. Returning true");
+ }
+ return true;
+ } else {
+ return replyTo.hasAnonymousAddress() || replyTo.hasNoneAddress();
+ }
+ }
+
+ /**
+ * Returns true if the FaultTo address matches one of the supported
+ * anonymous urls. If the FaultTo is not set, the ReplyTo is checked per the
+ * spec.
+ *
+ * According to the WS-Addressing Metadata spec the none URI must not be rejected.
+ *
+ * @param messageContext
+ * @see #isSyncReplyAllowed(org.apache.axis2.context.MessageContext)
+ */
+ public static boolean isSyncFaultAllowed(MessageContext messageContext) {
+ EndpointReference faultTo = messageContext.getFaultTo();
+ if (faultTo == null) {
+ if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
+ log.debug(messageContext.getLogIDString() +
+ " isSyncFaultAllowed: FaultTo is null. Returning isSyncReplyAllowed");
+ }
+ return isSyncReplyAllowed(messageContext);
+ } else {
+ return faultTo.hasAnonymousAddress() || faultTo.hasNoneAddress();
+ }
+ }
+
+ /**
* Returns true if the ReplyTo address does not match one of the supported
* anonymous urls. If the ReplyTo is not set, anonymous is assumed, per the Final
* spec. The AddressingInHandler should have set the ReplyTo to non-null in the
@@ -71,7 +116,7 @@
if (faultTo == null) {
if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
log.debug(messageContext.getLogIDString() +
- " isReplyRedirected: FaultTo is null. Returning isReplyRedirected");
+ " isFaultRedirected: FaultTo is null. Returning isReplyRedirected");
}
return isReplyRedirected(messageContext);
} else {
Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java?rev=655524&r1=655523&r2=655524&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java Mon May 12 08:27:43 2008
@@ -41,11 +41,23 @@
assertTrue(AddressingHelper.isReplyRedirected(mc));
}
+ public void testIsReplyRedirectedNoneReplyTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+ assertTrue(AddressingHelper.isReplyRedirected(mc));
+ }
+
public void testIsFaultRedirectedNoFaultToOrReplyTo() {
MessageContext mc = new MessageContext();
assertFalse(AddressingHelper.isFaultRedirected(mc));
}
+ public void testIsFaultRedirectedNoFaultTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference("http://ws.apache.org/axis2"));
+ assertTrue(AddressingHelper.isFaultRedirected(mc));
+ }
+
public void testIsFaultRedirectedAnonFaultTo() {
MessageContext mc = new MessageContext();
mc.setFaultTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
@@ -57,4 +69,62 @@
mc.setFaultTo(new EndpointReference("http://ws.apache.org/axis2"));
assertTrue(AddressingHelper.isFaultRedirected(mc));
}
+
+ public void testIsFaultRedirectedNoneReplyTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+ assertTrue(AddressingHelper.isFaultRedirected(mc));
+ }
+
+ public void testIsSyncReplyAllowedNoReplyTo() {
+ MessageContext mc = new MessageContext();
+ assertTrue(AddressingHelper.isSyncReplyAllowed(mc));
+ }
+
+ public void testIsSyncReplyAllowedAnonReplyTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
+ assertTrue(AddressingHelper.isSyncReplyAllowed(mc));
+ }
+
+ public void testIsSyncReplyAllowedNonAnonReplyTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference("http://ws.apache.org/axis2"));
+ assertFalse(AddressingHelper.isSyncReplyAllowed(mc));
+ }
+
+ public void testIsSyncReplyAllowedNoneReplyTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+ assertTrue(AddressingHelper.isSyncReplyAllowed(mc));
+ }
+
+ public void testIsSyncFaultAllowedNoFaultToOrReplyTo() {
+ MessageContext mc = new MessageContext();
+ assertTrue(AddressingHelper.isSyncFaultAllowed(mc));
+ }
+
+ public void testIsSyncFaultAllowedNoFaultTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference("http://ws.apache.org/axis2"));
+ assertFalse(AddressingHelper.isSyncFaultAllowed(mc));
+ }
+
+ public void testIsSyncFaultAllowedAnonFaultTo() {
+ MessageContext mc = new MessageContext();
+ mc.setFaultTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
+ assertTrue(AddressingHelper.isSyncFaultAllowed(mc));
+ }
+
+ public void testIsSyncFaultAllowedNonAnonFaultTo() {
+ MessageContext mc = new MessageContext();
+ mc.setFaultTo(new EndpointReference("http://ws.apache.org/axis2"));
+ assertFalse(AddressingHelper.isSyncFaultAllowed(mc));
+ }
+
+ public void testIsSyncFaultAllowedNoneReplyTo() {
+ MessageContext mc = new MessageContext();
+ mc.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+ assertTrue(AddressingHelper.isSyncFaultAllowed(mc));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org