[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