Author: mckierna
Date: Wed Sep 24 03:24:30 2008
New Revision: 698510
URL: http://svn.apache.org/viewvc?rev=698510&view=rev
Log:
Further improvements to invalid ack processing
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java?rev=698510&r1=698509&r2=698510&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
(original)
+++
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
Wed Sep 24 03:24:30 2008
@@ -269,6 +269,8 @@
data.setCode(SOAP11Constants.FAULT_CODE_SENDER);
else
data.setCode(SOAP12Constants.FAULT_CODE_SENDER);
+
+ System.out.println("makingInvalidAck piggy=" +
piggybackedMessage + ": soap=" + SOAPVersion);
data.setType(Sandesha2Constants.SOAPFaults.FaultType.INVALID_ACKNOWLEDGEMENT);
data.setSubcode(SpecSpecificConstants.getFaultSubcode(rmMsgCtx.getRMNamespaceValue(),
@@ -567,72 +569,88 @@
String SOAPNamespaceValue = factory.getSoapVersionURI();
- if
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue)) {
- reasonText.setLang(Sandesha2Constants.LANG_EN);
+ if
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue))
+ {
+ reasonText.setLang(Sandesha2Constants.LANG_EN);
reason.addSOAPText(reasonText);
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME,
faultCode);
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME,
reason);
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME,
detail);
- } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals
(SOAPNamespaceValue)) {
- reason.setText(data.getReason());
-
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME,
faultCode);
-
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME,
detail);
-
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME,
reason);
- // Need to send this message as the Axis Layer doesn't
set the "SequenceFault" header
- MessageContext faultMessageContext =
-
MessageContextBuilder.createFaultMessageContext(referenceRMMsgContext.getMessageContext(),
null);
- if(acksToEPR!=null){
- if (log.isDebugEnabled())
- log.debug("Debug: FaultManager::getOrSendFault:
rewrriting fault destination EPR to " + acksToEPR);
- faultMessageContext.setTo(acksToEPR);
- }
-
-
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext,
Sandesha2Constants.SOAPVersion.v1_1, data,
referenceRMMsgContext.getRMNamespaceValue());
- // Set the action // TODO SET THE ACTION BASED ON THE
SPEC
- faultMessageContext.setWSAAction(
-
SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
+ AxisFault fault = new
AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "",
data.getDetail());
+
fault.setFaultAction(SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
- if (log.isDebugEnabled())
- log.debug("Sending fault message " +
faultMessageContext.getEnvelope().getHeader());
+ //if this is throwable throwing it out, else we will
log here.
+
+ if (throwable)
+ {
+ if
(referenceRMMsgContext.getMessageContext().isServerSide()) {
+ if (log.isDebugEnabled())
+ log.debug("Exit:
FaultManager::getOrSendFault: " + fault);
+ System.out.println("throw fault2 " + fault);
+ throw fault;
+ }
+ }
+ else
+ log.error("Sandesha2 got a fault when
processing the message " + referenceRMMsgContext.getMessageId(), fault);
+ }
+ else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals
(SOAPNamespaceValue))
+ {
+
+ reason.setText(data.getReason());
+
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME,
faultCode);
+
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME,
detail);
+
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME,
reason);
+ // Need to send this message as the Axis Layer
doesn't set the "SequenceFault" header
+ MessageContext faultMessageContext =
+
MessageContextBuilder.createFaultMessageContext(referenceRMMsgContext.getMessageContext(),
null);
+ if(acksToEPR!=null){
+ if (log.isDebugEnabled())
+ log.debug("Debug:
FaultManager::getOrSendFault: rewrriting fault destination EPR to " +
acksToEPR);
+ faultMessageContext.setTo(acksToEPR);
+ }
- // Sending the message
- //having a surrounded try block will make sure
that the error is logged here
- //and that this does not disturb the processing
of a carrier message.
- try {
-
AxisEngine.sendFault(faultMessageContext);
-
- EndpointReference destination =
faultMessageContext.getTo();
- if(destination == null ||
destination.hasAnonymousAddress()) {
-
TransportUtils.setResponseWritten(referenceRMMsgContext.getMessageContext(),
true);
- }
- } catch (Exception e) {
+
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext,
Sandesha2Constants.SOAPVersion.v1_1, data,
referenceRMMsgContext.getRMNamespaceValue());
+
+ // Set the action // TODO SET THE ACTION BASED
ON THE SPEC
+ faultMessageContext.setWSAAction(
+
SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
+
+ if(throwable)
+ {
+ if (log.isDebugEnabled())
+ log.debug("Sending fault
message " + faultMessageContext.getEnvelope().getHeader());
+
+ // Sending the message
+ //having a surrounded try block will
make sure that the error is logged here
+ //and that this does not disturb the
processing of a carrier message.
+ try {
+ System.out.println("sendFault "
+ faultMessageContext.getEnvelope());
+
AxisEngine.sendFault(faultMessageContext);
+
+ EndpointReference destination =
faultMessageContext.getTo();
+ if(destination == null ||
destination.hasAnonymousAddress()) {
+
TransportUtils.setResponseWritten(referenceRMMsgContext.getMessageContext(),
true);
+ }
+ } catch (Exception e) {
+ AxisFault fault = new
AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "",
data.getDetail());
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFaultDueToException,
fault.getMessage(), e.getMessage());
+ log.error(message);
+ }
+ }
+ else
+ {
AxisFault fault = new
AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "",
data.getDetail());
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFaultDueToException,
fault.getMessage(), e.getMessage());
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFaultDueToException,
fault.getMessage());
log.error(message);
}
-
- return;
-
- } else {
+ }
+ else
+ {
String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.unknownSoapVersion);
+ System.out.println("throwing exception " + message);
throw new SandeshaException (message);
}
-
- AxisFault fault = new
AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "",
data.getDetail());
-
fault.setFaultAction(SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
-
- //if this is throwable throwing it out, else we will log here.
-
- if (throwable)
- if (referenceRMMsgContext.getMessageContext().isServerSide()) {
- if (log.isDebugEnabled())
- log.debug("Exit: FaultManager::getOrSendFault:
" + fault);
- throw fault;
- }
-
- // TODO - Remove console written strings
- log.error("Sandesha2 got a fault when processing the message "
+ referenceRMMsgContext.getMessageId(), fault);
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::getOrSendFault");
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]