1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.servlet;
12
13 import org.mule.api.MuleMessage;
14 import org.mule.api.transformer.TransformerException;
15 import org.mule.transformer.AbstractMessageAwareTransformer;
16 import org.mule.util.SystemUtils;
17
18 import java.io.BufferedReader;
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.io.InputStreamReader;
22
23 import javax.servlet.http.HttpServletRequest;
24
25 public class HttpRequestToParameter extends AbstractMessageAwareTransformer
26 {
27
28 public HttpRequestToParameter()
29 {
30 registerSourceType(Object.class);
31 setReturnClass(String.class);
32 }
33
34 public Object transform(MuleMessage message, String outputEncoding) throws TransformerException
35 {
36 HttpServletRequest request = ((HttpRequestMessageAdapter) message.getAdapter()).getRequest();
37
38 String payloadParam = (String)request.getAttribute(AbstractReceiverServlet.PAYLOAD_PARAMETER_NAME);
39 if (null == payloadParam)
40 {
41 payloadParam = AbstractReceiverServlet.DEFAULT_PAYLOAD_PARAMETER_NAME;
42 }
43
44 String payload = request.getParameter(payloadParam);
45 if (null == payload)
46 {
47 if (isText(request.getContentType()))
48 {
49 try
50 {
51 InputStream is = (InputStream) message.getPayload();
52 BufferedReader reader = new BufferedReader(new InputStreamReader(is, request.getCharacterEncoding()));
53 StringBuffer buffer = new StringBuffer(8192);
54 String line = reader.readLine();
55 while (line != null)
56 {
57 buffer.append(line);
58 line = reader.readLine();
59 if (line != null) buffer.append(SystemUtils.LINE_SEPARATOR);
60 }
61 payload = buffer.toString();
62 }
63 catch (IOException e)
64 {
65 throw new TransformerException(this, e);
66 }
67 }
68 }
69
70 return payload;
71 }
72
73 protected boolean isText(String contentType)
74 {
75 if (contentType == null)
76 {
77 return true;
78 }
79 return (contentType.startsWith("text/"));
80 }
81
82 }