]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTreeTestResultListener.java
Introduce revision build numbers
[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.attachment.Attachment;
9 import org.argeo.slc.core.attachment.SimpleAttachment;
10 import org.argeo.slc.core.test.tree.TreeTestResult;
11 import org.argeo.slc.core.test.tree.TreeTestResultListener;
12 import org.argeo.slc.msg.test.tree.AddTreeTestResultAttachmentRequest;
13 import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
14 import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
15 import org.argeo.slc.msg.test.tree.ResultPartRequest;
16 import org.argeo.slc.test.TestResultPart;
17 import org.springframework.jms.JmsException;
18 import org.springframework.jms.core.JmsTemplate;
19
20 public class JmsTreeTestResultListener implements TreeTestResultListener {
21 private final Log log = LogFactory.getLog(getClass());
22
23 private Boolean onlyOnClose = false;
24 private JmsTemplate jmsTemplate;
25
26 private Destination executionEventDestination;
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 (JmsException e) {
55 log.warn("Could not notify result part to server: "
56 + e.getMessage());
57 if (log.isTraceEnabled())
58 log.debug("Original error.", e);
59 } catch (Exception e) {
60 throw new SlcException("Could not notify to JMS", e);
61 }
62 }
63
64 public void close(TreeTestResult testResult) {
65 try {
66 if (onlyOnClose) {
67 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
68 testResult);
69
70 if (log.isDebugEnabled())
71 log.debug("Send create result request for result "
72 + testResult.getUuid());
73
74 jmsTemplate.convertAndSend(executionEventDestination, req);
75 } else {
76 CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
77 testResult);
78
79 if (log.isDebugEnabled())
80 log.debug("Send close result request for result "
81 + testResult.getUuid());
82
83 jmsTemplate.convertAndSend(executionEventDestination, req);
84
85 }
86 } catch (JmsException e) {
87 log.warn("Could not notify result close to server: "
88 + e.getMessage());
89 if (log.isTraceEnabled())
90 log.debug("Original error.", e);
91 } catch (Exception e) {
92 throw new SlcException("Could not notify to JMS", e);
93 }
94 }
95
96 public void addAttachment(TreeTestResult testResult, Attachment attachment) {
97 try {
98 AddTreeTestResultAttachmentRequest req = new AddTreeTestResultAttachmentRequest();
99 req.setResultUuid(testResult.getUuid());
100 req.setAttachment((SimpleAttachment) attachment);
101 jmsTemplate.convertAndSend(executionEventDestination, req);
102
103 } catch (JmsException e) {
104 log
105 .warn("Could not notify attachment to server: "
106 + e.getMessage());
107 if (log.isTraceEnabled())
108 log.debug("Original error.", e);
109 } catch (Exception e) {
110 throw new SlcException("Could not notify to JMS", e);
111 }
112
113 }
114
115 public void setOnlyOnClose(Boolean onlyOnClose) {
116 this.onlyOnClose = onlyOnClose;
117 }
118
119 public void setJmsTemplate(JmsTemplate jmsTemplate) {
120 this.jmsTemplate = jmsTemplate;
121 }
122
123 public void setExecutionEventDestination(
124 Destination executionEventDestination) {
125 this.executionEventDestination = executionEventDestination;
126 }
127
128 }