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 ga...@apache.org on 2007/05/14 18:00:11 UTC

svn commit: r537897 - in /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2: handlers/SandeshaGlobalInHandler.java util/FaultManager.java

Author: gatfora
Date: Mon May 14 09:00:10 2007
New Revision: 537897

URL: http://svn.apache.org/viewvc?view=rev&rev=537897
Log:
Abort processing for RM faults once processed

Modified:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
    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/handlers/SandeshaGlobalInHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?view=diff&rev=537897&r1=537896&r2=537897
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java Mon May 14 09:00:10 2007
@@ -127,23 +127,17 @@
       SandeshaUtil.getSandeshaStorageManager(rmMsgCtx.getConfigurationContext(), 
           rmMsgCtx.getConfigurationContext().getAxisConfiguration());
     
-    Transaction transaction = storageManager.getTransaction();
-    try {    	    
-	    //processing any incoming faults.     
-			//This is responsible for Sandesha2 specific 
-			FaultManager.processMessagesForFaults(rmMsgCtx);
-    }
-		finally {
-			transaction.commit();
-		}
+		//processing any incoming faults.     
+    //This is responsible for Sandesha2 specific 
+    InvocationResponse response = FaultManager.processMessagesForFaults(rmMsgCtx, storageManager);
 
     if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.APPLICATION) {
       processApplicationMessage(rmMsgCtx);
     }
     
 		if (log.isDebugEnabled())
-			log.debug("Exit: SandeshaGlobalInHandler::invoke " + InvocationResponse.CONTINUE);
-		return InvocationResponse.CONTINUE;
+			log.debug("Exit: SandeshaGlobalInHandler::invoke " + response);
+		return response;
 	}
 	
   private static void processApplicationMessage(RMMsgContext rmMsgCtx) throws AxisFault {

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=537897&r1=537896&r2=537897
==============================================================================
--- 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 Mon May 14 09:00:10 2007
@@ -44,6 +44,7 @@
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.engine.Handler.InvocationResponse;
 import org.apache.axis2.util.CallbackReceiver;
 import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.axis2.wsdl.WSDLConstants;
@@ -59,6 +60,7 @@
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
 import org.apache.sandesha2.storage.SandeshaStorageException;
 import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.storage.beanmanagers.RMSBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
 import org.apache.sandesha2.storage.beans.RMDBean;
@@ -516,8 +518,11 @@
 		
 	}
 	
-	private static void manageIncomingFault (AxisFault fault, RMMsgContext rmMsgCtx, SOAPFault faultPart) throws AxisFault {
+	private static InvocationResponse manageIncomingFault (AxisFault fault, RMMsgContext rmMsgCtx, SOAPFault faultPart) throws AxisFault {
 	
+		if (log.isDebugEnabled())
+			log.debug("Enter: FaultManager::manageIncomingFault");
+		InvocationResponse response = InvocationResponse.CONTINUE;
 		if (log.isErrorEnabled())
 			log.error(fault);
 		
@@ -573,23 +578,46 @@
 				Sandesha2Constants.SOAPFaults.Subcodes.SEQUENCE_TERMINATED.equals(soapFaultSubcode) ) {
 			processSequenceUnknownFault(rmMsgCtx, fault, identifier);
 		}
+		
+		// If the operation is an Sandesha In Only operation, or the fault is a recognised fault,
+		// then stop the message from being processed further.
+		// To configure the actions for Sandesha to drop, add them to the module.xml under
+		// Sandesha2InOnly operation.
+		if (isRMFault(soapFaultSubcode))
+			response = InvocationResponse.ABORT;
+		
+		if (log.isDebugEnabled())
+			log.debug("Exit: FaultManager::manageIncomingFault, " + response);
+		return response;
 	}
 	
-	public static void processMessagesForFaults (RMMsgContext rmMsgCtx) throws AxisFault {
+	public static InvocationResponse processMessagesForFaults (RMMsgContext rmMsgCtx, StorageManager storageManager) throws AxisFault {
+		
+		InvocationResponse response = InvocationResponse.CONTINUE;
 		
 		SOAPEnvelope envelope = rmMsgCtx.getSOAPEnvelope();
 		if (envelope==null) 
-			return;
+			return response;
 		
 		SOAPFault faultPart = envelope.getBody().getFault();
 
 		if (faultPart != null) {
-
-			// constructing the fault
-			AxisFault axisFault = getAxisFaultFromFromSOAPFault(faultPart);
-			manageIncomingFault (axisFault, rmMsgCtx, faultPart);
+			Transaction transaction = null;
+			
+			try {
+				transaction = storageManager.getTransaction();
+				// constructing the fault
+				AxisFault axisFault = getAxisFaultFromFromSOAPFault(faultPart);
+				response = manageIncomingFault (axisFault, rmMsgCtx, faultPart);
+
+				if(transaction != null && transaction.isActive()) transaction.commit();
+				transaction = null;
+			} finally {
+				if (transaction != null && transaction.isActive())
+					transaction.rollback();
+			}
 		}
-
+		return response;
 	}
 
 	



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org