Author: bpoussin Date: 2010-06-10 17:25:16 +0200 (Thu, 10 Jun 2010) New Revision: 114 Url: http://nuiton.org/repositories/revision/wikitty/114 Log: le cache peut-etre instancier pour etre static ou soft le cache n'est plus un singleton (necessaire pour les transations) ajout d'un cache dans les transactions (il faut maintenant le prendre en compte dans WSCached) Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-06-10 15:21:25 UTC (rev 113) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyCache.java 2010-06-10 15:25:16 UTC (rev 114) @@ -18,6 +18,7 @@ package org.nuiton.wikitty; import java.util.Collection; +import java.util.HashMap; import java.util.Map; import org.apache.commons.collections.map.ReferenceMap; @@ -35,20 +36,27 @@ */ public class WikittyCache implements WikittyServiceListener { - /** Singleton wikitty cache instance. */ - static protected WikittyCache instance = null; - protected Map<String, Wikitty> wikittyCache; - protected WikittyCache() { - wikittyCache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT); + + /** + * create a soft cache + */ + public WikittyCache() { + this(true); } - public static synchronized WikittyCache getInstance() { - if (instance == null) { - instance = new WikittyCache(); + /** + * + * @param soft si vrai utilise un cache avec des reference Soft, sinon + * utilise des references static (utile pour les transactions) + */ + public WikittyCache(boolean soft) { + if (soft) { + wikittyCache = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT); + } else { + wikittyCache = new HashMap<String, Wikitty>(); } - return instance; } public boolean existsWikitty(String id) { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-06-10 15:21:25 UTC (rev 113) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-06-10 15:25:16 UTC (rev 114) @@ -72,7 +72,7 @@ */ public WikittyServiceCached(WikittyService ws, Properties props) { this.ws = ws; - cache = WikittyCache.getInstance(); + cache = new WikittyCache(); registerWikittyServiceListener(props); } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java 2010-06-10 15:21:25 UTC (rev 113) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyTransaction.java 2010-06-10 15:25:16 UTC (rev 114) @@ -16,12 +16,29 @@ /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(WikittyTransaction.class); + /** permet d'attacher n'importe quoi a une transaction */ protected Map<Object, Object> tagValues; + /** cache static utilise par le WikittyServiceCached */ + transient protected WikittyCache cache = null; + public WikittyTransaction() { tagValues = new HashMap<Object, Object>(); } + /** + * visibilie 'default' car est uilise par WikittyServiceCached qui est dans + * le meme package et a priori seulement lui en a besoin + * + * @return + */ + WikittyCache getCache() { + if (cache == null) { + cache = new WikittyCache(); + } + return cache; + } + public Object getTagValue(Object tag) { return tagValues.get(tag); }