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 di...@apache.org on 2006/03/09 01:00:49 UTC
svn commit: r384382 -
/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
Author: dims
Date: Wed Mar 8 16:00:47 2006
New Revision: 384382
URL: http://svn.apache.org/viewcvs?rev=384382&view=rev
Log:
check all the addressing headers *first* since if the faultto gets set up to a non-anonymous endpoint then that causes problems
Modified:
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java?rev=384382&r1=384381&r2=384382&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java Wed Mar 8 16:00:47 2006
@@ -87,43 +87,51 @@
Options messageContextOptions = messageContext.getOptions();
Map alreadyFoundAddrHeader = new HashMap(7); // there are seven frequently used WS-A headers
+ // First pass just check for duplicates
Iterator addressingHeadersIt = addressingHeaders.iterator();
while (addressingHeadersIt.hasNext()) {
SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) addressingHeadersIt.next();
-
if (SOAP12Constants.SOAP_ROLE_NONE.equals(soapHeaderBlock.getRole()))
continue;
+ if (WSA_TO.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_TO, messageContext, alreadyFoundAddrHeader);
+ } else if (WSA_FROM.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_FROM, messageContext, alreadyFoundAddrHeader);
+ } else if (WSA_REPLY_TO.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_REPLY_TO, messageContext, alreadyFoundAddrHeader);
+ } else if (WSA_FAULT_TO.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_FAULT_TO, messageContext, alreadyFoundAddrHeader);
+ } else if (WSA_MESSAGE_ID.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_MESSAGE_ID, messageContext, alreadyFoundAddrHeader);
+ } else if (WSA_ACTION.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_ACTION, messageContext, alreadyFoundAddrHeader);
+ } else if (WSA_RELATES_TO.equals(soapHeaderBlock.getLocalName())) {
+ checkDuplicateHeaders(WSA_RELATES_TO, messageContext, alreadyFoundAddrHeader);
+ }
+ }
+ // Now extract information
+ Iterator addressingHeadersIt2 = addressingHeaders.iterator();
+ while (addressingHeadersIt2.hasNext()) {
+ SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) addressingHeadersIt2.next();
+ if (SOAP12Constants.SOAP_ROLE_NONE.equals(soapHeaderBlock.getRole()))
+ continue;
if (WSA_TO.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_TO, messageContext, alreadyFoundAddrHeader)) {
- extractToEPRInformation(soapHeaderBlock, messageContextOptions, header);
- }
+ extractToEPRInformation(soapHeaderBlock, messageContextOptions, header);
} else if (WSA_FROM.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_FROM, messageContext, alreadyFoundAddrHeader)) {
- extractFromEPRInformation(messageContextOptions, soapHeaderBlock, addressingNamespace);
- }
+ extractFromEPRInformation(messageContextOptions, soapHeaderBlock, addressingNamespace);
} else if (WSA_REPLY_TO.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_REPLY_TO, messageContext, alreadyFoundAddrHeader)) {
- extractReplyToEPRInformation(messageContextOptions, soapHeaderBlock, addressingNamespace);
- }
+ extractReplyToEPRInformation(messageContextOptions, soapHeaderBlock, addressingNamespace);
} else if (WSA_FAULT_TO.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_FAULT_TO, messageContext, alreadyFoundAddrHeader)) {
- extractFaultToEPRInformation(messageContextOptions, soapHeaderBlock, addressingNamespace);
- }
+ extractFaultToEPRInformation(messageContextOptions, soapHeaderBlock, addressingNamespace);
} else if (WSA_MESSAGE_ID.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_MESSAGE_ID, messageContext, alreadyFoundAddrHeader)) {
- messageContextOptions.setMessageId(soapHeaderBlock.getText());
- soapHeaderBlock.setProcessed();
- }
+ messageContextOptions.setMessageId(soapHeaderBlock.getText());
+ soapHeaderBlock.setProcessed();
} else if (WSA_ACTION.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_ACTION, messageContext, alreadyFoundAddrHeader)) {
- messageContextOptions.setAction(soapHeaderBlock.getText());
- soapHeaderBlock.setProcessed();
- }
+ messageContextOptions.setAction(soapHeaderBlock.getText());
+ soapHeaderBlock.setProcessed();
} else if (WSA_RELATES_TO.equals(soapHeaderBlock.getLocalName())) {
- if (!hasDuplicateHeaders(WSA_RELATES_TO, messageContext, alreadyFoundAddrHeader)) {
- extractRelatesToInformation(soapHeaderBlock, addressingNamespace, messageContextOptions);
- }
+ extractRelatesToInformation(soapHeaderBlock, addressingNamespace, messageContextOptions);
}
}
@@ -139,7 +147,7 @@
}
}
- private boolean hasDuplicateHeaders(String addressingHeaderName, MessageContext messageContext, Map alreadyFoundAddressingHeaders) throws AxisFault {
+ private boolean checkDuplicateHeaders(String addressingHeaderName, MessageContext messageContext, Map alreadyFoundAddressingHeaders) throws AxisFault {
if (alreadyFoundAddressingHeaders.get(addressingHeaderName) != null) {
throwFault(messageContext, addressingHeaderName, Final.FAULT_INVALID_HEADER, Final.FAULT_INVALID_CARDINALITY);
} else {