]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionStepsRequestEp.java
Improve auto-detection of Spring beans.
[gpl/argeo-slc.git] / org.argeo.slc.server / src / main / java / org / argeo / slc / ws / process / SlcExecutionStepsRequestEp.java
1 package org.argeo.slc.ws.process;
2
3 import java.util.List;
4
5 import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9
10 import org.argeo.slc.core.SlcException;
11 import org.argeo.slc.core.process.SlcExecution;
12 import org.argeo.slc.core.process.SlcExecutionStep;
13 import org.argeo.slc.dao.process.SlcExecutionDao;
14 import org.argeo.slc.msg.process.SlcExecutionStepsRequest;
15
16 public class SlcExecutionStepsRequestEp extends
17 AbstractMarshallingPayloadEndpoint {
18
19 private Log log = LogFactory.getLog(getClass());
20
21 private final SlcExecutionDao slcExecutionDao;
22
23 public SlcExecutionStepsRequestEp(SlcExecutionDao slcExecutionDao) {
24 this.slcExecutionDao = slcExecutionDao;
25 }
26
27 @Override
28 protected Object invokeInternal(Object requestObject) throws Exception {
29 String uuid = null;
30 try {
31 SlcExecutionStepsRequest msg = (SlcExecutionStepsRequest) requestObject;
32 uuid = msg.getSlcExecutionUuid();
33 SlcExecution slcExecution = slcExecutionDao.getSlcExecution(uuid);
34
35 if (slcExecution == null)
36 throw new SlcException("Could not find slc execution " + uuid);
37
38 List<SlcExecutionStep> additionalSteps = msg.getSteps();
39 if (log.isTraceEnabled()) {
40 log.trace("Trying to add additional steps to slc execution "
41 + uuid + ":");
42 for (SlcExecutionStep step : additionalSteps) {
43 log.trace("Step " + step.getUuid() + " (in slc execution "
44 + uuid + ")");
45 }
46 }
47 slcExecution.getSteps().addAll(additionalSteps);
48
49 log.debug("Adding " + msg.getSteps().size()
50 + " steps to SlcExecution with uuid "
51 + slcExecution.getUuid());
52
53 slcExecutionDao.update(slcExecution);
54 return null;
55 } catch (Exception e) {
56 log.error("Could not update SlcExecution " + uuid
57 + " with additional steps", e);
58 throw e;
59 }
60 }
61
62 }