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 ch...@apache.org on 2005/05/04 10:56:55 UTC
svn commit: r168102 - in /webservices/axis/trunk/java/modules/core:
src/org/apache/axis/addressing/ src/org/apache/axis/addressing/miheaders/
src/org/apache/axis/addressing/om/ src/org/apache/axis/clientapi/
src/org/apache/axis/context/ src/org/apache/axis/description/
src/org/apache/axis/handlers/addressing/
test/org/apache/axis/addressing/miheaders/
Author: chinthaka
Date: Wed May 4 01:56:54 2005
New Revision: 168102
URL: http://svn.apache.org/viewcvs?rev=168102&view=rev
Log:
Incorporating MEPContext changes with Addressing
Modified:
webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/AddressingConstants.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/EndpointReference.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/miheaders/RelatesTo.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/om/MessageInformationHeadersCollection.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/CallbackReceiver.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MEPContext.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/description/AxisOperation.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingInHandler.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingOutHandler.java
webservices/axis/trunk/java/modules/core/test/org/apache/axis/addressing/miheaders/RelatesToTest.java
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/AddressingConstants.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/AddressingConstants.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/AddressingConstants.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/AddressingConstants.java Wed May 4 01:56:54 2005
@@ -38,6 +38,9 @@
public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE =
"RelationshipType";
+ public static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE =
+ "wsa:Reply";
+
/**
* Field WSA_TO
*/
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/EndpointReference.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/EndpointReference.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/EndpointReference.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/EndpointReference.java Wed May 4 01:56:54 2005
@@ -88,7 +88,7 @@
}
/**
- * Method getAddress
+ * Method getValue
*
* @return
*/
@@ -97,7 +97,7 @@
}
/**
- * Method setAddress
+ * Method setValue
*
* @param address
*/
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/miheaders/RelatesTo.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/miheaders/RelatesTo.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/miheaders/RelatesTo.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/miheaders/RelatesTo.java Wed May 4 01:56:54 2005
@@ -20,9 +20,9 @@
*/
public class RelatesTo {
/**
- * Field address
+ * Field value
*/
- private String address;
+ private String value;
/**
* Field relationshipType
@@ -35,36 +35,36 @@
* @param address
*/
public RelatesTo(String address) {
- this.address = address;
+ this.value = address;
}
/**
* Constructor RelatesTo
*
- * @param address
+ * @param value
* @param relationshipType
*/
- public RelatesTo(String address, String relationshipType) {
- this.address = address;
+ public RelatesTo(String value, String relationshipType) {
+ this.value = value;
this.relationshipType = relationshipType;
}
/**
- * Method getAddress
+ * Method getValue
*
* @return
*/
- public String getAddress() {
- return address;
+ public String getValue() {
+ return value;
}
/**
- * Method setAddress
+ * Method setValue
*
- * @param address
+ * @param value
*/
- public void setAddress(String address) {
- this.address = address;
+ public void setValue(String value) {
+ this.value = value;
}
/**
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/om/MessageInformationHeadersCollection.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/om/MessageInformationHeadersCollection.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/om/MessageInformationHeadersCollection.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/addressing/om/MessageInformationHeadersCollection.java Wed May 4 01:56:54 2005
@@ -80,6 +80,7 @@
* @param soapHeader
*/
public void toOM(SOAPHeader soapHeader) {
+ throw new UnsupportedOperationException();
}
// ------------------- Setters and Getters --------------------------------------
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/CallbackReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/CallbackReceiver.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/CallbackReceiver.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/CallbackReceiver.java Wed May 4 01:56:54 2005
@@ -32,7 +32,7 @@
//TODO find the related message ID and call the callback
RelatesTo relatesTO = messgeCtx.getMessageInformationHeaders().getRelatesTo();
- String messageID = relatesTO.getAddress();
+ String messageID = relatesTO.getValue();
Callback callback = (Callback) callbackstore.get(messageID);
AsyncResult result = new AsyncResult();
result.setResult(messgeCtx.getEnvelope());
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MEPContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MEPContext.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MEPContext.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MEPContext.java Wed May 4 01:56:54 2005
@@ -44,5 +44,7 @@
public void addMessageContext(MessageContext msgContext) throws AxisFault;
public List getAllMessageContexts();
+
+ public MessageContext getLastInMessageContext();
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/description/AxisOperation.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/description/AxisOperation.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/description/AxisOperation.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/description/AxisOperation.java Wed May 4 01:56:54 2005
@@ -127,12 +127,12 @@
} else {
// So this message is part of an ongoing MEP
- mepContext = msgContext.getEngineContext().getMEPContext(msgContext.getRelatesTo().getAddress());
+ mepContext = msgContext.getEngineContext().getMEPContext(msgContext.getRelatesTo().getValue());
if (null == mepContext) {
throw new AxisFault(
"Cannot relate the message in the operation :"
- + this.getName() + " :Unrelated RelatesTO value "+msgContext.getRelatesTo().getAddress());
+ + this.getName() + " :Unrelated RelatesTO value "+msgContext.getRelatesTo().getValue());
}
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingInHandler.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingInHandler.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingInHandler.java Wed May 4 01:56:54 2005
@@ -39,6 +39,10 @@
/**
* Eran Chinthaka (chinthaka@apache.org) Date : 03-04-2005 Time : 14:42
*/
+
+ // this parameter has to be set by the module deployer.
+ private boolean isAddressingOptional = true;
+
private Log logger = LogFactory.getLog(getClass());
@@ -48,11 +52,15 @@
if(header == null){
return;
}
+
ArrayList addressingHeaders = header.getHeaderBolcksWithNSURI(AddressingConstants.WSA_NAMESPACE);
if (addressingHeaders != null) {
extractAddressingInformationFromHeaders(header, msgContext.getMessageInformationHeaders(),addressingHeaders);
} else {
// no addressing headers present
+ if(!isAddressingOptional){
+ throw new AxisFault("Addressing Handlers should present, but doesn't present in the incoming message !!");
+ }
logger.debug("No Addressing Headers present in the IN message. Addressing In Handler does nothing.");
}
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingOutHandler.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingOutHandler.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/handlers/addressing/AddressingOutHandler.java Wed May 4 01:56:54 2005
@@ -1,9 +1,7 @@
package org.apache.axis.handlers.addressing;
import java.util.Iterator;
-
import javax.xml.namespace.QName;
-
import org.apache.axis.addressing.AddressingConstants;
import org.apache.axis.addressing.AnyContentType;
import org.apache.axis.addressing.EndpointReference;
@@ -19,6 +17,9 @@
import org.apache.axis.om.SOAPHeader;
import org.apache.axis.om.SOAPHeaderBlock;
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+
/**
* Copyright 2001-2004 The Apache Software Foundation.
* <p/>
@@ -36,21 +37,46 @@
* <p/>
*/
public class AddressingOutHandler
- extends AbstractHandler
- implements AddressingConstants {
+ extends AbstractHandler
+ implements AddressingConstants {
+
/**
* Eran Chinthaka (chinthaka@apache.org)
*/
+
+ private boolean isAddressingEnabled = true;
+
+ // IN message, if any, has messageId and replyTo and faultTo addresses that needs to be used
+ // in the OUT message. User may sometimes override these values, at his discretion .The following
+ // boolean variable will create room for that.
+ private boolean overrideINMessageInformation = false;
+
OMNamespace addressingNamespace =
- OMAbstractFactory.getSOAP11Factory().createOMNamespace(WSA_NAMESPACE, "wsa");
+ OMAbstractFactory.getSOAP11Factory().createOMNamespace(WSA_NAMESPACE, "wsa");
+
public void invoke(MessageContext msgContext) throws AxisFault {
+
+ if (!isAddressingEnabled) {
+ return;
+ }
+
+ MessageContext lastInMessageContext = msgContext.getMepContext().getLastInMessageContext();
+
+
MessageInformationHeadersCollection messageInformationHeaders =
- msgContext.getMessageInformationHeaders();
+ msgContext.getMessageInformationHeaders();
SOAPHeader soapHeader = msgContext.getEnvelope().getHeader();
+
EndpointReference epr = messageInformationHeaders.getTo();
- if (epr != null) {
+ if (epr != null && (lastInMessageContext == null || overrideINMessageInformation)) {
addToSOAPHeader(epr, AddressingConstants.WSA_TO, soapHeader);
+ } else if (lastInMessageContext != null) {
+ if (!msgContext.getEnvelope().getBody().hasFault()) {
+ setINReplyToAsOUTTo(lastInMessageContext, soapHeader);
+ } else {
+ setINFaultToAsOUTTo(lastInMessageContext, soapHeader);
+ }
}
String action = messageInformationHeaders.getAction();
@@ -62,6 +88,7 @@
if (epr != null) {//optional
addToSOAPHeader(epr, AddressingConstants.WSA_REPLY_TO, soapHeader);
}
+
epr = messageInformationHeaders.getFrom();
if (epr != null) {//optional
addToSOAPHeader(epr, AddressingConstants.WSA_FROM, soapHeader);
@@ -77,50 +104,68 @@
}
RelatesTo relatesTo = messageInformationHeaders.getRelatesTo();
- if (relatesTo != null) { //optional
- OMElement relatesToHeader =
- processStringInfo(
- relatesTo.getAddress(),
- WSA_RELATES_TO,
- soapHeader);
- if (relatesToHeader != null
- && !"".equals(relatesTo.getRelationshipType())) {
- relatesToHeader.addAttribute(
- WSA_RELATES_TO_RELATIONSHIP_TYPE,
- relatesTo.getRelationshipType(),
- addressingNamespace);
+ OMElement relatesToHeader = null;
+
+ if (!overrideINMessageInformation && lastInMessageContext != null && "".equals(lastInMessageContext.getMessageID())) {
+ relatesToHeader = processStringInfo(lastInMessageContext.getMessageID(), WSA_RELATES_TO, soapHeader);
+ } else if (relatesTo != null) {
+ relatesToHeader = processStringInfo(relatesTo.getValue(), WSA_RELATES_TO, soapHeader);
+ }
+
+ if (relatesToHeader != null)
+ if ("".equals(relatesTo.getRelationshipType())) {
+ relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
+ WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE,
+ addressingNamespace);
+ } else {
+ relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
+ relatesTo.getRelationshipType(),
+ addressingNamespace);
}
+ }
+
+
+ private void setINFaultToAsOUTTo(MessageContext lastInMessageContext, SOAPHeader soapHeader) {
+ EndpointReference lastInFaultTo = lastInMessageContext.getFaultTo();
+ if (lastInFaultTo != null) {
+ addToSOAPHeader(lastInFaultTo, AddressingConstants.WSA_TO, soapHeader);
+ } else {
+ setINReplyToAsOUTTo(lastInMessageContext, soapHeader);
+ }
+ }
+
+ private void setINReplyToAsOUTTo(MessageContext lastInMessageContext, SOAPHeader soapHeader) {
+ EndpointReference lastInReplyTo = lastInMessageContext.getReplyTo();
+ if (lastInReplyTo != null) {
+ addToSOAPHeader(lastInReplyTo, AddressingConstants.WSA_TO, soapHeader);
}
}
- private OMElement processStringInfo(
- String value,
- String type,
- SOAPHeader soapHeader) {
+ private OMElement processStringInfo(String value,
+ String type,
+ SOAPHeader soapHeader) {
if (!"".equals(value) && value != null) {
SOAPHeaderBlock soapHeaderBlock =
- soapHeader.addHeaderBlock(type, addressingNamespace);
+ soapHeader.addHeaderBlock(type, addressingNamespace);
soapHeaderBlock.addChild(OMAbstractFactory.getSOAP11Factory().createText(value));
return soapHeaderBlock;
}
return null;
}
- protected void addToSOAPHeader(
- EndpointReference epr,
- String type,
- SOAPHeader soapHeader) {
+ protected void addToSOAPHeader(EndpointReference epr,
+ String type,
+ SOAPHeader soapHeader) {
if (epr == null) {
return;
}
String address = epr.getAddress();
if (!"".equals(address) && address != null) {
SOAPHeaderBlock soapHeaderBlock =
- soapHeader.addHeaderBlock(type, addressingNamespace);
+ soapHeader.addHeaderBlock(type, addressingNamespace);
OMElement addressElement =
- OMAbstractFactory.getSOAP11Factory().createOMElement(
- EPR_ADDRESS,
- addressingNamespace);
+ OMAbstractFactory.getSOAP11Factory().createOMElement(EPR_ADDRESS,
+ addressingNamespace);
soapHeaderBlock.addChild(addressElement);
addressElement.setText(address);
@@ -129,27 +174,21 @@
QName portType = epr.getPortType();
if (portType != null) {
SOAPHeaderBlock soapHeaderBlock =
- soapHeader.addHeaderBlock(EPR_PORT_TYPE, addressingNamespace);
- soapHeaderBlock.addChild(
- OMAbstractFactory.getSOAP11Factory().createText(
- portType.getPrefix() + ":" + portType.getLocalPart()));
+ soapHeader.addHeaderBlock(EPR_PORT_TYPE, addressingNamespace);
+ soapHeaderBlock.addChild(OMAbstractFactory.getSOAP11Factory().createText(portType.getPrefix() + ":" + portType.getLocalPart()));
}
ServiceName serviceName = epr.getServiceName();
if (serviceName != null) {
SOAPHeaderBlock soapHeaderBlock =
- soapHeader.addHeaderBlock(
- EPR_SERVICE_NAME,
+ soapHeader.addHeaderBlock(EPR_SERVICE_NAME,
+ addressingNamespace);
+ soapHeaderBlock.addAttribute(EPR_SERVICE_NAME_PORT_NAME,
+ serviceName.getPortName(),
addressingNamespace);
- soapHeaderBlock.addAttribute(
- EPR_SERVICE_NAME_PORT_NAME,
- serviceName.getPortName(),
- addressingNamespace);
- soapHeaderBlock.addChild(
- OMAbstractFactory.getSOAP11Factory().createText(
- serviceName.getName().getPrefix()
- + ":"
- + serviceName.getName().getLocalPart()));
+ soapHeaderBlock.addChild(OMAbstractFactory.getSOAP11Factory().createText(serviceName.getName().getPrefix()
+ + ":"
+ + serviceName.getName().getLocalPart()));
}
AnyContentType referenceParameters = epr.getReferenceParameters();
@@ -160,16 +199,15 @@
}
- private void processAnyContentType(
- AnyContentType referenceParameters,
- SOAPHeader soapHeader) {
+ private void processAnyContentType(AnyContentType referenceParameters,
+ SOAPHeader soapHeader) {
if (referenceParameters != null) {
Iterator iterator = referenceParameters.getKeys();
while (iterator.hasNext()) {
QName key = (QName) iterator.next();
String value = referenceParameters.getReferenceValue(key);
OMElement omElement =
- OMAbstractFactory.getSOAP11Factory().createOMElement(key, soapHeader);
+ OMAbstractFactory.getSOAP11Factory().createOMElement(key, soapHeader);
soapHeader.addChild(omElement);
omElement.addChild(OMAbstractFactory.getSOAP11Factory().createText(value));
}
Modified: webservices/axis/trunk/java/modules/core/test/org/apache/axis/addressing/miheaders/RelatesToTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/test/org/apache/axis/addressing/miheaders/RelatesToTest.java?rev=168102&r1=168101&r2=168102&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/test/org/apache/axis/addressing/miheaders/RelatesToTest.java (original)
+++ webservices/axis/trunk/java/modules/core/test/org/apache/axis/addressing/miheaders/RelatesToTest.java Wed May 4 01:56:54 2005
@@ -37,11 +37,11 @@
public void testGetAddress() {
relatesTo = new RelatesTo(address, relationshipType);
- assertEquals("RelatesTo address has not been set properly in the constructor", relatesTo.getAddress(), address);
+ assertEquals("RelatesTo address has not been set properly in the constructor", relatesTo.getValue(), address);
String newAddress = "www.newRelation.org";
- relatesTo.setAddress(newAddress);
- assertEquals("RelatesTo address has not been get/set properly", relatesTo.getAddress(), newAddress);
+ relatesTo.setValue(newAddress);
+ assertEquals("RelatesTo address has not been get/set properly", relatesTo.getValue(), newAddress);
}
@@ -57,7 +57,7 @@
public void testSingleArgumentConstructor() {
relatesTo = new RelatesTo(address);
- assertEquals("RelatesTo address has not been set properly in the constructor", relatesTo.getAddress(), address);
+ assertEquals("RelatesTo address has not been set properly in the constructor", relatesTo.getValue(), address);
}