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 ch...@apache.org on 2006/09/12 12:32:01 UTC

svn commit: r442552 - in /webservices/sandesha/trunk/java/src/org/apache/sandesha2: ./ handlers/ msgprocessors/ util/ workers/

Author: chamikara
Date: Tue Sep 12 03:31:59 2006
New Revision: 442552

URL: http://svn.apache.org/viewvc?view=rev&rev=442552
Log:
Added a method 'getPropertyKey' to SandeshaUtil which will extract the correct property key from
a message context. 
Used this in Sandesha Handlers.
ApplicationMessage processor was modified to set some entries in message context, to be used by other handlers
or service impl.


Modified:
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java Tue Sep 12 03:31:59 2006
@@ -530,4 +530,10 @@
 			SPEC_2005_02.NS_URI,
 			SPEC_2006_08.NS_URI
 	};
+	
+	public interface MessageContextProperties{
+		public String INTERNAL_SEQUENCE_ID = "Sandesha2InternalSequenceId";
+		String SEQUENCE_ID = "WSRMSequenceId";
+		String MESSAGE_NUMBER = "WSRMMessageNumber";
+	}
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java Tue Sep 12 03:31:59 2006
@@ -234,15 +234,13 @@
 			Sequence sequence = (Sequence) rmMsgContext.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
 			String sequenceId = null;
 
-			if (sequence != null) {
-				sequenceId = sequence.getIdentifier().getIdentifier();
-			}
-
 			long msgNo = sequence.getMessageNumber().getMessageNumber();
+			
+			String propertyKey = SandeshaUtil.getPropertyKey(rmMsgContext);
 
