RMMessageContext rmMessageContext = new RMMessageContext();
rmMessageContext.setMsgContext(msgContext);
try {
MessageValidator.validate(rmMessageContext, client);
} catch (AxisFault af) {
FaultProcessor faultProcessor = new FaultProcessor(storageManager, af);
if (!faultProcessor.sendFault(rmMessageContext)) {
msgContext.setPastPivot(true);
msgContext.setResponseMessage(null);
return;
}
return;
}
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
AddressingHeaders addrHeaders = rmMessageContext.getAddressingHeaders();
if (null != rmHeaders.getSequence()) {
rmMessageContext.setSequenceID(rmHeaders.getSequence().getIdentifier().toString());
if (null != rmHeaders.getSequence().getLastMessage()) {
rmMessageContext.setLastMessage(true);
}
}
if (addrHeaders.getMessageID() == null) {
rmMessageContext.setMessageID((new Long(System.currentTimeMillis())).toString());
} else {
rmMessageContext.setMessageID(addrHeaders.getMessageID().toString());
}
IRMMessageProcessor rmMessageProcessor = RMMessageProcessorIdentifier.getMessageProcessor(rmMessageContext, storageManager);
if (callback != null) {
CallbackData cbData = getCallbackData(rmMessageContext);
callback.onIncomingMessage(cbData);
}
try {
if (!rmMessageProcessor.processMessage(rmMessageContext)) {
msgContext.setPastPivot(true);
msgContext.setResponseMessage(null);
} else {
msgContext.setPastPivot(true);
}
} catch (AxisFault af) {
RMProvider.log.error(af);
FaultProcessor faultProcessor = new FaultProcessor(storageManager, af);
if (!faultProcessor.sendFault(rmMessageContext)) {
msgContext.setPastPivot(true);
msgContext.setResponseMessage(null);
return;
}
return;