* @see Handler
*/
public void receive(MessageContext msgContext) throws AxisFault {
ConfigurationContext sysCtx = msgContext.getSystemContext();
OperationDescription operationDescription = null;
ArrayList preCalculatedPhases =
sysCtx
.getAxisConfiguration()
.getInPhasesUptoAndIncludingPostDispatch();
ArrayList operationSpecificPhases = null;
if (msgContext.isPaused()) {
// the message has paused, so rerun them from the position they stoped. The Handler
//who paused the Message will be the first one to run
//resume fixed, global precalulated phases
resumeInvocationPhases(preCalculatedPhases, msgContext);
verifyContextBuilt(msgContext);
//resume operation specific phases
OperationContext operationContext =
msgContext.getOperationContext();
operationDescription = operationContext.getAxisOperation();
operationSpecificPhases =
operationDescription.getRemainingPhasesInFlow();
resumeInvocationPhases(operationSpecificPhases, msgContext);
} else {
invokePhases(preCalculatedPhases, msgContext);
verifyContextBuilt(msgContext);
OperationContext operationContext =
msgContext.getOperationContext();
operationDescription = operationContext.getAxisOperation();
operationSpecificPhases =
operationDescription.getRemainingPhasesInFlow();
invokePhases(operationSpecificPhases, msgContext);
}
if (msgContext.isServerSide() && !msgContext.isPaused()) {
// invoke the Message Receivers
MessageReceiver receiver =
operationDescription.getMessageReceiver();
receiver.receive(msgContext);
}
}