You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ch...@apache.org on 2007/05/31 21:48:30 UTC

svn commit: r543231 - in /webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2: i18n/ msgprocessors/ util/

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: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org