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 2006/09/26 22:27:52 UTC

svn commit: r450183 - in /webservices/axis2/trunk/java/modules: addressing/src/org/apache/axis2/handlers/addressing/ kernel/src/org/apache/axis2/addressing/ kernel/src/org/apache/axis2/engine/ kernel/src/org/apache/axis2/util/

Author: pradine
Date: Tue Sep 26 13:27:51 2006
New Revision: 450183

URL: http://svn.apache.org/viewvc?view=rev&rev=450183
Log:
Changed the default for the wsa:ReplyTo header, in response messages, to the WSA none URI. This is the default for all response messages, except where a service has been deployed with soapsession scope. In this case the default is the WSA anonymous URI. The default for the wsa:ReplyTo header, in request messages, remains the WSA anonymous URI.

Modified:
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java

Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?view=diff&rev=450183&r1=450182&r2=450183
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java Tue Sep 26 13:27:51 2006
@@ -25,17 +25,14 @@
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
 import org.apache.axis2.util.JavaUtils;
 import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.AddressingFaultsHelper;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.EndpointReferenceHelper;
 import org.apache.axis2.addressing.RelatesTo;
-import org.apache.axis2.addressing.AddressingConstants.Final;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.ServiceContext;
 
 import javax.xml.namespace.QName;
 import java.util.Iterator;
@@ -57,8 +54,6 @@
         
         SOAPFactory factory = (SOAPFactory) msgContext.getEnvelope().getOMFactory();
         OMNamespace addressingNamespaceObject = factory.createOMNamespace(namespace, WSA_DEFAULT_PREFIX);
-        String anonymousURI = namespace.equals(Final.WSA_NAMESPACE) ? Final.WSA_ANONYMOUS_URL : Submission.WSA_ANONYMOUS_URL;
-        String relationshipType = namespace.equals(Final.WSA_NAMESPACE) ? Final.WSA_DEFAULT_RELATIONSHIP_TYPE : Submission.WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE;
 
         Options messageContextOptions = msgContext.getOptions();
         SOAPEnvelope envelope = msgContext.getEnvelope();
@@ -89,7 +84,7 @@
         processToEPR(messageContextOptions, envelope, addressingNamespaceObject, replaceHeaders);
 
         // processing WSA replyTo
-        processReplyTo(envelope, messageContextOptions, msgContext, addressingNamespaceObject, anonymousURI, replaceHeaders);
+        processReplyTo(envelope, messageContextOptions, msgContext, addressingNamespaceObject, replaceHeaders);
         
         // processing WSA From
         processFromEPR(messageContextOptions, envelope, addressingNamespaceObject, replaceHeaders);
@@ -107,7 +102,7 @@
         processWSAAction(messageContextOptions, envelope, msgContext, addressingNamespaceObject, replaceHeaders);
 
         // processing WSA RelatesTo
-        processRelatesTo(envelope, messageContextOptions, addressingNamespaceObject, relationshipType, replaceHeaders);
+        processRelatesTo(envelope, messageContextOptions, addressingNamespaceObject, replaceHeaders);
 
         // process fault headers, if present
         processFaultsInfoIfPresent(envelope, msgContext, addressingNamespaceObject, replaceHeaders);
@@ -121,11 +116,17 @@
                 action = msgCtxt.getAxisOperation().getOutputAction();
             }
         }
-        if (Final.WSA_SOAP_FAULT_ACTION.equals(action) || Final.WSA_FAULT_ACTION.equals(action)) {
-            if (Submission.WSA_NAMESPACE.equals(addressingNamespaceObject.getNamespaceURI())) {
-                action = Submission.WSA_FAULT_ACTION;
-            }
+        
+        String namespace = addressingNamespaceObject.getNamespaceURI();
+        if (Final.WSA_FAULT_ACTION.equals(action) || Submission.WSA_FAULT_ACTION.equals(action)) {
+            action = Final.WSA_NAMESPACE.equals(namespace) ?
+                    Final.WSA_FAULT_ACTION : Submission.WSA_FAULT_ACTION;
+        }
+        else if (Final.WSA_SOAP_FAULT_ACTION.equals(action) &&
+                Submission.WSA_NAMESPACE.equals(namespace)) {
+            action = Submission.WSA_FAULT_ACTION;
         }
+        
         if (action != null && !isAddressingHeaderAlreadyAvailable(WSA_ACTION, envelope,
                 addressingNamespaceObject, replaceHeaders)) {
             processStringInfo(action, WSA_ACTION, envelope, addressingNamespaceObject);
@@ -150,7 +151,7 @@
         }
     }
 
