KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > webapp > http > servlet > ServletRequestResponse


1 package com.icesoft.faces.webapp.http.servlet;
2
3 import com.icesoft.faces.webapp.http.common.Request;
4 import com.icesoft.faces.webapp.http.common.Response;
5 import com.icesoft.faces.webapp.http.common.ResponseHandler;
6
7 import javax.servlet.http.Cookie JavaDoc;
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9 import javax.servlet.http.HttpServletResponse JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.io.InputStream JavaDoc;
12 import java.io.OutputStream JavaDoc;
13 import java.net.URI JavaDoc;
14 import java.text.DateFormat JavaDoc;
15 import java.text.ParseException JavaDoc;
16 import java.text.SimpleDateFormat JavaDoc;
17 import java.util.ArrayList JavaDoc;
18 import java.util.Date JavaDoc;
19 import java.util.Enumeration JavaDoc;
20 import java.util.TimeZone JavaDoc;
21
22 public class ServletRequestResponse implements Request, Response {
23     private final static DateFormat JavaDoc DATE_FORMAT = new SimpleDateFormat JavaDoc("EEE, dd MMM yyyy HH:mm:ss zzz");
24
25     static {
26         DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
27     }
28
29     protected HttpServletRequest JavaDoc request;
30     protected HttpServletResponse JavaDoc response;
31
32     public ServletRequestResponse(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
33         this.request = request;
34         this.response = response;
35     }
36
37     public String JavaDoc getMethod() {
38         return request.getMethod();
39     }
40
41     public URI JavaDoc getURI() {
42         String JavaDoc query = request.getQueryString();
43         URI JavaDoc uri = URI.create(request.getRequestURL().toString());
44         return query == null ? uri : URI.create(uri + "?" + query);
45     }
46
47     public String JavaDoc getHeader(String JavaDoc name) {
48         return request.getHeader(name);
49     }
50
51     public String JavaDoc[] getHeaderAsStrings(String JavaDoc name) {
52         Enumeration JavaDoc e = request.getHeaders(name);
53         ArrayList JavaDoc values = new ArrayList JavaDoc();
54         while (e.hasMoreElements()) values.add(e.nextElement());
55         return (String JavaDoc[]) values.toArray(new String JavaDoc[values.size()]);
56     }
57
58     public Date JavaDoc getHeaderAsDate(String JavaDoc name) {
59         try {
60             return DATE_FORMAT.parse(request.getHeader(name));
61         } catch (ParseException JavaDoc e) {
62             throw new RuntimeException JavaDoc(e);
63         }
64     }
65
66     public int getHeaderAsInteger(String JavaDoc name) {
67         return Integer.parseInt(request.getHeader(name));
68     }
69
70     public boolean containsParameter(String JavaDoc name) {
71         return request.getParameter(name) != null;
72     }
73
74     public String JavaDoc getParameter(String JavaDoc name) {
75         checkExistenceOf(name);
76         return (String JavaDoc) request.getParameter(name);
77     }
78
79     public String JavaDoc[] getParameterAsStrings(String JavaDoc name) {
80         checkExistenceOf(name);
81         return request.getParameterValues(name);
82     }
83
84     public int getParameterAsInteger(String JavaDoc name) {
85         return Integer.parseInt(getParameter(name));
86     }
87
88     public boolean getParameterAsBoolean(String JavaDoc name) {
89         return Boolean.valueOf(getParameter(name)).booleanValue();
90     }
91
92     public String JavaDoc getParameter(String JavaDoc name, String JavaDoc defaultValue) {
93         try {
94             return getParameter(name);
95         } catch (Exception JavaDoc e) {
96             return defaultValue;
97         }
98     }
99
100     public int getParameterAsInteger(String JavaDoc name, int defaultValue) {
101         try {
102             return getParameterAsInteger(name);
103         } catch (Exception JavaDoc e) {
104             return defaultValue;
105         }
106     }
107
108     public boolean getParameterAsBoolean(String JavaDoc name, boolean defaultValue) {
109         try {
110             return getParameterAsBoolean(name);
111         } catch (Exception JavaDoc e) {
112             return defaultValue;
113         }
114     }
115
116     public InputStream JavaDoc readBody() throws IOException JavaDoc {
117         return request.getInputStream();
118     }
119
120     public void readBodyInto(OutputStream JavaDoc out) throws IOException JavaDoc {
121         copy(readBody(), out);
122     }
123
124     public void respondWith(ResponseHandler handler) throws Exception JavaDoc {
125         handler.respond(this);
126     }
127
128     public void setStatus(int code) {
129         response.setStatus(code);
130     }
131
132     public void setHeader(String JavaDoc name, String JavaDoc value) {
133         if ("Content-Type".equals(name)) {
134             response.setContentType(value);
135         } else if ("Content-Length".equals(name)) {
136             response.setContentLength(Integer.parseInt(value));
137         } else {
138             response.setHeader(name, value);
139         }
140     }
141
142     public void setHeader(String JavaDoc name, String JavaDoc[] values) {
143         for (int i = 0; i < values.length; i++) {
144             response.addHeader(name, values[i]);
145         }
146     }
147
148     public void setHeader(String JavaDoc name, Date JavaDoc value) {
149         response.setDateHeader(name, value.getTime());
150     }
151
152     public void setHeader(String JavaDoc name, int value) {
153         response.setIntHeader(name, value);
154     }
155
156     public void addCookie(Cookie JavaDoc cookie) {
157         response.addCookie(cookie);
158     }
159
160     public OutputStream JavaDoc writeBody() throws IOException JavaDoc {
161         return response.getOutputStream();
162     }
163
164     public void writeBodyFrom(InputStream JavaDoc in) throws IOException JavaDoc {
165         copy(in, writeBody());
166     }
167
168     private static void copy(InputStream JavaDoc input, OutputStream JavaDoc output) throws IOException JavaDoc {
169         byte[] buf = new byte[4096];
170         int len = 0;
171         while ((len = input.read(buf)) > -1) output.write(buf, 0, len);
172     }
173
174     private void checkExistenceOf(String JavaDoc name) {
175         if (request.getParameter(name) == null)
176             throw new RuntimeException JavaDoc("Query does not contain parameter named: " + name);
177     }
178 }
179
Popular Tags