X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.server%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fws%2Fprocess%2FSlcExecutionRequestEp.java;h=3c41d9afd5e7d706885a3328a80ccbfd98fec96e;hb=37a53e4b259d7455b3406ecb8ddc868cfc86f920;hp=5978fc457c4b6752d55a8150d4d87e86e77db582;hpb=797bda18ebe1f895782d72df6b1cdcb3af0eb34b;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java index 5978fc457..3c41d9afd 100644 --- a/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java @@ -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; } }