]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java
Improve web services
[gpl/argeo-slc.git] / org.argeo.slc.server / src / main / java / org / argeo / slc / ws / process / SlcExecutionRequestEp.java
index 5978fc457c4b6752d55a8150d4d87e86e77db582..3c41d9afd5e7d706885a3328a80ccbfd98fec96e 100644 (file)
@@ -2,9 +2,13 @@ package org.argeo.slc.ws.process;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+
+import org.argeo.slc.core.SlcException;
 import org.argeo.slc.core.process.SlcExecution;
 import org.argeo.slc.dao.process.SlcExecutionDao;
 import org.argeo.slc.msg.process.SlcExecutionRequest;
+import org.argeo.slc.msg.process.SlcExecutionStatusRequest;
+
 import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint;
 
 public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint {
@@ -19,23 +23,41 @@ public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint {
 
        @Override
        protected Object invokeInternal(Object requestObject) throws Exception {
-               SlcExecutionRequest msg = (SlcExecutionRequest) requestObject;
-               SlcExecution slcExecution = msg.getSlcExecution();
-
-               if (slcExecutionDao.getSlcExecution(slcExecution.getUuid()) == null) {
-                       slcExecutionDao.create(slcExecution);
-
-                       if (log.isDebugEnabled())
-                               log.debug("Created SlcExecution with uuid "
-                                               + slcExecution.getUuid());
-               } else {
+               if (requestObject instanceof SlcExecutionRequest) {
+
+                       SlcExecutionRequest msg = (SlcExecutionRequest) requestObject;
+                       SlcExecution slcExecution = msg.getSlcExecution();
+
+                       if (slcExecutionDao.getSlcExecution(slcExecution.getUuid()) == null) {
+                               if (log.isDebugEnabled())
+                                       log.debug("Creating SLC execution #"
+                                                       + slcExecution.getUuid());
+
+                               slcExecutionDao.create(slcExecution);
+                       } else {
+                               if (log.isDebugEnabled())
+                                       log.debug("Updating SLC execution #"
+                                                       + slcExecution.getUuid());
+
+                               slcExecutionDao.update(slcExecution);
+                       }
+                       return null;
+
+               } else if (requestObject instanceof SlcExecutionStatusRequest) {
+                       SlcExecutionStatusRequest msg = (SlcExecutionStatusRequest) requestObject;
+                       SlcExecution slcExecution = slcExecutionDao.getSlcExecution(msg
+                                       .getSlcExecutionUuid());
+                       if (slcExecution == null)
+                               throw new SlcException("Could not find SLC execution #"
+                                               + msg.getSlcExecutionUuid());
+
+                       slcExecution.setStatus(msg.getNewStatus());
                        slcExecutionDao.update(slcExecution);
-
-                       if (log.isDebugEnabled())
-                               log.debug("Updated SlcExecution with uuid "
-                                               + slcExecution.getUuid());
+                       return null;
+               } else {
+                       throw new SlcException("Unrecognized request format: "
+                                       + requestObject.getClass());
                }
-               return null;
        }
 
 }