You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.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