1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.servlet;
12
13 import org.mule.api.transport.Connector;
14 import org.mule.transport.AbstractConnectorTestCase;
15
16 import java.io.BufferedReader;
17 import java.io.ByteArrayInputStream;
18 import java.io.IOException;
19 import java.io.StringReader;
20 import java.lang.reflect.InvocationHandler;
21 import java.lang.reflect.Method;
22 import java.lang.reflect.Proxy;
23 import java.util.HashMap;
24 import java.util.Hashtable;
25 import java.util.Map;
26
27 import javax.servlet.ServletInputStream;
28 import javax.servlet.http.HttpServletRequest;
29
30 public class ServletConnectorTestCase extends AbstractConnectorTestCase
31 {
32 @Override
33 public Connector createConnector() throws Exception
34 {
35 ServletConnector c = new ServletConnector(muleContext);
36 c.setName("test");
37 return c;
38 }
39
40 @Override
41 public String getTestEndpointURI()
42 {
43 return "servlet://testServlet";
44 }
45
46 @Override
47 public Object getValidMessage() throws Exception
48 {
49 return getMockRequest("test message");
50 }
51
52 private HttpServletRequest getMockRequest(final String message)
53 {
54 Object proxy = Proxy.newProxyInstance(ServletConnectorTestCase.class.getClassLoader(),
55 new Class[]{ HttpServletRequest.class }, new InvocationHandler()
56 {
57 private String payload = message;
58 private Map<Object, Object> props = new HashMap<Object, Object>();
59
60 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
61 {
62 if ("getInputStream".equals(method.getName()))
63 {
64 ServletInputStream s = new ServletInputStream()
65 {
66 ByteArrayInputStream is = new ByteArrayInputStream(payload.getBytes());
67
68 @Override
69 public int read() throws IOException
70 {
71 return is.read();
72 }
73 };
74 return s;
75 }
76 else if ("getAttribute".equals(method.getName()))
77 {
78 return props.get(args[0]);
79 }
80 else if ("setAttribute".equals(method.getName()))
81 {
82 props.put(args[0], args[1]);
83 }
84 else if ("equals".equals(method.getName()))
85 {
86 return Boolean.valueOf(payload.equals(args[0].toString()));
87 }
88 else if ("toString".equals(method.getName()))
89 {
90 return payload;
91 }
92 else if ("getReader".equals(method.getName()))
93 {
94 return new BufferedReader(new StringReader(payload.toString()));
95 }
96 else if ("getAttributeNames".equals(method.getName()))
97 {
98 return new Hashtable<Object, Object>().elements();
99 }
100 else if ("getHeaderNames".equals(method.getName()))
101 {
102 return new Hashtable<Object, Object>().elements();
103 }
104 return null;
105 }
106 }
107 );
108 return (HttpServletRequest) proxy;
109 }
110
111 @Override
112 public void testConnectorMessageDispatcherFactory() throws Exception
113 {
114
115 }
116
117 public void testConnectorMessageDispatcher() throws Exception
118 {
119
120 }
121 }