Author: ludovic
Date: 2007-09-07 12:32:54 +0200 (Fri, 07 Sep 2007)
New Revision: 4755

Modified:
   
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java
   
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java
Log:
XWIKI-1721 Statistics exception

Modified: 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java
 2007-09-07 10:31:36 UTC (rev 4754)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/VisitStats.java
 2007-09-07 10:32:54 UTC (rev 4755)
@@ -18,120 +18,124 @@
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  *
  */
-
-package com.xpn.xwiki.stats.impl;
-
-import java.util.Date;
-
-public class VisitStats extends XWikiStats {
-    protected VisitStats oldObject = null;
-
-    public VisitStats() {
-    }
-
-    public VisitStats(String user, String uniqueID, String cookie, String ip, 
String userAgent, Date startDate, int periodtype) {
-        super(startDate, periodtype);
-        setName(user);
-        setClassName("internal");
-        setStartDate(startDate);
-        setUniqueID(uniqueID);
-        setCookie(cookie);
-        setIP(ip);
-        setUserAgent(userAgent);
-    }
-
-    public void rememberOldObject(VisitStats vobject) {
-        if (oldObject==null)
-         oldObject = vobject;
-    }
-
-    public VisitStats getOldObject() {
-        return oldObject;
-    }
-
-    public int getPageSaves() {
-        return getIntValue("pageSaves");
-    }
-
-    public void  setPageSaves(int pageSaves) {
-        setIntValue("pageSaves", pageSaves);
-    }
-
-    public void  incPageSaves() {
-        setIntValue("pageSaves", getPageSaves() + 1);
-    }
-
-    public int getDownloads() {
-        return getIntValue("downloads");
-    }
-
-    public void  setDownloads(int downloads) {
-        setIntValue("downloads", downloads);
-    }
-
-    public void  incDownloads() {
-        setIntValue("downloads", getDownloads() + 1);
-    }
-
-    public Date getStartDate() {
-        return getDateValue("startDate");
-    }
-
-    public void  setStartDate(Date startDate) {
-        setDateValue("startDate", startDate);
-    }
-
-    public Date getEndDate() {
-        return getDateValue("endDate");
-    }
-
-    public void  setEndDate(Date endDate) {
-        setDateValue("endDate", endDate);
-    }
-
-    public String getUniqueID() {
-        return getStringValue("uniqueID");
-    }
-
-    public void setUniqueID(String uniqueID) {
-        // Changing the unique ID is changing the number
-        if (getStartDate()!=null) {
-         String nb =  uniqueID + getStartDate().getTime();
-         setNumber(nb.hashCode());
-        }
-        setStringValue("uniqueID", uniqueID);
-    }
-
-    public String getCookie() {
-        return getStringValue("cookie");
-    }
-
-    public void setCookie(String cookie) {
-        setStringValue("cookie", cookie);
-    }
-
-    public String getIP() {
-        return getStringValue("ip");
-    }
-
-    public void setIP(String ip) {
-        setStringValue("ip", ip);
-    }
-
-    public String getUserAgent() {
-        return getStringValue("userAgent");
-    }
-
-    public void setUserAgent(String userAgent) {
-        setStringValue("userAgent", userAgent);
-    }
-
-    public String getUser() {
-        return getName();
-    }
-
-    public void setUser(String user) {
-        setName(user);
-    }
-
-}
+
+package com.xpn.xwiki.stats.impl;
+
+import java.util.Date;
+
+public class VisitStats extends XWikiStats {
+    protected VisitStats oldObject = null;
+
+    public VisitStats() {
+    }
+
+    public VisitStats(String user, String uniqueID, String cookie, String ip, 
String userAgent, Date startDate, int periodtype) {
+        super(startDate, periodtype);
+        setName(user);
+        setClassName("internal");
+        setStartDate(startDate);
+        setUniqueID(uniqueID);
+        setCookie(cookie);
+        setIP(ip);
+        setUserAgent(userAgent);
+    }
+
+    public void rememberOldObject(VisitStats vobject) {
+        if (oldObject==null)
+         oldObject = vobject;
+    }
+
+    public void unrememberOldObject() {
+        oldObject=null;
+    }
+
+    public VisitStats getOldObject() {
+        return oldObject;
+    }
+
+    public int getPageSaves() {
+        return getIntValue("pageSaves");
+    }
+
+    public void  setPageSaves(int pageSaves) {
+        setIntValue("pageSaves", pageSaves);
+    }
+
+    public void  incPageSaves() {
+        setIntValue("pageSaves", getPageSaves() + 1);
+    }
+
+    public int getDownloads() {
+        return getIntValue("downloads");
+    }
+
+    public void  setDownloads(int downloads) {
+        setIntValue("downloads", downloads);
+    }
+
+    public void  incDownloads() {
+        setIntValue("downloads", getDownloads() + 1);
+    }
+
+    public Date getStartDate() {
+        return getDateValue("startDate");
+    }
+
+    public void  setStartDate(Date startDate) {
+        setDateValue("startDate", startDate);
+    }
+
+    public Date getEndDate() {
+        return getDateValue("endDate");
+    }
+
+    public void  setEndDate(Date endDate) {
+        setDateValue("endDate", endDate);
+    }
+
+    public String getUniqueID() {
+        return getStringValue("uniqueID");
+    }
+
+    public void setUniqueID(String uniqueID) {
+        // Changing the unique ID is changing the number
+        if (getStartDate()!=null) {
+         String nb =  uniqueID + getStartDate().getTime();
+         setNumber(nb.hashCode());
+        }
+        setStringValue("uniqueID", uniqueID);
+    }
+
+    public String getCookie() {
+        return getStringValue("cookie");
+    }
+
+    public void setCookie(String cookie) {
+        setStringValue("cookie", cookie);
+    }
+
+    public String getIP() {
+        return getStringValue("ip");
+    }
+
+    public void setIP(String ip) {
+        setStringValue("ip", ip);
+    }
+
+    public String getUserAgent() {
+        return getStringValue("userAgent");
+    }
+
+    public void setUserAgent(String userAgent) {
+        setStringValue("userAgent", userAgent);
+    }
+
+    public String getUser() {
+        return getName();
+    }
+
+    public void setUser(String user) {
+        setName(user);
+    }
+
+}

