]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTreeTestResultListener.java
Use durable subscribers
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.activemq / src / main / java / org / argeo / slc / jms / JmsTreeTestResultListener.java
1 package org.argeo.slc.jms;
2
3 import javax.jms.Destination;
4
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7 import org.argeo.slc.SlcException;
8 import org.argeo.slc.core.test.tree.TreeTestResult;
9 import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
10 import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
11 import org.argeo.slc.msg.test.tree.ResultPartRequest;
12 import org.argeo.slc.test.TestResultListener;
13 import org.argeo.slc.test.TestResultPart;
14 import org.springframework.jms.core.JmsTemplate;
15
16 public class JmsTreeTestResultListener implements
17 TestResultListener<TreeTestResult> {
18 private final Log log = LogFactory.getLog(getClass());
19
20 private Boolean onlyOnClose = false;
21 private JmsTemplate jmsTemplate;
22
23 private Destination executionEventDestination;
24 // private Destination createDestination;
25 // private Destination addResultPartDestination;
26 // private Destination closeDestination;
27
28 public void resultPartAdded(TreeTestResult testResult,
29 TestResultPart testResultPart) {
30 if (onlyOnClose)
31 return;
32
33 try {
34 if (testResult.getResultParts().size() == 1
35 && testResult.getResultParts().values().iterator().next()
36 .getParts().size() == 1) {
37 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
38 testResult);
39
40 if (log.isDebugEnabled())
41 log.debug("Send create result request for result "
42 + testResult.getUuid());
43
44 jmsTemplate.convertAndSend(executionEventDestination, req);
45 } else {
46 ResultPartRequest req = new ResultPartRequest(testResult);
47
48 if (log.isDebugEnabled())
49 log.debug("Send result parts for result "
50 + testResult.getUuid());
51
52 jmsTemplate.convertAndSend(executionEventDestination, req);
53 }
54 } catch (Exception e) {
55 throw new SlcException("Could not notify to JMS", e);
56 }
57 }
58
59 public void close(TreeTestResult testResult) {
60 try {
61 if (onlyOnClose) {
62 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
63 testResult);
64
65 if (log.isDebugEnabled())
66 log.debug("Send create result request for result "
67 + testResult.getUuid());
68
69 jmsTemplate.convertAndSend(executionEventDestination, req);
70 } else {
71 CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
72 testResult);
73
74 if (log.isDebugEnabled())
75 log.debug("Send close result request for result "
76 + testResult.getUuid());
77
78 jmsTemplate.convertAndSend(executionEventDestination, req);
79
80 }
81 } catch (Exception e) {
82 throw new SlcException("Could not notify to JMS", e);
83 }
84 }
85
86 public void setOnlyOnClose(Boolean onlyOnClose) {
87 this.onlyOnClose = onlyOnClose;
88 }
89
90 public void setJmsTemplate(JmsTemplate jmsTemplate) {
91 this.jmsTemplate = jmsTemplate;
92 }
93
94 public void setExecutionEventDestination(Destination executionEventDestination) {
95 this.executionEventDestination = executionEventDestination;
96 }
97
98
99
100 // public void setCreateDestination(Destination createDestination) {
101 // this.createDestination = createDestination;
102 // }
103 //
104 // public void setAddResultPartDestination(Destination addResultPartDestination) {
105 // this.addResultPartDestination = addResultPartDestination;
106 // }
107 //
108 // public void setCloseDestination(Destination closeDestination) {
109 // this.closeDestination = closeDestination;
110 // }
111
112 }