package nl.nn.adapterframework.testtool; import nl.nn.adapterframework.core.ISender; import nl.nn.adapterframework.core.ISenderWithParameters; import nl.nn.adapterframework.core.SenderException; import nl.nn.adapterframework.core.TimeOutException; import nl.nn.adapterframework.parameters.ParameterResolutionContext; import nl.nn.adapterframework.util.LogUtil; import org.apache.log4j.Logger; /** * @author Jaco de Groot */ public class SenderThread extends Thread { private static Logger log = LogUtil.getLogger(SenderThread.class); private String name; private ISender sender; private ISenderWithParameters senderWithParameters; private ParameterResolutionContext parameterResolutionContext; private String request; private String response; private SenderException senderException; private TimeOutException timeOutException; private boolean convertExceptionToMessage = false; SenderThread(ISender sender, String request, boolean convertExceptionToMessage) { name = sender.getName(); this.sender = sender; this.request = request; this.convertExceptionToMessage = convertExceptionToMessage; log.debug("Creating SenderThread for ISender '" + name + "'"); log.debug("Request: " + request); } SenderThread(ISenderWithParameters senderWithParameters, String request, ParameterResolutionContext parameterResolutionContext, boolean convertExceptionToMessage) { name = senderWithParameters.getName(); this.senderWithParameters = senderWithParameters; this.parameterResolutionContext = parameterResolutionContext; this.request = request; this.convertExceptionToMessage = convertExceptionToMessage; log.debug("Creating SenderThread for ISenderWithParameters '" + name + "'"); log.debug("Request: " + request); } public void run() { try { if (senderWithParameters == null) { response = sender.sendMessage(TestTool.TESTTOOL_CORRELATIONID, request); } else { response = senderWithParameters.sendMessage(TestTool.TESTTOOL_CORRELATIONID, request, parameterResolutionContext); } } catch(SenderException e) { if (convertExceptionToMessage) { response = Util.throwableToXml(e); } else { log.error("SenderException for ISender '" + name + "'", e); senderException = e; } } catch(TimeOutException e) { if (convertExceptionToMessage) { response = Util.throwableToXml(e); } else { log.error("timeOutException for ISender '" + name + "'", e); timeOutException = e; } } } public String getResponse() { log.debug("Getting response for Sender: " + name); while (this.isAlive()) { try { Thread.sleep(100); } catch(InterruptedException e) { } } return response; } public SenderException getSenderException() { while (this.isAlive()) { try { Thread.sleep(100); } catch(InterruptedException e) { } } return senderException; } public TimeOutException getTimeOutException() { while (this.isAlive()) { try { Thread.sleep(100); } catch(InterruptedException e) { } } return timeOutException; } }