}
public AnswerResult fetchAnswer(QName service, String operation, Element outgoingMessage, Date currentEventDateTime) {
__log.debug("fetching answer for " + service + " " + operation);
ServiceConfig cfg = getServiceConfig(service);
if (cfg.getReplayType().isSetMock()) {
String key = getAnswersKey(service, operation);
AnswersForKey v = answersMap.get(key);
Exchange e = v == null ? null : v.answerPos < v.answers.size() ? v.answers.get(v.answerPos) : null;
if (e == null) {
throw new IllegalStateException("answer for " + service + " " + operation + " at time " + currentEventDateTime + " not found, outgoing message was " + DOMUtils.domToString(outgoingMessage));
}
v.answerPos++;
__log.debug("fetched " + e);
return new AnswerResult(false, e);
} else if (cfg.getReplayType().isSetMockQuery()) {
return new AnswerResult(false, fetchMockQuery(service, operation, outgoingMessage, cfg));
} else if (cfg.getReplayType().isSetLive()) {
return new AnswerResult(true, null);
} else assert(false);
return null;
}