StorageManager storageManager = SandeshaUtil
.getSandeshaStorageManager(rmMsgContext
.getMessageContext().getConfigurationContext());
SequencePropertyBeanMgr seqPropMgr = storageManager
.getSequencePropretyBeanMgr();
SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(
sequenceId,
Sandesha2Constants.SequenceProperties.RECEIVED_MESSAGES);
if (receivedMsgsBean != null) {
String receivedMsgStr = (String) receivedMsgsBean
.getValue();
ArrayList msgNoArrList = SandeshaUtil
.getSplittedMsgNoArraylist(receivedMsgStr);
Iterator iterator = msgNoArrList.iterator();
while (iterator.hasNext()) {
String temp = (String) iterator.next();
String msgNoStr = new Long(msgNo).toString();
if (msgNoStr.equals(temp)) {
drop = true;
}
}
}
if (drop == false) {
//Checking for RM specific EMPTY_BODY LASTMESSAGE.
SOAPBody body = rmMsgContext.getSOAPEnvelope().getBody();
boolean emptyBody = false;
if (body.getChildElements().hasNext() == false) {
emptyBody = true;
}
if (emptyBody) {
boolean lastMessage = false;
if (sequence.getLastMessage() != null) {
System.out
.println("Empty Body Last Message Received");
drop = true;
if (receivedMsgsBean == null) {
receivedMsgsBean = new SequencePropertyBean(
sequenceId,
Sandesha2Constants.SequenceProperties.RECEIVED_MESSAGES,
"");
seqPropMgr.insert(receivedMsgsBean);
}
String receivedMsgStr = (String) receivedMsgsBean
.getValue();
if (receivedMsgStr != "" && receivedMsgStr != null)
receivedMsgStr = receivedMsgStr + ","
+ Long.toString(msgNo);
else
receivedMsgStr = Long.toString(msgNo);
receivedMsgsBean.setValue(receivedMsgStr);
seqPropMgr.update(receivedMsgsBean);
ApplicationMsgProcessor ackProcessor = new ApplicationMsgProcessor();
ackProcessor.sendAckIfNeeded(rmMsgContext,
receivedMsgStr);