package org.romaframework.web.view;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.romaframework.aspect.view.ViewHelper;
import org.romaframework.core.util.FileUtils;
public class HttpUtils {
protected static Log log = LogFactory.getLog(HttpUtils.class);
public static void noCache(HttpServletResponse iResponse) {
iResponse.setHeader("Pragma", "no-cache");
iResponse.addHeader("Cache-Control", "must-revalidate");
iResponse.addHeader("Cache-Control", "no-cache");
iResponse.addHeader("Cache-Control", "no-store");
iResponse.setDateHeader("Expires", 0);
}
public static StringBuilder loadUrlResource(String url, boolean propagateSession, HttpServletRequest request) {
StringBuilder buffer = null;
HttpURLConnection connection = null;
try {
if (url.startsWith("classpath:")) {
url = url.substring("classpath:".length());
try {
buffer = FileUtils.readStreamAsText(ViewHelper.class.getResourceAsStream(url));
} catch (Throwable e) {
log.error("[URLRendering.setContent] Error on loading resource from classpath", e);
}
} else {
URLConnection conn = new URL(url).openConnection();
if (conn instanceof HttpURLConnection) {
connection = (HttpURLConnection) conn;
if (propagateSession) {
// PROPAGATE ALL THE COOKIES (AND THEREFORE ALSO THE HTTP SESSION) ALLOWING THE SHARING OF OBJECTS BETWEEN POJO AND JSP
for (Cookie c : request.getCookies()) {
if (c.getName().equals("JSESSIONID")) {
connection.setRequestProperty("Cookie", c.getName() + "=" + c.getValue());
break;
}
}
}
connection.connect();
buffer = FileUtils.readStreamAsText(connection.getInputStream());
}
}
} catch (Exception e) {
// DO NOTHING
log.error("[URLRendering.setContent] Error on loading resource from URL", e);
} finally {
if (connection != null)
connection.disconnect();
}
return buffer;
}
public static final String VAR_CLIENT = "${client}";
public static final String VAR_LOCALHOST = "${localhost}";
public static final String VAR_APPLICATION = "${application}";
public static final String VAR_SESSION = "${session}";
public static final String VAR_URL_CLASSPATH = "classpath:";
public static final String VAR_URL_HTTP = "http://";
}