protected AbstractMessage waitForProcessingGetReply(AbstractMessage incomingMessage) throws InterruptedException { // waits for message to be processed synchronized (incomingMessage) { while (!incomingMessage.isProcessed()) { logger.debug("waiting on: " + incomingMessage); incomingMessage.wait(); } } if (logger.isDebugEnabled()) { logger.debug("done waiting on: " + incomingMessage); } AbstractMessage replyMessage = incomingMessage.getReplyMessage(); if (logger.isDebugEnabled()) { if (replyMessage == null) { logger.debug("will reply NULL to " + incomingMessage); } else { logger.debug("will reply: " + replyMessage + " to " + incomingMessage); } } return replyMessage; }