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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]