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 da...@apache.org on 2007/11/02 11:37:48 UTC

svn commit: r591295 - /webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java

Author: davidillsley
Date: Fri Nov  2 03:37:42 2007
New Revision: 591295

URL: http://svn.apache.org/viewvc?rev=591295&view=rev
Log:
Fix AddressingInHandler soap role=none processing. If all
addressing headers are in that role they should be ignored.

Currently this isn't happening and a fault is generated because
the action is 'missing'.

Thanks to Matthew Golby-Kirk for pointing this out.

Modified:
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java

Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java?rev=591295&r1=591294&r2=591295&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java Fri Nov  2 03:37:42 2007
@@ -65,7 +65,7 @@
     
     public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
         // if another handler has already processed the addressing headers, do not do anything here.
-        if (msgContext.isPropertyTrue(IS_ADDR_INFO_ALREADY_PROCESSED)) {
+        if (JavaUtils.isTrueExplicitly(msgContext.getLocalProperty(IS_ADDR_INFO_ALREADY_PROCESSED), false)) {
             if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
                 log.debug(
                         "Another handler has processed the addressing headers. Nothing to do here.");
@@ -109,9 +109,9 @@
                 log.debug(addressingVersion +
                         " Headers present in the SOAP message. Starting to process ...");
             }
-
-            extractAddressingInformation(header, msgContext, addressingHeaders, namespace);
-            msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.TRUE);
+            if(extractAddressingInformation(header, msgContext, addressingHeaders, namespace)){
+            	msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.TRUE);
+            }
         } else {
             msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
             if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
@@ -124,7 +124,8 @@
     
     protected static final int TO_FLAG = 1, FROM_FLAG = 2, REPLYTO_FLAG = 3,
 	FAULTO_FLAG = 4, MESSAGEID_FLAG = 6, ACTION_FLAG = 0;
-    protected Options extractAddressingInformation(SOAPHeader header, MessageContext messageContext,
+    /** @return true if addressing information was found */
+    protected boolean extractAddressingInformation(SOAPHeader header, MessageContext messageContext,
                                                    ArrayList addressingHeaders, String namespace)
             throws AxisFault {
 
@@ -181,6 +182,14 @@
         		}
         	}
         }
+        
+        if (actionBlock == null && toBlock == null && messageIDBlock == null
+				&& replyToBlock == null && faultToBlock == null
+				&& fromBlock == null && relatesToHeaders == null) {
+			// All of the headers must have had the none role so further
+			// processing should be skipped.
+			return false;
+		}
 
         if (actionBlock!=null && !ignoreHeaders[ACTION_FLAG]) {
             extractActionInformation(actionBlock, messageContext);
@@ -223,7 +232,7 @@
         // provide default values for headers that have not been found.
         setDefaults(checkedHeaderNames, messageContext);
 
-        return messageContextOptions;
+        return true;
     }
 
     protected abstract void checkForMandatoryHeaders(boolean[] alreadyFoundAddrHeader,



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org