You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by mc...@apache.org on 2007/05/30 10:12:17 UTC

svn commit: r542773 - /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java

Author: mckierna
Date: Wed May 30 01:12:15 2007
New Revision: 542773

URL: http://svn.apache.org/viewvc?view=rev&rev=542773
Log:
Ensure that polled msgs have RMS beans

Modified:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java

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=542773&r1=542772&r2=542773
==============================================================================
--- 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 Wed May 30 01:12:15 2007
@@ -150,7 +150,7 @@
 		}
 		
 		if(pending) addMessagePendingHeader(returnMessage, namespace);
-		
+		boolean continueSending = true;
 		RMMsgContext returnRMMsg = MsgInitializer.initializeMessage(returnMessage);
 		if(returnRMMsg.getRMNamespaceValue()==null){
 			//this is the case when a stored application response msg was not sucecsfully returned 
@@ -165,43 +165,52 @@
 				if(rmsBean!=null){
 					returnRMMsg.setRMNamespaceValue(SpecSpecificConstants.getRMNamespaceValue(rmsBean.getRMVersion()));
 				}
+				else{
+					//we will never be able to reply to this msg - at the moment the best bet is 
+					//to not process the reply anymore
+					if(log.isDebugEnabled()) log.debug("Could not find RMS bean for polled msg");
+					continueSending = false;
+					//also remove the sender bean so that we do not select this again
+					storageManager.getSenderBeanMgr().delete(matchingMessage.getMessageID());
+				}
 			}
 		}
-		setTransportProperties (returnMessage, pollMessage);
-		
-		// Link the response to the request
+		if(continueSending){
+			setTransportProperties (returnMessage, pollMessage);
+			
+			// Link the response to the request
 
-		AxisOperation operation = SpecSpecificConstants.getWSRMOperation(Sandesha2Constants.MessageTypes.POLL_RESPONSE_MESSAGE, pollMessage.getRMSpecVersion(), pollMessage.getMessageContext().getAxisService());
-		OperationContext context = new OperationContext (operation, pollMessage.getMessageContext().getServiceContext());
-		
-		if(context == null) {
-			AxisOperation oldOperation = returnMessage.getAxisOperation();
+			AxisOperation operation = SpecSpecificConstants.getWSRMOperation(Sandesha2Constants.MessageTypes.POLL_RESPONSE_MESSAGE, pollMessage.getRMSpecVersion(), pollMessage.getMessageContext().getAxisService());
+			OperationContext context = new OperationContext (operation, pollMessage.getMessageContext().getServiceContext());
+			
+			if(context == null) {
+				AxisOperation oldOperation = returnMessage.getAxisOperation();
 
-			context = ContextFactory.createOperationContext(oldOperation, returnMessage.getServiceContext()); //new OperationContext(oldOperation);
+				context = ContextFactory.createOperationContext(oldOperation, returnMessage.getServiceContext()); //new OperationContext(oldOperation);
 
-			context.addMessageContext(pollMessage.getMessageContext());
-			pollMessage.getMessageContext().setOperationContext(context);
+				context.addMessageContext(pollMessage.getMessageContext());
+				pollMessage.getMessageContext().setOperationContext(context);
+			}
+			context.addMessageContext(returnMessage);
+			returnMessage.setOperationContext(context);
+			
+			returnMessage.setProperty(Sandesha2Constants.MAKE_CONNECTION_RESPONSE, Boolean.TRUE);
+			returnMessage.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, pollMessage.getProperty(RequestResponseTransport.TRANSPORT_CONTROL));
+			
+			//marking pollMessage as responsed
+			pollMessage.getMessageContext().getOperationContext().setProperty (Constants.RESPONSE_WRITTEN,Constants.VALUE_TRUE);
+			
+			// Commit the current transaction, so that the SenderWorker can do it's own locking
+			if(transaction != null && transaction.isActive()) transaction.commit();
+			
+			//running the MakeConnection through a SenderWorker.
+			//This will allow Sandesha2 to consider both of following senarios equally.
+			//  1. A message being sent by the Sender thread.
+			//  2. A message being sent as a reply to an MakeConnection.
+			SenderWorker worker = new SenderWorker (pollMessage.getConfigurationContext(), matchingMessage, pollMessage.getRMSpecVersion());
+			worker.setMessage(returnRMMsg);
+			worker.run();			
 		}
-		context.addMessageContext(returnMessage);
-		returnMessage.setOperationContext(context);
-		
-		returnMessage.setProperty(Sandesha2Constants.MAKE_CONNECTION_RESPONSE, Boolean.TRUE);
-		returnMessage.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, pollMessage.getProperty(RequestResponseTransport.TRANSPORT_CONTROL));
-		
-		//marking pollMessage as responsed
-		pollMessage.getMessageContext().getOperationContext().setProperty (Constants.RESPONSE_WRITTEN,Constants.VALUE_TRUE);
-		
-		// Commit the current transaction, so that the SenderWorker can do it's own locking
-		if(transaction != null && transaction.isActive()) transaction.commit();
-		
-		//running the MakeConnection through a SenderWorker.
-		//This will allow Sandesha2 to consider both of following senarios equally.
-		//  1. A message being sent by the Sender thread.
-		//  2. A message being sent as a reply to an MakeConnection.
-		SenderWorker worker = new SenderWorker (pollMessage.getConfigurationContext(), matchingMessage, pollMessage.getRMSpecVersion());
-		worker.setMessage(returnRMMsg);
-		worker.run();
-
 		
 		if(log.isDebugEnabled()) log.debug("Exit: MakeConnectionProcessor::replyToPoll");
 	}



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