]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsSlcExecutionNotifier.java
Add license headers
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.activemq / src / main / java / org / argeo / slc / jms / JmsSlcExecutionNotifier.java
index 801c6fae32a730fc9204dde886ec931f8e8b9cf5..45db072b9be17450342dca5cc90c000eccc28939 100644 (file)
@@ -1,34 +1,58 @@
+/*
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ *
+ * 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 java.util.List;
 
 import javax.jms.Destination;
 
-import org.argeo.slc.SlcException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.argeo.slc.UnsupportedException;
 import org.argeo.slc.msg.process.SlcExecutionStatusRequest;
+import org.argeo.slc.msg.process.SlcExecutionStepsRequest;
 import org.argeo.slc.process.SlcExecution;
 import org.argeo.slc.process.SlcExecutionNotifier;
 import org.argeo.slc.process.SlcExecutionStep;
+import org.springframework.jms.JmsException;
 import org.springframework.jms.core.JmsTemplate;
 
 public class JmsSlcExecutionNotifier implements SlcExecutionNotifier {
+       private final static Log log = LogFactory
+                       .getLog(JmsSlcExecutionNotifier.class);
 
        private JmsTemplate jmsTemplate;
 
        private Destination executionEventDestination;
-       //private Destination updateStatusDestination;
+
+       // private Destination updateStatusDestination;
 
        public void updateStatus(SlcExecution slcExecution, String oldStatus,
                        String newStatus) {
                SlcExecutionStatusRequest req = new SlcExecutionStatusRequest(
                                slcExecution.getUuid(), newStatus);
-               jmsTemplate.convertAndSend(executionEventDestination, req);
+               convertAndSend(req);
        }
 
        public void addSteps(SlcExecution slcExecution,
                        List<SlcExecutionStep> additionalSteps) {
-               throw new UnsupportedException();
+               SlcExecutionStepsRequest req = new SlcExecutionStepsRequest(
+                               slcExecution.getUuid(), additionalSteps);
+               convertAndSend(req);
        }
 
        public void newExecution(SlcExecution slcExecution) {
@@ -43,14 +67,19 @@ public class JmsSlcExecutionNotifier implements SlcExecutionNotifier {
                this.jmsTemplate = jmsTemplate;
        }
 
-       public void setExecutionEventDestination(Destination executionEventDestination) {
+       public void setExecutionEventDestination(
+                       Destination executionEventDestination) {
                this.executionEventDestination = executionEventDestination;
        }
 
-       
-       
-//     public void setUpdateStatusDestination(Destination updateStatusDestination) {
-//             this.updateStatusDestination = updateStatusDestination;
-//     }
-
+       protected void convertAndSend(Object req) {
+               try {
+                       jmsTemplate.convertAndSend(executionEventDestination, req);
+               } catch (JmsException e) {
+                       log.warn("Send request " + req.getClass() + " to server: "
+                                       + e.getMessage());
+                       if (log.isTraceEnabled())
+                               log.debug("Original error.", e);
+               }
+       }
 }