-			if (sequenceId != null && msgNo > 0) {
+			if (propertyKey != null && msgNo > 0) {
 				SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropertyBeanMgr();
-				SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(sequenceId,
+				SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(propertyKey,
 						Sandesha2Constants.SequenceProperties.SERVER_COMPLETED_MESSAGES);
 				if (receivedMsgsBean != null) {
 					String receivedMsgStr = receivedMsgsBean.getValue();

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java Tue Sep 12 03:31:59 2006
@@ -37,6 +37,7 @@
 import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.util.MsgInitializer;
 import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.wsrm.Sequence;
 
 /**
  * This is invoked in the inFlow of an RM endpoint. This is responsible for
@@ -108,7 +109,6 @@
 			RMMsgContext rmMsgCtx = null;
 			try {
 				rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
-				
 			} catch (SandeshaException ex) {
 				String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotInnitMessage);
 				log.debug(message);

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Tue Sep 12 03:31:59 2006
@@ -289,6 +289,11 @@
 		boolean inOrderInvocation = SandeshaUtil.getPropertyBean(
 				msgCtx.getConfigurationContext().getAxisConfiguration()).isInOrder();
 
+
+		//setting properties for the messageContext
+		rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID,sequenceId);
+		rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.MESSAGE_NUMBER,new Long (msgNo));
+		
 		if (inOrderInvocation) {
 
 			SequencePropertyBean incomingSequenceListBean = (SequencePropertyBean) seqPropMgr.retrieve(
@@ -495,6 +500,11 @@
 			if (lastAppMessage != null && "true".equals(lastAppMessage))
 				lastMessage = true;
 		}
+		
+		if (internalSequenceId!=null)
+			rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,internalSequenceId);
+
+		String propertyKey = SandeshaUtil.getPropertyKey(rmMsgCtx);
 
 		/*
 		 * checking weather the user has given the messageNumber (most of the

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java Tue Sep 12 03:31:59 2006
@@ -391,4 +391,8 @@
 
 		return false;
 	}
+	
+	public static void addFinalAcknowledgement () {
+		
+	}
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java Tue Sep 12 03:31:59 2006
@@ -243,17 +243,11 @@
 		}
 		} else
 			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.UNKNOWN);
+		
+		if (sequenceID!=null)
+			rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID,sequenceID);
 
-		String propertyKey = null;
-		if (rmMsgCtx.getMessageContext().getFLOW() == MessageContext.IN_FLOW) {
-			propertyKey = sequenceID;
-		} else {
-			SequencePropertyBean internalSequenceIDBean = sequencePropertyBeanMgr.retrieve(sequenceID,
-					Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
-			if (internalSequenceIDBean != null) {
-				propertyKey = internalSequenceIDBean.getValue();
-			}
-		}
+		String propertyKey = SandeshaUtil.getPropertyKey(rmMsgCtx);
 
 		//In case of ack messages RM Namespace is decided based on the sequenceId of the first 
 		//sequence Ack. In other words Sandesha2 does not expect to receive two SequenceAcknowledgements

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java Tue Sep 12 03:31:59 2006
@@ -672,10 +672,14 @@
 		applicationMsg.setMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT, sequenceAck);
 
 		sequenceAck.toOMElement(envelope.getHeader());
-		applicationMsg.setAction(SpecSpecificConstants.getSequenceAcknowledgementAction(SandeshaUtil.getRMVersion(
-				sequenceId, storageManager)));
-		applicationMsg.setSOAPAction(SpecSpecificConstants.getSequenceAcknowledgementSOAPAction(SandeshaUtil
-				.getRMVersion(sequenceId, storageManager)));
+		
+		if (applicationMsg.getWSAAction()==null) {
+			applicationMsg.setAction(SpecSpecificConstants.getSequenceAcknowledgementAction(SandeshaUtil.getRMVersion(
+					sequenceId, storageManager)));
+			applicationMsg.setSOAPAction(SpecSpecificConstants.getSequenceAcknowledgementSOAPAction(SandeshaUtil
+					.getRMVersion(sequenceId, storageManager)));
+		}
+		
 		applicationMsg.setMessageId(SandeshaUtil.getUUID());
 	}
 

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java Tue Sep 12 03:31:59 2006
@@ -952,4 +952,48 @@
 			throw new SandeshaException(message,e);
 		}
 	}
+	
+	/**This returns the Key used when store SequencePropertyBeans for the passed message.
+	 * For the sending side this will be the internal sequence ID.
+	 * For the receiving side this is the sequenceId.
+	 * 
+	 * @param rmMsgContext
+	 * @return
+	 */
+	
+	public static String getPropertyKey (RMMsgContext rmMsgContext) {
+		String sequenceId = (String) rmMsgContext.getProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID);
+		String internalSequenceId = (String) rmMsgContext.getProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID);
+		
+		String propertyKey = null;
+
+		int type = rmMsgContext.getMessageType();
+		int flow = rmMsgContext.getMessageContext().getFLOW();
+		
+		if (flow==MessageContext.OUT_FLOW) {
+			if (type==Sandesha2Constants.MessageTypes.UNKNOWN)
+				propertyKey = internalSequenceId;
+		} else if (flow==MessageContext.IN_FLOW) {
+			if (isSequenceResponseMessageType(type))
+				propertyKey = internalSequenceId;
+			else
+				propertyKey = sequenceId;
+		}
+		
+		//TODO handler faults
+		
+		return propertyKey;
+	}
+	
+	private static boolean isSequenceResponseMessageType (int messageType) {
+		if (messageType==Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE ||
+			messageType==Sandesha2Constants.MessageTypes.ACK ||
+			messageType==Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE_RESPONSE ||
+			messageType==Sandesha2Constants.MessageTypes.TERMINATE_SEQ_RESPONSE) {
+			
+			return true;
+		} else {
+			return false;
+		}
+	}
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=442552&r1=442551&r2=442552
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java Tue Sep 12 03:31:59 2006
@@ -29,6 +29,7 @@
 import org.apache.sandesha2.util.AcknowledgementManager;
 import org.apache.sandesha2.util.MessageRetransmissionAdjuster;
 import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.RMMsgCreator;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.util.TerminateManager;
 import org.apache.sandesha2.wsrm.TerminateSequence;
@@ -103,8 +104,11 @@
 //				String sequenceID = sequence.getIdentifier().getIdentifier();
 //			}
 
-			// checking weather this message can carry piggybacked acks
-			if (isAckPiggybackableMsgType(messageType)) {
+//			if (AcknowledgementManager.ackRequired (rmMsgCtx)) {
+//				RMMsgCreator.addAckMessage(rmMsgCtx);
+			
+			//} else 
+				if (isAckPiggybackableMsgType(messageType)) { // checking weather this message can carry piggybacked acks
 				// piggybacking if an ack if available for the same
 				// sequence.
 				// TODO do piggybacking based on wsa:To



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