r1101 - in xwiki/trunk/src/main/java/com/xpn/xwiki: . store

Ludovic Dubost ludovic at users.forge.objectweb.org
Mon Jul 31 02:15:19 CEST 2006


Author: ludovic
Date: 2006-07-31 02:15:16 +0200 (Mon, 31 Jul 2006)
New Revision: 1101

Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStoreInterface.java
Log:
Transformed all caches to XWikiCache
Move virtual wiki cache to XWikiCache, limited by default to 1000 items
Allow caches to be completely deleted on flushAll
Allow clustered cache to only use one jgroups notification bus
Updated oscache to a lightly modified version of oscache



Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-07-31 00:04:56 UTC (rev 1100)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-07-31 00:15:16 UTC (rev 1101)
@@ -465,18 +465,6 @@
         boolean nocache = "0".equals(Param("xwiki.store.cache", "1"));
         if (!nocache) {
             XWikiCacheStoreInterface cachestore = new XWikiCacheStore(basestore, context);
-            try {
-                String capacity = Param("xwiki.store.cache.capacity");
-                if (capacity != null)
-                    cachestore.setCacheCapacity(Integer.parseInt(capacity));
-            } catch (Exception e) {
-            }
-            try {
-                String capacity = Param("xwiki.store.cache.pageexistcapacity");
-                if (capacity != null)
-                    cachestore.setPageExistCacheCapacity(Integer.parseInt(capacity));
-            } catch (Exception e) {
-            }
             setStore(cachestore);
         } else
             setStore(basestore);

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java	2006-07-31 00:04:56 UTC (rev 1100)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStore.java	2006-07-31 00:15:16 UTC (rev 1101)
@@ -52,25 +52,33 @@
 
     public XWikiCacheStore(XWikiStoreInterface store, XWikiContext context) throws XWikiException {
         setStore(store);
-        initCache(cacheCapacity, pageExistCacheCapacity, context);
+        initCache(context);
     }
 
+    public synchronized void initCache(XWikiContext context) throws XWikiException {
+        if ((cache==null)||(pageExistCache==null))  {
+            try {
+                String capacity = context.getWiki().Param("xwiki.store.cache.capacity");
+                if (capacity != null)
+                    cacheCapacity = Integer.parseInt(capacity);
+            } catch (Exception e) {
+            }
+            try {
+                String capacity = context.getWiki().Param("xwiki.store.cache.pageexistcapacity");
+                if (capacity != null)
+                    pageExistCacheCapacity = Integer.parseInt(capacity);
+            } catch (Exception e) {
+            }
+            initCache(cacheCapacity, pageExistCacheCapacity, context);
+        }
+    }
+
     public void initCache(int capacity, int pageExistCacheCapacity, XWikiContext context) throws XWikiException {
         XWikiCacheService cacheService = context.getWiki().getCacheService();
         setCache(cacheService.newCache("xwiki.store.pagecache", capacity));
         setPageExistCache(cacheService.newCache("xwiki.store.pageexistcache",pageExistCacheCapacity));
     }
 
-    public void setCacheCapacity(int capacity) {
-        cacheCapacity = capacity;
-        getCache().setCapacity(capacity);
-    }
-
-    public void setPageExistCacheCapacity(int capacity) {
-        pageExistCacheCapacity = capacity;
-        getPageExistCache().setCapacity(capacity);
-    }
-
     public XWikiStoreInterface getStore() {
         return store;
     }
@@ -88,6 +96,9 @@
         synchronized(key) {
             store.saveXWikiDoc(doc, context, bTransaction);
             doc.setStore(store);
+            // Make sure cache is initialized
+            initCache(context);
+
             // We need to flush so that caches
             // on the cluster are informed about the change
             getCache().flushEntry(key);
@@ -128,6 +139,9 @@
         if (log.isDebugEnabled())
          log.debug("Cache: begin for doc " + key + " in cache");
 
+        // Make sure cache is initialized
+        initCache(context);
+
         synchronized (key) {
             try {
                 if (log.isDebugEnabled())
@@ -172,6 +186,10 @@
         String key = getKey(doc, context);
         synchronized(key) {
             store.deleteXWikiDoc(doc, context);
+
+            // Make sure cache is initialized
+            initCache(context);
+
             getCache().flushEntry(key);
             getPageExistCache().flushEntry(key);
             getPageExistCache().putInCache(key, new Boolean(false));

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStoreInterface.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStoreInterface.java	2006-07-31 00:04:56 UTC (rev 1100)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiCacheStoreInterface.java	2006-07-31 00:15:16 UTC (rev 1101)
@@ -29,7 +29,5 @@
     public XWikiStoreInterface getStore();
     public void setStore(XWikiStoreInterface store);
     public void flushCache();
-    public void setCacheCapacity(int capacity);
-    public void setPageExistCacheCapacity(int capacity);
     public void initCache(int capacity, int pageExistCapacity, XWikiContext context) throws XWikiException;
 }





More information about the Xwiki-notifications mailing list