Author: chamikara
Date: Thu May 31 13:04:00 2007
New Revision: 543241

URL: http://svn.apache.org/viewvc?view=rev&rev=543241
Log:
Merger the previous commits to the branch, to the trunk

Modified:
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
    
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
    webservices/sandesha/trunk/java/modules/mar/pom.xml

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 Thu May 31 13:04:00 2007
@@ -235,5 +235,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/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 Thu May 31 13:04:00 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/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 Thu May 31 13:04:00 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/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
 Thu May 31 13:04:00 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/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
 Thu May 31 13:04:00 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);
                boolean continueSending = true;
                RMMsgContext returnRMMsg = 
MsgInitializer.initializeMessage(returnMessage);
                if(returnRMMsg.getRMNamespaceValue()==null){

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 Thu May 31 13:04:00 2007
@@ -140,21 +140,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/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
 Thu May 31 13:04:00 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/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?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
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
 Thu May 31 13:04:00 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/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
 Thu May 31 13:04:00 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) {

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/resources/org/apache/sandesha2/i18n/resource.properties
 Thu May 31 13:04:00 2007
@@ -193,6 +193,7 @@
 addressNotValid=Cannot set the address - the address value is not valid.
 
 elementMustForSpec=Element ''{0}'' must be present for the spec ''{1}''.
+couldNotSendFaultDueToException="Could not send the fault ''{0}'' due to the 
exception " ''{1}'';
 
 #-------------------------------------
 #

Modified: webservices/sandesha/trunk/java/modules/mar/pom.xml
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/mar/pom.xml?view=diff&rev=543241&r1=543240&r2=543241
==============================================================================
--- webservices/sandesha/trunk/java/modules/mar/pom.xml (original)
+++ webservices/sandesha/trunk/java/modules/mar/pom.xml Thu May 31 13:04:00 2007
@@ -60,7 +60,7 @@
                        <plugin>
                        <groupId>org.apache.axis2</groupId>
                        <artifactId>axis2-mar-maven-plugin</artifactId>
-                       <version>SNAPSHOT</version>
+                       <version>${axis2.version}</version>
                        <extensions>true</extensions>
                
                        <configuration>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to