public class RMMessageCreator {
private static final UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
public static synchronized RMMessageContext createCreateSeqMsg(RMMessageContext rmMsgCtx, byte endPoint,
String msgID, String offer) throws Exception {
RMMessageContext createSeqRMMsgContext = new RMMessageContext();
rmMsgCtx.copyContents(createSeqRMMsgContext);
RMHeaders rmHeaders = new RMHeaders();
CreateSequence createSeq = new CreateSequence();
AcksTo acksTo = getAcksTo(rmMsgCtx, endPoint);
createSeq.setAcksTo(acksTo);
if (offer != null) {
SequenceOffer seqOffer = new SequenceOffer();
Identifier id = new Identifier();
id.setIdentifier(offer);
seqOffer.setIdentifier(id);
createSeq.setOffer(seqOffer);
}
rmHeaders.setCreateSequence(createSeq);
createSeqRMMsgContext.setRMHeaders(rmHeaders);
AddressingHeaders csAddrHeaders = getAddressingHeaedersForCreateSequenceRequest(rmMsgCtx,
endPoint, msgID);
csAddrHeaders.setAction(new Action(new URI(Constants.WSRM.ACTION_CREATE_SEQUENCE)));
createSeqRMMsgContext.setAddressingHeaders(csAddrHeaders);
createSeqRMMsgContext.setMessageID(msgID);
createSeqRMMsgContext.addToMsgIdList(msgID);
createSeqRMMsgContext.setSync(rmMsgCtx.getSync());
createSeqRMMsgContext.setMessageType(Constants.MSG_TYPE_CREATE_SEQUENCE_REQUEST);
String toAddress = rmMsgCtx.getOutGoingAddress();
createSeqRMMsgContext.setOutGoingAddress(toAddress);
MessageContext msgContext = rmMsgCtx.getMsgContext();
MessageContext createSeqMsgContext = new MessageContext(msgContext.getAxisEngine());
RMMessageContext.copyMessageContext(msgContext, createSeqMsgContext);
createSeqRMMsgContext.setMsgContext(createSeqMsgContext);
return createSeqRMMsgContext;
}