X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.server%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fws%2Fprocess%2FSlcExecutionRequestEp.java;h=e9e63da0fc4b16493e047f8ef5cad3dd63c0827e;hb=bf3678f8b4d6dbd9965a27632fe6bb39db689c9a;hp=477e59678453a70be8009f4f364192b5478fafd1;hpb=fb6a76920a3e403ae0a1b6b764d65ae12bf8f757;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 477e59678..e9e63da0f 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,22 +2,67 @@ 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 { +public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint { private Log log = LogFactory.getLog(getClass()); + private final SlcExecutionDao slcExecutionDao; + + public SlcExecutionRequestEp(SlcExecutionDao slcExecutionDao) { + this.slcExecutionDao = slcExecutionDao; + } + @Override protected Object invokeInternal(Object requestObject) throws Exception { - SlcExecutionRequest msg = (SlcExecutionRequest) requestObject; - SlcExecution slcExecution = msg.getSlcExecution(); - log.info("Received save or update request fro SlcExecution " - + slcExecution.getUuid()); - return null; - } + if (requestObject instanceof SlcExecutionRequest) { + + SlcExecutionRequest msg = (SlcExecutionRequest) requestObject; + SlcExecution slcExecutionMsg = msg.getSlcExecution(); + SlcExecution slcExecutionPersisted = slcExecutionDao.getSlcExecution(slcExecutionMsg.getUuid()); + if (slcExecutionPersisted == null) { + if (log.isTraceEnabled()) + log.trace("Creating SLC execution #" + + slcExecutionMsg.getUuid()); + + slcExecutionDao.create(slcExecutionMsg); + } else { + if (log.isTraceEnabled()) + log.trace("Updating SLC execution #" + + slcExecutionMsg.getUuid()); + + slcExecutionDao.merge(slcExecutionMsg); + } + 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()); + + if (log.isTraceEnabled()) + log.trace("Updating status for SLC execution #" + + slcExecution.getUuid()); + + slcExecutionDao.update(slcExecution); + return null; + } else { + throw new SlcException("Unrecognized request format: " + + requestObject.getClass()); + } + } }