HttpServletResponseImpl response = _request.getResponseFacade();
int statusCode = response.getStatus();
String statusMessage = response.getStatusMessage();
WriteStream os = _req.getWriteStream();
os.print("Status: ");
os.print(statusCode);
os.print(' ');
os.print(statusMessage);
os.print("\r\n");
CharBuffer cb = _cb;
if (statusCode >= 400) {
removeHeader("ETag");
removeHeader("Last-Modified");
}
else if (response.isNoCache()) {
removeHeader("ETag");
removeHeader("Last-Modified");
setHeader("Expires", "Thu, 01 Dec 1994 16:00:00 GMT");
os.print("Cache-Control: no-cache\r\n");
}
else if (response.isPrivateCache()) {
os.print("Cache-Control: private\r\n");
}
int size = _headerKeys.size();
for (int i = 0; i < size; i++) {
String key = (String) _headerKeys.get(i);
String value = (String) _headerValues.get(i);
os.print(key);
os.print(": ");
os.print(value);
os.print("\r\n");
}
long now = Alarm.getCurrentTime();
ArrayList<Cookie> cookiesOut = response.getCookies();
if (cookiesOut != null) {
size = cookiesOut.size();
for (int i = 0; i < size; i++) {
Cookie cookie = cookiesOut.get(i);
int cookieVersion = cookie.getVersion();
fillCookie(cb, cookie, now, 0, false);
os.print("Set-Cookie: ");
os.print(cb);
os.print("\r\n");
if (cookieVersion > 0) {
fillCookie(cb, cookie, now, cookieVersion, true);
os.print("Set-Cookie2: ");
os.print(cb);
os.print("\r\n");
}
}
}
String contentType = response.getContentTypeImpl();
String charEncoding = response.getCharacterEncodingImpl();
if (contentType != null) {
if (charEncoding != null) {
os.print("Content-Type: ");
os.print(contentType);
os.print("; charset=");
os.print(charEncoding);
os.print("\r\n");
}
else {
os.print("Content-Type: ");
os.print(contentType);
os.print("\r\n");
}
}
os.print("\r\n");
return false;
}