Author: chamikara
Date: Thu May 31 12:48:29 2007
New Revision: 543231
URL: http://svn.apache.org/viewvc?view=rev&rev=543231
Log:
A correction to the fault handling logic to check weather the message processed
is a piggybacked one, before throwing it out.
A bug fix in the MsgInitializer.
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
Thu May 31 12:48:29 2007
@@ -233,5 +233,6 @@
public final static String noPolling="noPolling";
public final static String freeingTransport="freeingTransport";
public final static String offerRequiredForAnon =
"offerRequiredForAnon";
+ public final static String
couldNotSendFaultDueToException="couldNotSendFaultDueToException";
}
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
Thu May 31 12:48:29 2007
@@ -110,6 +110,8 @@
if (log.isDebugEnabled())
log.debug("Enter:
AckRequestedProcessor::processAckRequestedHeader " + soapHeader);
+ boolean piggybackedAckRequest =
!(rmMsgCtx.getMessageType()==Sandesha2Constants.MessageTypes.ACK_REQUEST);
+
String sequenceId =
ackRequested.getIdentifier().getIdentifier();
MessageContext msgContext = rmMsgCtx.getMessageContext();
@@ -129,14 +131,14 @@
}
// Check that the sequence requested exists
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId,
storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId,
storageManager, piggybackedAckRequest)) {
if (log.isDebugEnabled())
log.debug("Exit:
AckRequestedProcessor::processAckRequestedHeader, Unknown sequence ");
return false;
}
// throwing a fault if the sequence is terminated
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
sequenceId, rmdBean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
sequenceId, rmdBean, piggybackedAckRequest)) {
if (log.isDebugEnabled())
log.debug("Exit:
AckRequestedProcessor::processAckRequestedHeader, Sequence terminated");
return false;
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
Thu May 31 12:48:29 2007
@@ -103,6 +103,8 @@
if (log.isDebugEnabled())
log.debug("Enter:
AcknowledgementProcessor::processAckHeader " + soapHeader);
+ boolean piggybackedAck =
!(rmMsgCtx.getMessageType()==Sandesha2Constants.MessageTypes.ACK);
+
MessageContext msgCtx = rmMsgCtx.getMessageContext();
ConfigurationContext configCtx =
msgCtx.getConfigurationContext();
@@ -119,12 +121,12 @@
log.debug(message);
throw new SandeshaException(message);
}
- if (FaultManager.checkForUnknownSequence(rmMsgCtx,
outSequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx,
outSequenceId, storageManager, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit:
AcknowledgementProcessor::processAckHeader, Unknown sequence");
return;
}
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
outSequenceId, rmsBean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
outSequenceId, rmsBean, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit:
AcknowledgementProcessor::processAckHeader, Sequence terminated");
return;
@@ -142,13 +144,13 @@
if(log.isDebugEnabled()) log.debug("Got Ack for RM Sequence: "
+ outSequenceId + ", internalSeqId: " + internalSequenceId);
Iterator ackRangeIterator =
sequenceAck.getAcknowledgementRanges().iterator();
- if (FaultManager.checkForUnknownSequence(rmMsgCtx,
outSequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx,
outSequenceId, storageManager, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit:
AcknowledgementProcessor::processAckHeader, Unknown sequence ");
return;
}
- if (FaultManager.checkForInvalidAcknowledgement(rmMsgCtx,
sequenceAck, storageManager, rmsBean)) {
+ if (FaultManager.checkForInvalidAcknowledgement(rmMsgCtx,
sequenceAck, storageManager, rmsBean, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit:
AcknowledgementProcessor::processAckHeader, Invalid Ack range ");
return;
@@ -192,7 +194,7 @@
// Check we haven't got
an Ack for a message that hasn't been sent yet !
if
(retransmitterBean.getSentCount() == 0) {
FaultManager.makeInvalidAcknowledgementFault(rmMsgCtx, sequenceAck, ackRange,
-
storageManager);
+
storageManager, piggybackedAck);
if
(log.isDebugEnabled())
log.debug("Exit: AcknowledgementProcessor::processAckHeader, Invalid Ack");
return;
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
Thu May 31 12:48:29 2007
@@ -83,14 +83,14 @@
secManager.checkProofOfPossession(token, body, msgCtx);
}
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId,
storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId,
storageManager, false)) {
if (log.isDebugEnabled())
log.debug("Exit:
CloseSequenceProcessor::processInMessage, Unknown sequence " + sequenceId);
return false;
}
// throwing a fault if the sequence is terminated
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
sequenceId, rmdBean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
sequenceId, rmdBean, false)) {
if (log.isDebugEnabled())
log.debug("Exit:
CloseSequenceProcessor::processInMessage, Sequence terminated");
return false;
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
Thu May 31 12:48:29 2007
@@ -127,7 +127,7 @@
SenderBean matchingMessage,
StorageManager storageManager,
boolean pending,
- String namespace,
+ String makeConnectionNamespace,
Transaction transaction)
throws AxisFault
{
@@ -149,7 +149,7 @@
return;
}
- if(pending) addMessagePendingHeader(returnMessage, namespace);
+ if(pending) addMessagePendingHeader(returnMessage,
makeConnectionNamespace);
RMMsgContext returnRMMsg =
MsgInitializer.initializeMessage(returnMessage);
if(returnRMMsg.getRMNamespaceValue()==null){
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
Thu May 31 12:48:29 2007
@@ -139,21 +139,21 @@
throw new SandeshaException(message);
}
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId,
storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId,
storageManager, false)) {
if (log.isDebugEnabled())
log.debug("Exit:
SequenceProcessor::processReliableMessage, Unknown sequence");
return InvocationResponse.ABORT;
}
// throwing a fault if the sequence is terminated
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
sequenceId, bean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx,
sequenceId, bean, false)) {
if (log.isDebugEnabled())
log.debug("Exit:
SequenceProcessor::processReliableMessage, Sequence terminated");
return InvocationResponse.ABORT;
}
// throwing a fault if the sequence is closed.
- if (FaultManager.checkForSequenceClosed(rmMsgCtx, sequenceId,
bean)) {
+ if (FaultManager.checkForSequenceClosed(rmMsgCtx, sequenceId,
bean, false)) {
if (log.isDebugEnabled())
log.debug("Exit:
SequenceProcessor::processReliableMessage, Sequence closed");
return InvocationResponse.ABORT;
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
Thu May 31 12:48:29 2007
@@ -100,7 +100,7 @@
secManager.checkProofOfPossession(token, body,
terminateSeqRMMsg.getMessageContext());
}
- if (FaultManager.checkForUnknownSequence(terminateSeqRMMsg,
sequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(terminateSeqRMMsg,
sequenceId, storageManager, false)) {
if (log.isDebugEnabled())
log.debug("Exit:
TerminateSeqMsgProcessor::processInMessage, unknown sequence");
return false;
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
Thu May 31 12:48:29 2007
@@ -42,6 +42,7 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.WSDL2Constants;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.engine.MessageReceiver;
import org.apache.axis2.engine.Handler.InvocationResponse;
@@ -68,6 +69,7 @@
import org.apache.sandesha2.storage.beans.RMSequenceBean;
import org.apache.sandesha2.storage.beans.SenderBean;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
+import org.apache.sandesha2.wsrm.FaultCode;
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
import org.apache.sandesha2.wsrm.SequenceFault;
@@ -152,7 +154,7 @@
* @throws SandeshaException
*/
public static boolean checkForUnknownSequence(RMMsgContext
rmMessageContext, String sequenceID,
- StorageManager storageManager) throws AxisFault {
+ StorageManager storageManager, boolean
piggybackedMessage) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
FaultManager::checkForUnknownSequence, " + sequenceID);
@@ -199,7 +201,9 @@
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::checkForUnknownSequence, Sequence unknown");
- getOrSendFault(rmMessageContext, data);
+
+ boolean faultThrowable = !piggybackedMessage;
+ getOrSendFault(rmMessageContext, data, faultThrowable);
return true;
}
@@ -217,7 +221,7 @@
* @throws SandeshaException
*/
public static boolean checkForInvalidAcknowledgement(RMMsgContext
ackRMMessageContext, SequenceAcknowledgement sequenceAcknowledgement,
- StorageManager storageManager, RMSBean rmsBean)
+ StorageManager storageManager, RMSBean rmsBean, boolean
piggybackedMessage)
throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
FaultManager::checkForInvalidAcknowledgement");
@@ -247,7 +251,7 @@
if (invalidAck) {
makeInvalidAcknowledgementFault(ackRMMessageContext, sequenceAcknowledgement,
- acknowledgementRange,
storageManager);
+ acknowledgementRange,
storageManager, piggybackedMessage);
return true;
}
}
@@ -266,7 +270,7 @@
*/
public static void makeInvalidAcknowledgementFault(RMMsgContext
rmMsgCtx,
SequenceAcknowledgement sequenceAcknowledgement,
AcknowledgementRange acknowledgementRange,
- StorageManager storageManager) throws AxisFault {
+ StorageManager storageManager, boolean
piggybackedMessage) throws AxisFault {
FaultData data = new FaultData();
int SOAPVersion =
SandeshaUtil.getSOAPVersion(rmMsgCtx.getMessageContext().getEnvelope());
if (SOAPVersion == Sandesha2Constants.SOAPVersion.v1_1)
@@ -294,7 +298,9 @@
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::checkForInvalidAcknowledgement, invalid ACK");
- getOrSendFault(rmMsgCtx, data);
+
+ boolean throwable = !piggybackedMessage;
+ getOrSendFault(rmMsgCtx, data, throwable);
}
/**
@@ -337,7 +343,7 @@
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::makeCreateSequenceRefusedFault");
- getOrSendFault(rmMessageContext, data);
+ getOrSendFault(rmMessageContext, data, true);
}
/**
@@ -348,7 +354,8 @@
* @return
* @throws AxisFault
*/
- public static boolean checkForSequenceTerminated(RMMsgContext
referenceRMMessage, String sequenceID, RMSequenceBean bean)
+ public static boolean checkForSequenceTerminated(RMMsgContext
referenceRMMessage, String sequenceID, RMSequenceBean bean
+ , boolean piggybackedMessage)
throws AxisFault {
if (log.isDebugEnabled())
@@ -378,7 +385,9 @@
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::checkForSequenceClosed, sequence closed");
- getOrSendFault(referenceRMMessage, data);
+
+ boolean throwable = !piggybackedMessage;
+ getOrSendFault(referenceRMMessage, data, throwable);
return true;
}
@@ -388,7 +397,7 @@
}
public static boolean checkForSequenceClosed(RMMsgContext
referenceRMMessage, String sequenceID,
- RMDBean rmdBean) throws AxisFault {
+ RMDBean rmdBean, boolean piggybackedMessage) throws
AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: FaultManager::checkForSequenceClosed,
" + sequenceID);
@@ -416,7 +425,9 @@
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::checkForSequenceClosed, sequence closed");
- getOrSendFault(referenceRMMessage, data);
+
+ boolean throwable = !piggybackedMessage;
+ getOrSendFault(referenceRMMessage, data,throwable);
return true;
}
@@ -431,11 +442,17 @@
*
* @param referenceRMMsgContext - Message in reference to which the
fault will be generated.
* @param data - data for the fault
+ * @param throwable - This tells weather or not it is ok to throw the
fault out. I.e. this should not be done when processing
+ * piggybacked acks since this
will stop the carrier message from being processed.
* @return - The dummy fault to be thrown out.
*
* @throws AxisFault
*/
- public static void getOrSendFault(RMMsgContext referenceRMMsgContext,
FaultData data) throws AxisFault {
+ public static void getOrSendFault(RMMsgContext referenceRMMsgContext,
FaultData data, boolean throwable) throws AxisFault {
+
+
+
+
SOAPFactory factory = (SOAPFactory)
referenceRMMsgContext.getSOAPEnvelope().getOMFactory();
SOAPFaultCode faultCode = factory.createSOAPFaultCode();
@@ -459,31 +476,66 @@
String SOAPNamespaceValue = factory.getSoapVersionURI();
- 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
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue)) {
+ 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);
-
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext,
Sandesha2Constants.SOAPVersion.v1_1, data,
referenceRMMsgContext.getRMNamespaceValue());
+
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext,
Sandesha2Constants.SOAPVersion.v1_1, data,
referenceRMMsgContext.getRMNamespaceValue());
-
referenceRMMsgContext.getMessageContext().getOperationContext().setProperty(
+
referenceRMMsgContext.getMessageContext().getOperationContext().setProperty(
org.apache.axis2.Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
- // Set the action
- faultMessageContext.setWSAAction(
+ // Set the action
+ faultMessageContext.setWSAAction(
SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
- if (log.isDebugEnabled())
- log.debug("Sending fault message " +
faultMessageContext.getEnvelope().getHeader());
- // Send the message
- AxisEngine engine = new
AxisEngine(faultMessageContext.getConfigurationContext());
- engine.sendFault(faultMessageContext);
+ 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 {
+ AxisEngine engine = new
AxisEngine(faultMessageContext.getConfigurationContext());
+ engine.sendFault(faultMessageContext);
+ } 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);
+ }
- return;
+ return;
+
+ } else {
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.unknownSoapVersion);
+ 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)
+ throw fault;
+ else
+ log.error("Sandesha2 got a fault when processing the
message essage " + referenceRMMsgContext.getMessageId(), fault);
+
}
+
+
+
+
public static boolean isRMFault (String faultSubcodeValue) {
if (faultSubcodeValue==null)
@@ -653,7 +705,7 @@
data.setType(Sandesha2Constants.SOAPFaults.FaultType.MESSAGE_NUMBER_ROLLOVER);
- getOrSendFault(rmMessageContext, data);
+ getOrSendFault(rmMessageContext, data, true);
return true;
}
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
---
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
(original)
+++
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
Thu May 31 12:48:29 2007
@@ -157,7 +157,9 @@
if (elements.getMessagePending() != null) {
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.MESSAGE_PENDING,
elements.getMessagePending());
- rmNamespace =
elements.getMessagePending().getNamespaceValue();
+ String makeConnectionNamespace =
elements.getMessagePending().getNamespaceValue();
+ if
(Sandesha2Constants.SPEC_2007_02.MC_NS_URI.equals(makeConnectionNamespace))
+ rmNamespace =
Sandesha2Constants.SPEC_2007_02.NS_URI;
}
if (elements.getSequenceFault() != null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]