/** * Copyright 2000-2004 by CreamTec, LLC. All rights reserved. */ package creamtec.webcream.examples; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import creamtec.core.TraceMgr; import creamtec.webcream.core.*; import creamtec.webcream.RouterRequestFilter; import creamtec.webcream.servlet.AppDesc; /** * Demonstrates an implementation of RouterRequestFilter interface. * See documentation for more information. */ public class RouterRequestFilterExample implements RouterRequestFilter { public RouterRequestFilterExample() { TraceMgr.trace(this, "Filter loaded"); } public boolean preProcessRequest(HttpServletRequest request, HttpServletResponse response) { TraceMgr.trace(this, "Pre-processing request"); // Nothing to do, so just return to continue processing return true; } public boolean postProcessRequest(HttpServletRequest request, HttpServletResponse response, AppDesc appDesc, ClientAgentRemote agent, HttpRequestData requestData) throws Exception { TraceMgr.trace(this, "Post-processing request"); // Obtain client IP address from the HTTP request and save that information in // WebCream's request data String ipAddress = request.getRemoteAddr(); TraceMgr.trace(this, "IP address = " + ipAddress, 6); requestData.getParams().put("custom.ip_address", ipAddress); return true; } public boolean processResponse(HttpServletRequest request, HttpServletResponse response, AppDesc appDesc, ClientAgentRemote agent, HttpRequestData requestData, HttpResponseData responseData) throws Exception { if (responseData != null && responseData.getHtmlPage() != null) { if (responseData.getHtmlPage().indexOf("About WebCream") != -1) { String page = responseData.getHtmlPage(); StringBuffer buf = new StringBuffer(page.length() + 100); int endOfBodyIndex = page.indexOf(""); buf.append(page.substring(0, endOfBodyIndex)); buf.append("

RouterRequestFilter: Browser is "); buf.append(request.getHeader("User-Agent")); buf.append("

\r\n"); buf.append(page.substring(endOfBodyIndex)); responseData.setHtmlPage(buf.toString()); } } return true; } }