KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > server > appserver > unit > RequestForwardTest


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
3  * notice. All rights reserved.
4  */

5 package com.tctest.server.appserver.unit;
6
7 import org.apache.commons.httpclient.HttpClient;
8
9 import com.tc.test.server.appserver.unit.AbstractAppServerTestCase;
10 import com.tc.test.server.util.HttpUtil;
11
12 import java.io.IOException JavaDoc;
13 import java.net.ConnectException JavaDoc;
14 import java.net.URL JavaDoc;
15 import java.util.Date JavaDoc;
16
17 import javax.servlet.RequestDispatcher JavaDoc;
18 import javax.servlet.ServletException JavaDoc;
19 import javax.servlet.http.HttpServlet JavaDoc;
20 import javax.servlet.http.HttpServletRequest JavaDoc;
21 import javax.servlet.http.HttpServletResponse JavaDoc;
22
23 public class RequestForwardTest extends AbstractAppServerTestCase {
24
25   public RequestForwardTest() {
26     // disableAllUntil("2007-01-01");
27
}
28
29   public static final class ForwarderServlet extends HttpServlet JavaDoc {
30     protected void doGet(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc resp) throws IOException JavaDoc, ServletException JavaDoc {
31       final String JavaDoc action = req.getParameter("action");
32       final String JavaDoc target = req.getParameter("target");
33       String JavaDoc reply = "OK";
34       RequestDispatcher JavaDoc requestDispatcher = req.getRequestDispatcher(target);
35       System.err.println("### ForwarderServlet.doGet is here...");
36       if ("s-f-s".equals(action)) {
37         req.getSession();
38         requestDispatcher.forward(req, resp);
39         req.getSession();
40       } else if ("n-f-s".equals(action)) {
41         requestDispatcher.forward(req, resp);
42         req.getSession();
43       } else if ("s-f-n".equals(action)) {
44         req.getSession();
45         System.err.println("### ForwarderServlet: calling forward ...");
46         requestDispatcher.forward(req, resp);
47         System.err.println("### ForwarderServlet: returned from forward forward ...");
48       } else {
49         reply = "INVALID REQUEST";
50         resp.getWriter().print(reply);
51         resp.flushBuffer();
52       }
53     }
54   }
55
56   public static final class ForwardeeServlet extends HttpServlet JavaDoc {
57     protected void doGet(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc resp) throws IOException JavaDoc {
58       final String JavaDoc action = req.getParameter("action");
59       System.err.println("### ForwardEEServlet.doGet is here...");
60       String JavaDoc reply = "FORWARD OK";
61       if (action.endsWith("s")) {
62         req.getSession();
63         reply= "FORWARD GOT SESSION";
64       } else if (action.endsWith("n")) {
65         reply= "FORWARD DID NOT GET SESSION";
66       } else {
67         reply = "INVALID REQUEST";
68       }
69       resp.getWriter().print(reply);
70       resp.flushBuffer();
71     }
72   }
73
74   private int port;
75
76   public void testSessionForwardSession() throws Exception JavaDoc {
77     startDsoServer();
78
79     port = startAppServer(true).serverPort();
80
81     HttpClient client = HttpUtil.createHttpClient();
82
83     // first, sanity check
84
URL JavaDoc url = new URL JavaDoc(createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=0");
85     checkResponse("INVALID REQUEST", url, client);
86
87     url = new URL JavaDoc(createUrl(port, RequestForwardTest.ForwarderServlet.class)
88                   + "?action=s-f-s&target=RequestForwardTest-ForwardeeServlet");
89     checkResponse("FORWARD GOT SESSION", url, client);
90   }
91
92   public void testForwardSession() throws Exception JavaDoc {
93     startDsoServer();
94
95     port = startAppServer(true).serverPort();
96
97     HttpClient client = HttpUtil.createHttpClient();
98
99     // first, sanity check
100
URL JavaDoc url = new URL JavaDoc(createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=0");
101     checkResponse("INVALID REQUEST", url, client);
102
103     url = new URL JavaDoc(createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=n-f-s&target=RequestForwardTest-ForwardeeServlet");
104     checkResponse("FORWARD GOT SESSION", url, client);
105   }
106   
107   public void testSessionForward() throws Exception JavaDoc {
108     startDsoServer();
109
110     port = startAppServer(true).serverPort();
111
112     HttpClient client = HttpUtil.createHttpClient();
113
114     // first, sanity check
115
URL JavaDoc url = new URL JavaDoc(createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=0");
116     checkResponse("INVALID REQUEST", url, client);
117
118     url = new URL JavaDoc(createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=s-f-n&target=RequestForwardTest-ForwardeeServlet");
119     checkResponse("FORWARD DID NOT GET SESSION", url, client);
120   }
121
122   private void checkResponse(String JavaDoc expectedResponse, URL JavaDoc url, HttpClient client) throws ConnectException JavaDoc, IOException JavaDoc {
123     System.err.println("=== Send Request [" + (new Date JavaDoc()) + "]: url=[" + url + "]");
124     final String JavaDoc actualResponse = HttpUtil.getResponseBody(url, client);
125     System.err.println("=== Got Response [" + (new Date JavaDoc()) + "]: url=[" + url + "], response=[" + actualResponse + "]");
126     assertTimeDirection();
127     assertEquals(expectedResponse, actualResponse);
128   }
129 }
130
Popular Tags