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;h=dc545c5eb0a3abf3083bbc62d89386bb86445823;hb=ffe7754e421f8ad5d3a336f54a498f67c6d72839;hp=b315c0143ba4dad07d3ce299c12614d6e0705ce9;hpb=289c85bbe2b06073b69fb661380ef742328b77dd;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 index b315c0143..dc545c5eb 100644 --- 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 @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.slc.jms; import javax.jms.Destination; @@ -5,24 +21,26 @@ 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.attachment.Attachment; +import org.argeo.slc.core.attachment.SimpleAttachment; import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.core.test.tree.TreeTestResultListener; +import org.argeo.slc.msg.test.tree.AddTreeTestResultAttachmentRequest; 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.JmsException; import org.springframework.jms.core.JmsTemplate; -public class JmsTreeTestResultListener implements - TestResultListener { +/** JMS based tree test result listener implementation. */ +public class JmsTreeTestResultListener implements TreeTestResultListener { private final Log log = LogFactory.getLog(getClass()); private Boolean onlyOnClose = false; private JmsTemplate jmsTemplate; - private Destination createDestination; - private Destination addResultPartDestination; - private Destination closeDestination; + private Destination executionEventDestination; public void resultPartAdded(TreeTestResult testResult, TestResultPart testResultPart) { @@ -40,7 +58,7 @@ public class JmsTreeTestResultListener implements log.debug("Send create result request for result " + testResult.getUuid()); - jmsTemplate.convertAndSend(createDestination, req); + jmsTemplate.convertAndSend(executionEventDestination, req); } else { ResultPartRequest req = new ResultPartRequest(testResult); @@ -48,8 +66,13 @@ public class JmsTreeTestResultListener implements log.debug("Send result parts for result " + testResult.getUuid()); - jmsTemplate.convertAndSend(addResultPartDestination, req); + jmsTemplate.convertAndSend(executionEventDestination, req); } + } catch (JmsException e) { + log.warn("Could not notify result part to server: " + + e.getMessage()); + if (log.isTraceEnabled()) + log.debug("Original error.", e); } catch (Exception e) { throw new SlcException("Could not notify to JMS", e); } @@ -65,7 +88,7 @@ public class JmsTreeTestResultListener implements log.debug("Send create result request for result " + testResult.getUuid()); - jmsTemplate.convertAndSend(createDestination, req); + jmsTemplate.convertAndSend(executionEventDestination, req); } else { CloseTreeTestResultRequest req = new CloseTreeTestResultRequest( testResult); @@ -74,14 +97,39 @@ public class JmsTreeTestResultListener implements log.debug("Send close result request for result " + testResult.getUuid()); - jmsTemplate.convertAndSend(closeDestination, req); + jmsTemplate.convertAndSend(executionEventDestination, req); } + } catch (JmsException e) { + log.warn("Could not notify result close to server: " + + e.getMessage()); + if (log.isTraceEnabled()) + log.debug("Original error.", e); + } catch (Exception e) { + throw new SlcException("Could not notify to JMS", e); + } + } + + public void addAttachment(TreeTestResult testResult, Attachment attachment) { + try { + AddTreeTestResultAttachmentRequest req = new AddTreeTestResultAttachmentRequest(); + req.setResultUuid(testResult.getUuid()); + req.setAttachment((SimpleAttachment) attachment); + jmsTemplate.convertAndSend(executionEventDestination, req); + + } catch (JmsException e) { + log + .warn("Could not notify attachment to server: " + + e.getMessage()); + if (log.isTraceEnabled()) + log.debug("Original error.", e); } catch (Exception e) { throw new SlcException("Could not notify to JMS", e); } + } + /** Publishes the test result only when it gets closed. */ public void setOnlyOnClose(Boolean onlyOnClose) { this.onlyOnClose = onlyOnClose; } @@ -90,16 +138,9 @@ public class JmsTreeTestResultListener implements 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; + public void setExecutionEventDestination( + Destination executionEventDestination) { + this.executionEventDestination = executionEventDestination; } }