[Yanel-commits] rev 48871 -
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet
michi at wyona.com
michi at wyona.com
Mon Apr 19 09:43:23 CEST 2010
Author: michi
Date: 2010-04-19 09:43:23 +0200 (Mon, 19 Apr 2010)
New Revision: 48871
Modified:
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/AccessLog.java
Log:
set and get cookie moved
Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/AccessLog.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/AccessLog.java 2010-04-19 06:54:33 UTC (rev 48870)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/AccessLog.java 2010-04-19 07:43:23 UTC (rev 48871)
@@ -1,10 +1,22 @@
package org.wyona.yanel.servlet;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.Date;
+
+import org.apache.log4j.Logger;
+
/**
* First attempt to "standardize" access logging for resources
*/
public class AccessLog {
+ private static Logger log = Logger.getLogger(AccessLog.class);
+
+ private static String ANALYTICS_COOKIE_NAME = "_yanel-analytics";
+
/**
* log4j category
*/
@@ -22,4 +34,54 @@
public static String getLogMessage(String requestURL, String realmID, String cookieValue, String referer, String userAgent) {
return requestURL + " r:" + realmID + " c:" + cookieValue + "ref:" + referer + " ua:" + userAgent;
}
+
+ /**
+ * Get log message
+ */
+ public static String getLogMessage(HttpServletRequest request, HttpServletResponse response, String realmID) {
+ Cookie cookie = getYanelAnalyticsCookie(request, response);
+ return getLogMessage(request.getRequestURL().toString(), realmID, cookie.getValue(), request.getHeader("referer"), request.getHeader("User-Agent"));
+ }
+
+ /**
+ * Get log message
+ */
+ public static String getLogMessage(HttpServletRequest request, String realmID) {
+ Cookie cookie = getYanelAnalyticsCookie(request);
+ return getLogMessage(request.getRequestURL().toString(), realmID, cookie.getValue(), request.getHeader("referer"), request.getHeader("User-Agent"));
+ }
+
+ /**
+ * Get Yanel analytics cookie
+ * @param request Client request
+ */
+ public static Cookie getYanelAnalyticsCookie(HttpServletRequest request) {
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null) {
+ for (int i = 0; i < cookies.length; i++) {
+ if (cookies[i].getName().equals(ANALYTICS_COOKIE_NAME)) { // TODO: This code is not sufficient to make sure that only one cookie is being set, because Tomcat processes the requests in parallel and until the first cookie is registered, some more cookies might already be set!
+ //log.debug("Has already a Yanel analytics cookie: " + cookies[i].getValue());
+ return cookies[i];
+ }
+ }
+ }
+ log.warn("No Yanel analytics cookie '" + ANALYTICS_COOKIE_NAME + "' set yet!");
+ return null;
+ }
+
+ /**
+ * Get Yanel analytics cookie, whereas set cookie if it does not exist yet as persistent cookie
+ * @param request Client request
+ */
+ public static Cookie getYanelAnalyticsCookie(HttpServletRequest request, HttpServletResponse response) {
+ Cookie c = getYanelAnalyticsCookie(request);
+ if (c != null) return c;
+
+ Cookie analyticsCookie = new Cookie(ANALYTICS_COOKIE_NAME, "YA-" + new Date().getTime()); // TODO: getTime() is not unique!
+ analyticsCookie.setMaxAge(31536000); // 1 year
+ //analyticsCookie.setMaxAge(86400); // 1 day
+ analyticsCookie.setPath(request.getContextPath());
+ response.addCookie(analyticsCookie);
+ return analyticsCookie;
+ }
}
More information about the Yanel-commits
mailing list