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