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 di...@apache.org on 2006/03/06 05:54:33 UTC
svn commit: r383464 - in
/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing:
AddressingInHandler.java AddressingOutHandler.java
Author: dims
Date: Sun Mar 5 20:54:31 2006
New Revision: 383464
URL: http://svn.apache.org/viewcvs?rev=383464&view=rev
Log:
- rename makeFault to throwFault as it is throwing a fault :)
- get the message id from the incoming message and add it to the fault's RelatesTo so that people know which message id caused this specific fault.
Modified:
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.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=383464&r1=383463&r2=383464&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 Sun Mar 5 20:54:31 2006
@@ -135,32 +135,52 @@
private void checkForMandatoryHeaders(Map alreadyFoundAddrHeader, MessageContext messageContext) throws AxisFault {
if (alreadyFoundAddrHeader.get(WSA_ACTION) == null) {
- makeFault(messageContext, WSA_ACTION, Final.FAULT_ADDRESSING_HEADER_REQUIRED, null);
+ throwFault(messageContext, WSA_ACTION, Final.FAULT_ADDRESSING_HEADER_REQUIRED, null);
}
}
private boolean hasDuplicateHeaders(String addressingHeaderName, MessageContext messageContext, Map alreadyFoundAddressingHeaders) throws AxisFault {
if (alreadyFoundAddressingHeaders.get(addressingHeaderName) != null) {
- return makeFault(messageContext, addressingHeaderName, Final.FAULT_INVALID_HEADER, Final.FAULT_INVALID_CARDINALITY);
+ throwFault(messageContext, addressingHeaderName, Final.FAULT_INVALID_HEADER, Final.FAULT_INVALID_CARDINALITY);
} else {
alreadyFoundAddressingHeaders.put(addressingHeaderName, addressingHeaderName);
}
return false;
}
- private boolean makeFault(MessageContext messageContext, String addressingHeaderName, String faultCode, String faultSubCode) throws AxisFault {
+ private void throwFault(MessageContext messageContext, String addressingHeaderName, String faultCode, String faultSubCode) throws AxisFault {
Map faultInformation = (Map) messageContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS);
if (faultInformation == null) {
faultInformation = new HashMap();
messageContext.setProperty(Constants.FAULT_INFORMATION_FOR_HEADERS, faultInformation);
}
+ if(messageContext.getMessageID() != null) {
+ faultInformation.put(AddressingConstants.WSA_RELATES_TO,messageContext.getMessageID());
+ } else {
+ faultInformation.put(AddressingConstants.WSA_RELATES_TO,getMessageID(messageContext));
+ }
faultInformation.put(Final.FAULT_HEADER_PROB_HEADER_QNAME, WSA_DEFAULT_PREFIX + ":" + addressingHeaderName);
faultInformation.put(Final.WSA_FAULT_ACTION, Final.WSA_FAULT_ACTION);
if (!messageContext.isSOAP11()) {
setFaultCode(messageContext, faultCode, faultSubCode);
}
throw new AxisFault("A header representing a Message Addressing Property is not valid and the message cannot be processed", WSA_DEFAULT_PREFIX + ":" + faultCode);
+ }
+
+ private String getMessageID(MessageContext msgContext) {
+ SOAPHeader header = msgContext.getEnvelope().getHeader();
+ if (header != null) {
+ ArrayList addressingHeaders = header.getHeaderBlocksWithNSURI(addressingNamespace);
+ Iterator addressingHeadersIt = addressingHeaders.iterator();
+ while (addressingHeadersIt.hasNext()) {
+ SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) addressingHeadersIt.next();
+ if (WSA_MESSAGE_ID.equals(soapHeaderBlock.getLocalName())) {
+ return soapHeaderBlock.getText();
+ }
+ }
+ }
+ return null;
}
private void setFaultCode(MessageContext messageContext, String faultCode, String faultSubCode) {
Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=383464&r1=383463&r2=383464&view=diff
==============================================================================
--- 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 Sun Mar 5 20:54:31 2006
@@ -166,6 +166,12 @@
OMElement probHeaderQName = OMAbstractFactory.getOMFactory().createOMElement(Final.FAULT_HEADER_PROB_HEADER_QNAME, addressingNamespaceObject, faultDetail);
probHeaderQName.setText(faultyHeaderQName);
+ String messageID = (String) faultInfo.get(AddressingConstants.WSA_RELATES_TO);
+ if(messageID != null) {
+ SOAPHeaderBlock relatesTo = envelope.getHeader().addHeaderBlock(AddressingConstants.WSA_RELATES_TO, addressingNamespaceObject);
+ relatesTo.setText(messageID);
+ }
+
// add to header
SOAPFault fault = envelope.getBody().getFault();
if (fault != null && fault.getDetail() != null) {