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