sequenceClosedBean.setName(Sandesha2Constants.SequenceProperties.SEQUENCE_CLOSED);
sequenceClosedBean.setValue(Sandesha2Constants.VALUE_TRUE);
sequencePropMgr.insert(sequenceClosedBean);
RMMsgContext ackRMMsgCtx = AcknowledgementManager.generateAckMessage(rmMsgCtx, sequencePropertyKey, sequenceId, storageManager);
MessageContext ackMsgCtx = ackRMMsgCtx.getMessageContext();
String rmNamespaceValue = rmMsgCtx.getRMNamespaceValue();
ackRMMsgCtx.setRMNamespaceValue(rmNamespaceValue);
SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil
.getSOAPVersion(rmMsgCtx.getSOAPEnvelope()));
// Setting new envelope
SOAPEnvelope envelope = factory.getDefaultEnvelope();
try {
ackMsgCtx.setEnvelope(envelope);
} catch (AxisFault e3) {
throw new SandeshaException(e3.getMessage());
}
// adding the ack part to the envelope.
Iterator sequenceAckIter = ackRMMsgCtx
.getMessageParts(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
MessageContext closeSequenceMsg = rmMsgCtx.getMessageContext();
MessageContext closeSequenceResponseMsg = null;
try {
closeSequenceResponseMsg = Utils.createOutMessageContext(closeSequenceMsg);
} catch (AxisFault e1) {
throw new SandeshaException(e1);
}
RMMsgContext closeSeqResponseRMMsg = RMMsgCreator.createCloseSeqResponseMsg(rmMsgCtx, closeSequenceResponseMsg,
storageManager);
while (sequenceAckIter.hasNext()) {
SequenceAcknowledgement sequenceAcknowledgement = (SequenceAcknowledgement) sequenceAckIter.next();
closeSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT,
sequenceAcknowledgement);
}
closeSeqResponseRMMsg.setFlow(MessageContext.OUT_FLOW);
closeSeqResponseRMMsg.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true");
closeSequenceResponseMsg.setResponseWritten(true);
closeSeqResponseRMMsg.addSOAPEnvelope();
AxisEngine engine = new AxisEngine(closeSequenceMsg.getConfigurationContext());
try {
engine.send(closeSequenceResponseMsg);