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