Author: gdaniels
Date: Thu Jan 12 14:33:03 2006
New Revision: 368498

URL: http://svn.apache.org/viewcvs?rev=368498&view=rev
Log:
Correctly send refPs over both anonymous and non-anonymous connections.

Don't duplicate serialized WSA headers when using non-anonymous replies.


Modified:
    
webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java

Modified: 
webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java?rev=368498&r1=368497&r2=368498&view=diff
==============================================================================
--- 
webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java
 (original)
+++ 
webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java
 Thu Jan 12 14:33:03 2006
@@ -185,31 +185,36 @@
         }
 
         EndpointReferenceType faultTo = reqHeaders.getFaultTo();
+        if (faultTo != null) {
+            resHeaders.setReferenceProperties(faultTo.getProperties());
+            resHeaders.setReferenceParameters(faultTo.getParameters());
 
-        resHeaders.setReferenceProperties(faultTo.getProperties());
-        resHeaders.setReferenceParameters(faultTo.getParameters());
-
-        resHeaders.toEnvelope(msg.getSOAPEnvelope());
+            // resHeaders.toEnvelope(msg.getSOAPEnvelope());
 
-        // process FaultTo
-        if (faultTo != null) {
+            // process FaultTo
             AttributedURI address = faultTo.getAddress();
             if (address != null) {
                 String uri = address.toString();
                 /** Fix Sonic00027851, WS Addressing does not properly examine 
and deliver to an anonymous FaultTo address */
-                 if (uri != null && 
!uri.equals(AddressingUtils.getAnonymousRoleURI())) {
+                if (uri != null &&
+                        !uri.equals(AddressingUtils.getAnonymousRoleURI())) {
                     // send the msg to fault to
                     forwardMessage(faultTo, msg);
                     // Somehow make the response empty, or create a new empty
                     // response
-                    /** Fix Sonic00027691 avoid NullPointerException with 
msgContext.setCurrentMessage(null)*/          
+                    /** Fix Sonic00027691 avoid NullPointerException with 
msgContext.setCurrentMessage(null)*/
                     if (msgContext.getPastPivot())
-                       msgContext.setResponseMessage(null);
+                        msgContext.setResponseMessage(null);
                     else
-                       msgContext.setRequestMessage(null);
+                        msgContext.setRequestMessage(null);
+                    return;
                 }
             }
         }
+
+        // TODO : Default to ReplyTo, and then From?
+
+        resHeaders.toEnvelope(msg.getSOAPEnvelope());
     }
 
     /**
@@ -495,11 +500,12 @@
         msgID = new MessageID(new URI("uuid:" + uuidGen.nextUUID()));
         resHeaders.setMessageID(msgID);
 
-        resHeaders.toEnvelope(msg.getSOAPEnvelope(), this.actor);
-
         // process ReplyTo
         EndpointReferenceType replyTo = reqHeaders.getReplyTo();
         if (replyTo != null) {
+            resHeaders.setReferenceProperties(replyTo.getProperties());
+            resHeaders.setReferenceParameters(replyTo.getParameters());
+            
             AttributedURI address = replyTo.getAddress();
             if (address != null) {
                 String uri = address.toString();
@@ -508,8 +514,12 @@
                     forwardMessage(replyTo, msg);
                     // Somehow make the response empty, or create a new empty 
response
                     msgContext.setResponseMessage(null);
+                } else {
+                    resHeaders.toEnvelope(msg.getSOAPEnvelope(), this.actor);
                 }
             }
+        } else {
+            resHeaders.toEnvelope(msg.getSOAPEnvelope(), this.actor);
         }
     }
 
@@ -521,16 +531,16 @@
         AddressingHeaders headers = null;
         MessageContext msgContext = msg.getMessageContext();
         if (msgContext != null) {
-            headers = (AddressingHeaders) 
msgContext.getProperty(Constants.ENV_ADDRESSING_RESPONSE_HEADERS);
+            headers = (AddressingHeaders) msgContext.getProperty(
+                    Constants.ENV_ADDRESSING_RESPONSE_HEADERS);
         }
         if (headers == null)
         {
             headers = new AddressingHeaders();
+            headers.setTo(address);
+            headers.setReferenceProperties(epr.getProperties());
+            headers.setReferenceParameters(epr.getParameters());
         }
-        
-        headers.setTo(address);
-        headers.setReferenceProperties(epr.getProperties());
-        headers.setReferenceParameters(epr.getParameters());
 
         Service service = getService(msgContext);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to