-    private void processRelatesTo(SOAPEnvelope envelope, Options messageContextOptions, OMNamespace addressingNamespaceObject, String replyRelationshipType, boolean replaceHeaders) {
+    private void processRelatesTo(SOAPEnvelope envelope, Options messageContextOptions, OMNamespace addressingNamespaceObject, boolean replaceHeaders) {
         if (!isAddressingHeaderAlreadyAvailable(WSA_RELATES_TO, envelope, addressingNamespaceObject,replaceHeaders))
         {
             RelatesTo[] relatesTo = messageContextOptions.getRelationships();
@@ -165,9 +166,14 @@
                     String relationshipType = relatesTo[i].getRelationshipType();
 
                     if (relatesToHeader != null) {
-                        if (Final.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType) || "".equals(relationshipType)) {
+                        if (Final.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType) ||
+                            Submission.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType) ||
+                            "".equals(relationshipType)) {
+                            String defaultRelationshipType = Final.WSA_NAMESPACE.equals(addressingNamespaceObject.getNamespaceURI()) ?
+                                    Final.WSA_DEFAULT_RELATIONSHIP_TYPE : Submission.WSA_DEFAULT_RELATIONSHIP_TYPE;
+
                             relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
-                                    replyRelationshipType,
+                                    defaultRelationshipType,
                                     addressingNamespaceObject);
                         } else {
                             relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
@@ -181,52 +187,31 @@
     }
 
     private void processFaultToEPR(Options messageContextOptions, SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders) throws AxisFault {
-        EndpointReference epr;
-        epr = messageContextOptions.getFaultTo();
-        if (epr != null) {//optional
-            addToSOAPHeader(epr, AddressingConstants.WSA_FAULT_TO, envelope, addressingNamespaceObject, replaceHeaders);
+        EndpointReference epr = messageContextOptions.getFaultTo();
+        String headerName = AddressingConstants.WSA_FAULT_TO;
+        
+        if (epr != null && !isAddressingHeaderAlreadyAvailable(headerName, envelope, addressingNamespaceObject,replaceHeaders)) {
+            addToSOAPHeader(epr, headerName, envelope, addressingNamespaceObject, replaceHeaders);
         }
     }
 
     private void processFromEPR(Options messageContextOptions, SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders) throws AxisFault {
-        EndpointReference epr;
-        epr = messageContextOptions.getFrom();
-        if (epr != null) {//optional
-            addToSOAPHeader(epr, AddressingConstants.WSA_FROM, envelope, addressingNamespaceObject, replaceHeaders);
+        EndpointReference epr = messageContextOptions.getFrom();
+        String headerName = AddressingConstants.WSA_FROM;
+        
+        if (epr != null && !isAddressingHeaderAlreadyAvailable(headerName, envelope, addressingNamespaceObject,replaceHeaders)) {
+            addToSOAPHeader(epr, headerName, envelope, addressingNamespaceObject, replaceHeaders);
         }
     }
 
-    private void processReplyTo(SOAPEnvelope envelope, Options messageContextOptions, MessageContext msgContext, OMNamespace addressingNamespaceObject, String anonymousURI, boolean replaceHeaders) throws AxisFault {
-        EndpointReference epr = null;
-        if (!isAddressingHeaderAlreadyAvailable(WSA_REPLY_TO, envelope, addressingNamespaceObject, replaceHeaders))
-        {
-        	epr = messageContextOptions.getReplyTo();
-	        if(msgContext.isServerSide() && (msgContext.getAxisService()!=null) && Constants.SCOPE_SOAP_SESSION.equals(msgContext.getAxisService().getScope())){	        	
-	            if (epr == null) {//optional
-	                ServiceContext serviceContext = msgContext.getServiceContext();
-	                if (serviceContext != null &&
-	                        serviceContext.getMyEPR() != null) {
-	                    epr = serviceContext.getMyEPR();
-	                } else {
-	                    // setting anonymous URI. Defaulting to Final.
-	                    epr = new EndpointReference(anonymousURI);
-	                }
-	            } else if ("".equals(epr.getAddress())) {
-	                ServiceContext serviceContext = msgContext.getServiceContext();
-	                if (serviceContext != null &&
-	                        serviceContext.getMyEPR() != null) {
-	                    epr.setAddress(serviceContext.getMyEPR().getAddress());
-	                } else {
-	                    // setting anonymous URI. Defaulting to Final.
-	                    epr.setAddress(anonymousURI);
-	                }
-	            }
-        	}else{
-        		if(epr == null){
-        			epr = new EndpointReference(anonymousURI);
-        		}
-        	}
-            addToSOAPHeader(epr, AddressingConstants.WSA_REPLY_TO, envelope, addressingNamespaceObject, replaceHeaders);
+    private void processReplyTo(SOAPEnvelope envelope, Options messageContextOptions, MessageContext msgContext, OMNamespace addressingNamespaceObject, boolean replaceHeaders) throws AxisFault {
+        EndpointReference epr = messageContextOptions.getReplyTo();
+        String headerName = AddressingConstants.WSA_REPLY_TO;
+        
+        //Don't check epr for null here as addToSOAPHeader() will provide an appropriate default.
+        //This behaviour is needed by the service client.
+        if (!isAddressingHeaderAlreadyAvailable(headerName, envelope, addressingNamespaceObject,replaceHeaders)) {
+            addToSOAPHeader(epr, headerName, envelope, addressingNamespaceObject, replaceHeaders);            
         }
     }
 
@@ -234,10 +219,8 @@
         EndpointReference epr = messageContextOptions.getTo();
         if (epr != null && !isAddressingHeaderAlreadyAvailable(WSA_TO, envelope, addressingNamespaceObject, replaceHeaders))
         {
-            Map referenceParameters = null;
-            String address = "";
-            address = epr.getAddress();
-            referenceParameters = epr.getAllReferenceParameters();
+            Map referenceParameters = epr.getAllReferenceParameters();
+            String address = epr.getAddress();
 
             if (!"".equals(address) && address != null) {
                 SOAPHeaderBlock toHeaderBlock = envelope.getHeader().addHeaderBlock(WSA_TO, addressingNamespaceObject);
@@ -249,11 +232,11 @@
 
 
     private OMElement processStringInfo(String value,
-                                        String type,
+                                        String headerName,
                                         SOAPEnvelope soapEnvelope, OMNamespace addressingNamespaceObject) {
         if (!"".equals(value) && value != null) {
             SOAPHeaderBlock soapHeaderBlock =
-                    soapEnvelope.getHeader().addHeaderBlock(type, addressingNamespaceObject);
+                    soapEnvelope.getHeader().addHeaderBlock(headerName, addressingNamespaceObject);
             soapHeaderBlock.addChild(
                     soapEnvelope.getOMFactory().createOMText(value));
             return soapHeaderBlock;
@@ -262,17 +245,26 @@
     }
 
     private void addToSOAPHeader(EndpointReference epr,
-                                 String type,
+                                 String headerName,
                                  SOAPEnvelope envelope, OMNamespace addressingNamespaceObject, boolean replaceHeaders) throws AxisFault {
-        if (epr == null || isAddressingHeaderAlreadyAvailable(type, envelope, addressingNamespaceObject,replaceHeaders))
-        {
-            return;
-        }
-
         String namespace = addressingNamespaceObject.getNamespaceURI();
         String prefix = addressingNamespaceObject.getPrefix();
+        String anonymous = Final.WSA_NAMESPACE.equals(namespace) ?
+                Final.WSA_ANONYMOUS_URL : Submission.WSA_ANONYMOUS_URL;
+
+        if (epr == null) {
+            epr = new EndpointReference(anonymous);
+        }
+        else if (Final.WSA_NONE_URI.equals(epr.getAddress()) &&
+                 Submission.WSA_NAMESPACE.equals(namespace)) {
+            return; //Omit the header.
+        }
+        else if (Final.WSA_ANONYMOUS_URL.equals(epr.getAddress()) ||
+                 Submission.WSA_ANONYMOUS_URL.equals(epr.getAddress())) {
+            epr.setAddress(anonymous);
+        }
 
-        OMElement soapHeaderBlock = EndpointReferenceHelper.toOM(epr, new QName(namespace, type, prefix), namespace);
+        OMElement soapHeaderBlock = EndpointReferenceHelper.toOM(epr, new QName(namespace, headerName, prefix), namespace);
         envelope.getHeader().addChild(soapHeaderBlock);
     }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java?view=diff&rev=450183&r1=450182&r2=450183
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/addressing/AddressingConstants.java Tue Sep 26 13:27:51 2006
@@ -82,6 +82,9 @@
                 "http://www.w3.org/2005/08/addressing";
         public static final String WSAW_NAMESPACE =
                 "http://www.w3.org/2006/05/addressing/wsdl";
+        /**
+         * @deprecated use {@link #WSA_DEFAULT_RELATIONSHIP_TYPE} instead.
+         */
         public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE =
                 "http://www.w3.org/2005/08/addressing/reply";
         public static final String WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE = "IsReferenceParameter";
@@ -100,7 +103,8 @@
 
         public static final String WSA_INTERFACE_NAME = "InterfaceName";
 
-        public static final String WSA_DEFAULT_RELATIONSHIP_TYPE = "http://www.w3.org/2005/08/addressing/reply";
+        public static final String WSA_DEFAULT_RELATIONSHIP_TYPE =
+                "http://www.w3.org/2005/08/addressing/reply";
 
         // fault information
         public static final String FAULT_HEADER_PROB_HEADER_QNAME = "ProblemHeaderQName";
@@ -125,7 +129,11 @@
         // ====================== Addressing Submission Version Constants ===================
         public static final String WSA_NAMESPACE =
                 "http://schemas.xmlsoap.org/ws/2004/08/addressing";
+        /**
+         * @deprecated use {@link #WSA_DEFAULT_RELATIONSHIP_TYPE} instead.
+         */
         public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE = "wsa:Reply";
+        public static final String WSA_DEFAULT_RELATIONSHIP_TYPE = "wsa:Reply";
         public static final String WSA_ANONYMOUS_URL =
                 "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?view=diff&rev=450183&r1=450182&r2=450183
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Tue Sep 26 13:27:51 2006
@@ -176,6 +176,8 @@
         faultContext.setServerSide(true);
         faultContext.setDoingREST(processingContext.isDoingREST());
 
+        faultContext.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
+
         // Add correct Action
         AxisOperation op = processingContext.getAxisOperation();
         if(op != null && op.getFaultAction()!=null){
@@ -203,7 +205,7 @@
 
         EndpointReference faultTo = processingContext.getFaultTo();
         if (faultTo != null && !doNotSendFaultUsingFaultTo) {
-            faultContext.setTo(processingContext.getFaultTo());
+            faultContext.setTo(faultTo);
         }
         else {
             faultContext.setTo(processingContext.getReplyTo());

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java?view=diff&rev=450183&r1=450182&r2=450183
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java Tue Sep 26 13:27:51 2006
@@ -17,8 +17,6 @@
 
 package org.apache.axis2.util;
 
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.soap.*;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingConstants;
@@ -74,26 +72,30 @@
         // do Target Resolution
         newmsgCtx.getConfigurationContext().getAxisConfiguration().getTargetResolverChain().resolveTarget(newmsgCtx);
 
+        newmsgCtx.addRelatesTo(new RelatesTo(oldOptions.getMessageId()));
 
-        newmsgCtx.getOptions().setAction(oldOptions.getAction());
-
-        // add the service group id as a reference parameter
-        String serviceGroupContextId = inMessageContext.getServiceGroupContextId();
-        if (serviceGroupContextId != null && !"".equals(serviceGroupContextId)) {
-            EndpointReference replyToEPR = new EndpointReference("");
-            replyToEPR.addReferenceParameter(new QName(Constants.AXIS2_NAMESPACE_URI,
-                    Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX), serviceGroupContextId);
-            newmsgCtx.setReplyTo(replyToEPR);
+        AxisService axisService = inMessageContext.getAxisService();
+        if (axisService != null && Constants.SCOPE_SOAP_SESSION.equals(axisService.getScope())) {
+            newmsgCtx.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
+            // add the service group id as a reference parameter
+            String serviceGroupContextId = inMessageContext.getServiceGroupContextId();
+            if (serviceGroupContextId != null && !"".equals(serviceGroupContextId)) {
+                EndpointReference replyToEPR = newmsgCtx.getReplyTo();
+                replyToEPR.addReferenceParameter(new QName(Constants.AXIS2_NAMESPACE_URI,
+                        Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX), serviceGroupContextId);
+            }
         }
-
-        newmsgCtx.addRelatesTo(new RelatesTo(oldOptions.getMessageId())); //Uses the default relationship type
-
+        else {
+            newmsgCtx.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));            
+        }
+        
         AxisOperation ao = inMessageContext.getAxisOperation();
         if (ao.getOutputAction() != null) {
             newmsgCtx.setWSAAction(ao.getOutputAction());
         } else {
             newmsgCtx.setWSAAction(oldOptions.getAction());
         }
+        
         newmsgCtx.setAxisMessage(ao.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
         newmsgCtx.setOperationContext(inMessageContext.getOperationContext());
         newmsgCtx.setServiceContext(inMessageContext.getServiceContext());



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