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/02/15 19:37:20 UTC

svn commit: r628143 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description: OutInAxisOperation.java OutOnlyAxisOperation.java

Author: pradine
Date: Fri Feb 15 10:37:19 2008
New Revision: 628143

URL: http://svn.apache.org/viewvc?rev=628143&view=rev
Log:
Fix for AXIS2-2830.

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?rev=628143&r1=628142&r2=628143&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Fri Feb 15 10:37:19 2008
@@ -23,7 +23,9 @@
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.AddressingConstants.Final;
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.async.AsyncResult;
@@ -199,15 +201,22 @@
         }
 
         EndpointReference replyTo = mc.getReplyTo();
-        if (replyTo !=null && replyTo.hasNoneAddress()) {
-            throw new AxisFault( replyTo.getAddress() + "" +
-                    " can not be used with OutInAxisOperationClient , user either "
-                    + "fireAndForget or sendRobust)");
-        }
-        String customReeplyTo = (String)options.getProperty(Options.CUSTOM_REPLYTO_ADDRESS);
-        if ( ! (Options.CUSTOM_REPLYTO_ADDRESS_TRUE.equals(customReeplyTo))) {
-            if (replyTo!=null && !replyTo.hasAnonymousAddress()){
-                useAsync = true;
+        if (replyTo != null) {
+            if (replyTo.hasNoneAddress()) {
+                throw new AxisFault( replyTo.getAddress() + "" +
+                        " can not be used with OutInAxisOperationClient , user either "
+                        + "fireAndForget or sendRobust)");
+            }
+            else if (replyTo.hasAnonymousAddress() &&
+                     replyTo.getAllReferenceParameters() != null) {
+                mc.setProperty(AddressingConstants.INCLUDE_OPTIONAL_HEADERS, Boolean.TRUE);
+            }
+            
+            String customReplyTo = (String)options.getProperty(Options.CUSTOM_REPLYTO_ADDRESS);
+            if ( ! (Options.CUSTOM_REPLYTO_ADDRESS_TRUE.equals(customReplyTo))) {
+                if (!replyTo.hasAnonymousAddress()){
+                    useAsync = true;
+                }
             }
         }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java?rev=628143&r1=628142&r2=628143&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java Fri Feb 15 10:37:19 2008
@@ -21,6 +21,7 @@
 import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.AddressingConstants.Final;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
@@ -247,22 +248,27 @@
         ConfigurationContext cc = sc.getConfigurationContext();
         prepareMessageContext(cc, mc);
 
-        //As this is an out-only MEP we add a sensible default for
-        //the replyTo.
+        //As this is an out-only MEP we explicitly add a more sensible default for
+        //the replyTo, if required. We also need to ensure that if the replyTo EPR
+        //has an anonymous address and reference parameters that it gets flowed
+        //across the wire.
         EndpointReference epr = mc.getReplyTo();
-        if (epr == null)
+        if (epr == null) {
             mc.setReplyTo(new EndpointReference(Final.WSA_NONE_URI));
+        }
+        else if (epr.hasAnonymousAddress() && epr.getAllReferenceParameters() != null) {
+            mc.setProperty(AddressingConstants.INCLUDE_OPTIONAL_HEADERS, Boolean.TRUE);
+        }
         
         // create the operation context for myself
         OperationContext oc = sc.createOperationContext(axisOp);
         oc.addMessageContext(mc);
         
         // ship it out
-        AxisEngine engine = new AxisEngine(cc);
         if (!block) {
             mc.setProperty(MessageContext.TRANSPORT_NON_BLOCKING, Boolean.TRUE);
         }
-        engine.send(mc);
+        AxisEngine.send(mc);
         // all done
         completed = true;
     }



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