package org.argeo.slc.web.mvc.process;\r
\r
+import java.io.BufferedReader;\r
+\r
import javax.servlet.http.HttpServletRequest;\r
import javax.servlet.http.HttpServletResponse;\r
-import javax.xml.transform.stream.StreamSource;\r
\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
import org.argeo.slc.msg.MsgConstants;\r
import org.argeo.slc.process.SlcExecution;\r
import org.argeo.slc.runtime.SlcAgent;\r
import org.argeo.slc.web.mvc.AbstractServiceController;\r
import org.springframework.oxm.Unmarshaller;\r
import org.springframework.web.servlet.ModelAndView;\r
+import org.springframework.xml.transform.StringSource;\r
\r
/** Send a new SlcExecution. */\r
public class NewSlcExecutionController extends AbstractServiceController {\r
+ private final static Log log = LogFactory\r
+ .getLog(NewSlcExecutionController.class);\r
+\r
private SlcAgentFactory agentFactory;\r
private Unmarshaller unmarshaller;\r
\r
String agentId = request\r
.getParameter(MsgConstants.PROPERTY_SLC_AGENT_ID);\r
\r
- StreamSource source = new StreamSource(request.getInputStream());\r
+ String answer = request.getParameter("body");\r
+ if (answer == null && "text/xml".equals(request.getContentType())) {\r
+ // lets read the message body instead\r
+ BufferedReader reader = request.getReader();\r
+ StringBuffer buffer = new StringBuffer();\r
+ while (true) {\r
+ String line = reader.readLine();\r
+ if (line == null) {\r
+ break;\r
+ }\r
+ buffer.append(line);\r
+ buffer.append("\n");\r
+ }\r
+ answer = buffer.toString();\r
+ }\r
+\r
+ if (log.isDebugEnabled())\r
+ log.debug("Received message:\n" + answer);\r
+\r
+ StringSource source = new StringSource(answer);\r
SlcExecution slcExecution = (SlcExecution) unmarshaller\r
.unmarshal(source);\r
\r