+/*
+ * 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.execution.ExecutionProcess;
+import org.argeo.slc.execution.ExecutionStep;
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;
+@SuppressWarnings("deprecation")
public class JmsSlcExecutionNotifier implements SlcExecutionNotifier {
+ private final static Log log = LogFactory
+ .getLog(JmsSlcExecutionNotifier.class);
private JmsTemplate jmsTemplate;
- private Destination updateStatusDestination;
+ private Destination executionEventDestination;
+
+ // private Destination updateStatusDestination;
- public void updateStatus(SlcExecution slcExecution, String oldStatus,
+ public void updateStatus(ExecutionProcess slcExecution, String oldStatus,
String newStatus) {
SlcExecutionStatusRequest req = new SlcExecutionStatusRequest(
slcExecution.getUuid(), newStatus);
- jmsTemplate.convertAndSend(updateStatusDestination, req);
+ convertAndSend(req);
}
- public void addSteps(SlcExecution slcExecution,
- List<SlcExecutionStep> additionalSteps) {
- throw new UnsupportedException();
+ public void addSteps(ExecutionProcess slcExecution,
+ List<ExecutionStep> additionalSteps) {
+ SlcExecutionStepsRequest req = new SlcExecutionStepsRequest(
+ slcExecution.getUuid(), additionalSteps);
+ convertAndSend(req);
}
public void newExecution(SlcExecution slcExecution) {
this.jmsTemplate = jmsTemplate;
}
- public void setUpdateStatusDestination(Destination updateStatusDestination) {
- this.updateStatusDestination = updateStatusDestination;
+ public void setExecutionEventDestination(
+ Destination executionEventDestination) {
+ this.executionEventDestination = executionEventDestination;
}
+ 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);
+ }
+ }
}