]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java
236e8fb10019fa2d9cfa17b358d9b8b9d2d0ce97
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / process / NewSlcExecutionController.java
1 package org.argeo.slc.web.mvc.process;
2
3 import java.io.BufferedReader;
4
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 import org.apache.commons.logging.Log;
9 import org.apache.commons.logging.LogFactory;
10 import org.argeo.slc.msg.MsgConstants;
11 import org.argeo.slc.process.SlcExecution;
12 import org.argeo.slc.runtime.SlcAgent;
13 import org.argeo.slc.runtime.SlcAgentFactory;
14 import org.argeo.slc.web.mvc.AbstractServiceController;
15 import org.springframework.oxm.Unmarshaller;
16 import org.springframework.web.servlet.ModelAndView;
17 import org.springframework.xml.transform.StringSource;
18
19 /** Send a new SlcExecution. */
20 public class NewSlcExecutionController extends AbstractServiceController {
21 private final static Log log = LogFactory
22 .getLog(NewSlcExecutionController.class);
23
24 private SlcAgentFactory agentFactory;
25 private Unmarshaller unmarshaller;
26
27 @Override
28 protected void handleServiceRequest(HttpServletRequest request,
29 HttpServletResponse response, ModelAndView modelAndView)
30 throws Exception {
31
32 String agentId = request
33 .getParameter(MsgConstants.PROPERTY_SLC_AGENT_ID);
34
35 String answer = request.getParameter("body");
36 if (answer == null && "text/xml".equals(request.getContentType())) {
37 // lets read the message body instead
38 BufferedReader reader = request.getReader();
39 StringBuffer buffer = new StringBuffer();
40 while (true) {
41 String line = reader.readLine();
42 if (line == null) {
43 break;
44 }
45 buffer.append(line);
46 buffer.append("\n");
47 }
48 answer = buffer.toString();
49 }
50
51 if (log.isDebugEnabled())
52 log.debug("Received message:\n" + answer);
53
54 StringSource source = new StringSource(answer);
55 SlcExecution slcExecution = (SlcExecution) unmarshaller
56 .unmarshal(source);
57
58 SlcAgent agent = agentFactory.getAgent(agentId);
59 agent.runSlcExecution(slcExecution);
60 }
61
62 public void setUnmarshaller(Unmarshaller unmarshaller) {
63 this.unmarshaller = unmarshaller;
64 }
65
66 public void setAgentFactory(SlcAgentFactory agentFactory) {
67 this.agentFactory = agentFactory;
68 }
69
70 }