X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.activemq%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjms%2FJmsTreeTestResultListener.java;fp=runtime%2Forg.argeo.slc.support.activemq%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjms%2FJmsTreeTestResultListener.java;h=b315c0143ba4dad07d3ce299c12614d6e0705ce9;hb=289c85bbe2b06073b69fb661380ef742328b77dd;hp=0000000000000000000000000000000000000000;hpb=ccf7e46030c87cc1dd797a1c462b8eda6436dd39;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTreeTestResultListener.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTreeTestResultListener.java new file mode 100644 index 000000000..b315c0143 --- /dev/null +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTreeTestResultListener.java @@ -0,0 +1,105 @@ +package org.argeo.slc.jms; + +import javax.jms.Destination; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.SlcException; +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest; +import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest; +import org.argeo.slc.msg.test.tree.ResultPartRequest; +import org.argeo.slc.test.TestResultListener; +import org.argeo.slc.test.TestResultPart; +import org.springframework.jms.core.JmsTemplate; + +public class JmsTreeTestResultListener implements + TestResultListener { + private final Log log = LogFactory.getLog(getClass()); + + private Boolean onlyOnClose = false; + private JmsTemplate jmsTemplate; + + private Destination createDestination; + private Destination addResultPartDestination; + private Destination closeDestination; + + public void resultPartAdded(TreeTestResult testResult, + TestResultPart testResultPart) { + if (onlyOnClose) + return; + + try { + if (testResult.getResultParts().size() == 1 + && testResult.getResultParts().values().iterator().next() + .getParts().size() == 1) { + CreateTreeTestResultRequest req = new CreateTreeTestResultRequest( + testResult); + + if (log.isDebugEnabled()) + log.debug("Send create result request for result " + + testResult.getUuid()); + + jmsTemplate.convertAndSend(createDestination, req); + } else { + ResultPartRequest req = new ResultPartRequest(testResult); + + if (log.isDebugEnabled()) + log.debug("Send result parts for result " + + testResult.getUuid()); + + jmsTemplate.convertAndSend(addResultPartDestination, req); + } + } catch (Exception e) { + throw new SlcException("Could not notify to JMS", e); + } + } + + public void close(TreeTestResult testResult) { + try { + if (onlyOnClose) { + CreateTreeTestResultRequest req = new CreateTreeTestResultRequest( + testResult); + + if (log.isDebugEnabled()) + log.debug("Send create result request for result " + + testResult.getUuid()); + + jmsTemplate.convertAndSend(createDestination, req); + } else { + CloseTreeTestResultRequest req = new CloseTreeTestResultRequest( + testResult); + + if (log.isDebugEnabled()) + log.debug("Send close result request for result " + + testResult.getUuid()); + + jmsTemplate.convertAndSend(closeDestination, req); + + } + } catch (Exception e) { + throw new SlcException("Could not notify to JMS", e); + } + } + + public void setOnlyOnClose(Boolean onlyOnClose) { + this.onlyOnClose = onlyOnClose; + } + + public void setJmsTemplate(JmsTemplate jmsTemplate) { + this.jmsTemplate = jmsTemplate; + } + + public void setCreateDestination(Destination createDestination) { + this.createDestination = createDestination; + } + + public void setAddResultPartDestination(Destination addResultPartDestination) { + this.addResultPartDestination = addResultPartDestination; + } + + public void setCloseDestination(Destination closeDestination) { + this.closeDestination = closeDestination; + } + +}