Modified: 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java
      2007-09-07 10:31:36 UTC (rev 4754)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/stats/impl/XWikiStatsServiceImpl.java
      2007-09-07 10:32:54 UTC (rev 4755)
@@ -197,10 +197,11 @@
         if (store == null) return;
 
         VisitStats vobject = findVisit(context);
+        synchronized(vobject) {
             // We count page views in the sessions only for the "view" action
             if (action.equals("view"))
                 vobject.incPageViews();
-            // We count "save" and "download" actions separately
+                // We count "save" and "download" actions separately
             else if (action.equals("save"))
                 vobject.incPageSaves();
             else if (action.equals("download"))
@@ -216,7 +217,8 @@
                 if (oldObject!=null) {
                     // Catch exception to not fail here
                     try {
-                     store.deleteXWikiCollection(oldObject, context, true, 
true);
+                        store.deleteXWikiCollection(oldObject, context, true, 
true);
+                        vobject.unrememberOldObject();
                     } catch (Exception e) {}
                 }
 
@@ -226,12 +228,13 @@
                 e.printStackTrace();
             }
 
-        addPageView(doc.getFullName(), action, XWikiStats.PERIOD_MONTH, store, 
context, vobject);
-        addPageView(doc.getSpace(), action, XWikiStats.PERIOD_MONTH, store, 
context, vobject);
-        addPageView("", action, XWikiStats.PERIOD_MONTH, store, context, 
vobject);
-        addPageView(doc.getFullName(), action, XWikiStats.PERIOD_DAY, store, 
context, vobject);
-        addPageView(doc.getSpace(), action, XWikiStats.PERIOD_DAY, store, 
context, vobject);
-        addPageView("", action, XWikiStats.PERIOD_DAY, store, context, 
vobject);
+            addPageView(doc.getFullName(), action, XWikiStats.PERIOD_MONTH, 
store, context, vobject);
+            addPageView(doc.getSpace(), action, XWikiStats.PERIOD_MONTH, 
store, context, vobject);
+            addPageView("", action, XWikiStats.PERIOD_MONTH, store, context, 
vobject);
+            addPageView(doc.getFullName(), action, XWikiStats.PERIOD_DAY, 
store, context, vobject);
+            addPageView(doc.getSpace(), action, XWikiStats.PERIOD_DAY, store, 
context, vobject);
+            addPageView("", action, XWikiStats.PERIOD_DAY, store, context, 
vobject);
+        }
 
         // In case of a "view" action we want to store referer info
         if (action.equals("view")) {
@@ -239,19 +242,20 @@
             if ((referer !=null)&&(!referer.equals(""))) {
                 // Visits of the web
                 RefererStats robject = new RefererStats(doc.getFullName(), 
referer, new Date(), XWikiStats.PERIOD_MONTH);
-                try {
-                    store.loadXWikiCollection(robject, context, true);
-                } catch (XWikiException e) {
-                }
+                synchronized(robject) {
+                    try {
+                        store.loadXWikiCollection(robject, context, true);
+                    } catch (XWikiException e) {
+                    }
 
-                robject.incPageViews();
-                try {
-                    store.saveXWikiCollection(robject, context, true);
-                } catch (XWikiException e) {
-                    // Statistics should never make xwiki fail !
-                    e.printStackTrace();
+                    robject.incPageViews();
+                    try {
+                        store.saveXWikiCollection(robject, context, true);
+                    } catch (XWikiException e) {
+                        // Statistics should never make xwiki fail !
+                        e.printStackTrace();
+                    }
                 }
-
             }
         }
 
@@ -564,3 +568,4 @@
 
 }
 
+

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to