1
2
3
4
5
6
7 package org.mule.transport.http.transformers;
8
9 import org.mule.api.MuleEvent;
10 import org.mule.api.transformer.DiscoverableTransformer;
11 import org.mule.api.transformer.TransformerException;
12 import org.mule.api.transport.OutputHandler;
13 import org.mule.transformer.AbstractTransformer;
14 import org.mule.transformer.types.DataTypeFactory;
15 import org.mule.util.IOUtils;
16
17 import java.io.IOException;
18 import java.io.InputStream;
19 import java.io.OutputStream;
20
21 import javax.servlet.http.HttpServletRequest;
22
23
24
25
26 public class ServletRequestToOutputHandler extends AbstractTransformer implements DiscoverableTransformer
27 {
28 private int priorityWeighting = DiscoverableTransformer.DEFAULT_PRIORITY_WEIGHTING;
29
30 public ServletRequestToOutputHandler()
31 {
32 registerSourceType(DataTypeFactory.create(HttpServletRequest.class));
33 setReturnDataType(DataTypeFactory.create(OutputHandler.class));
34 }
35
36 @Override
37 public Object doTransform(final Object src, String encoding) throws TransformerException
38 {
39 return new OutputHandler()
40 {
41 public void write(MuleEvent event, OutputStream out) throws IOException
42 {
43 InputStream is = ((HttpServletRequest) src).getInputStream();
44 try
45 {
46 IOUtils.copyLarge(is, out);
47 }
48 finally
49 {
50 is.close();
51 }
52 }
53 };
54 }
55
56
57
58
59
60
61
62 public int getPriorityWeighting()
63 {
64 return priorityWeighting;
65 }
66
67
68
69
70
71
72
73 public void setPriorityWeighting(int weighting)
74 {
75 priorityWeighting = weighting;
76 }
77 }