X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.server%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fweb%2Fmvc%2Fprocess%2FNewSlcExecutionController.java;h=2e19764e6bb1f38f9c5410c697f19f95fd89e8c2;hb=d8ae26046184c02fab744ca2ff63c357c5845a80;hp=c551005bc2e93d7b5643a54692c770c3df97c9e9;hpb=8554a8b6d52be4cefc87de1447d9f804011dee80;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java index c551005bc..2e19764e6 100644 --- a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java @@ -1,34 +1,66 @@ package org.argeo.slc.web.mvc.process; +import java.io.BufferedReader; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.xml.transform.stream.StreamSource; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.slc.msg.MsgConstants; import org.argeo.slc.process.SlcExecution; import org.argeo.slc.runtime.SlcAgent; import org.argeo.slc.runtime.SlcAgentFactory; +import org.argeo.slc.services.process.SlcExecutionService; import org.argeo.slc.web.mvc.AbstractServiceController; import org.springframework.oxm.Unmarshaller; import org.springframework.web.servlet.ModelAndView; +import org.springframework.xml.transform.StringSource; /** Send a new SlcExecution. */ public class NewSlcExecutionController extends AbstractServiceController { + private final static Log log = LogFactory + .getLog(NewSlcExecutionController.class); + private SlcAgentFactory agentFactory; private Unmarshaller unmarshaller; + private SlcExecutionService slcExecutionService; @Override protected void handleServiceRequest(HttpServletRequest request, HttpServletResponse response, ModelAndView modelAndView) throws Exception { + if (log.isTraceEnabled()) { + log.debug("Content-Type: " + request.getContentType()); + log.debug("Content-Length: " + request.getContentLength()); + } + String agentId = request .getParameter(MsgConstants.PROPERTY_SLC_AGENT_ID); - StreamSource source = new StreamSource(request.getInputStream()); + String answer = request.getParameter("body"); + if (answer == null) { + // lets read the message body instead + BufferedReader reader = request.getReader(); + StringBuffer buffer = new StringBuffer(); + String line = null; + while (((line = reader.readLine()) != null)) { + buffer.append(line); + } + answer = buffer.toString(); + } + + if (log.isTraceEnabled()) + log.debug("Received message:\n" + answer); + + StringSource source = new StringSource(answer); SlcExecution slcExecution = (SlcExecution) unmarshaller .unmarshal(source); + slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED); + slcExecutionService.newExecution(slcExecution); + SlcAgent agent = agentFactory.getAgent(agentId); agent.runSlcExecution(slcExecution); } @@ -41,4 +73,8 @@ public class NewSlcExecutionController extends AbstractServiceController { this.agentFactory = agentFactory; } + public void setSlcExecutionService(SlcExecutionService slcExecutionService) { + this.slcExecutionService = slcExecutionService; + } + }