Author: echatellier Date: 2010-06-04 15:46:55 +0200 (Fri, 04 Jun 2010) New Revision: 96 Url: http://nuiton.org/repositories/revision/wikitty/96 Log: Add an options for cache to listener for modification on service (default to not listen) Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 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-04 12:40:33 UTC (rev 95) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceCached.java 2010-06-04 13:46:55 UTC (rev 96) @@ -23,8 +23,12 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Properties; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + /** * Override some method of WikittyService to use cache * @@ -36,19 +40,65 @@ */ public class WikittyServiceCached implements WikittyService { + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(WikittyServiceNotifier.class); + + /** + * Utiliser pour mettre à jour le cache en ecoutant les evenements + * sur le service. + * + * Le service {@link #ws} doit supporter l'enregistrement de listener. + */ + static public final String WIKITTY_CACHE_LISTENEVENTS_OPTION = "wikitty.service.cache.listenevents"; + protected WikittyCache cache = null; protected WikittyService ws; - + + /** + * Default constructor. + * + * @param ws delegate service + */ public WikittyServiceCached(WikittyService ws) { + this(ws, null); + } + + /** + * Constructor with configuration. + * + * @param ws delegate service + * @param props properties (can be null) + */ + public WikittyServiceCached(WikittyService ws, Properties props) { cache = WikittyCache.getInstance(); this.ws = ws; - - // add service listener for synchronisation - // listener des remote event - addWikittyServiceListener(cache, ServiceListenerType.REMOTE); + + registerWikittyServiceListener(props); } + + /** + * Add cache as service listener if configuration request it. + * + * @param props properties (can be null) + */ + protected void registerWikittyServiceListener(Properties props) { + if (props != null) { + // add notifier as listener + String listenEvents = props.getProperty(WIKITTY_CACHE_LISTENEVENTS_OPTION, "false"); + if ("true".equalsIgnoreCase(listenEvents)) { + // add service listener for synchronisation + // listener des remote event + addWikittyServiceListener(cache, ServiceListenerType.REMOTE); + + if (log.isDebugEnabled()) { + log.debug("Listen remote event on service"); + } + } + } + } + @Override public void addWikittyServiceListener(WikittyServiceListener listener, ServiceListenerType type) { ws.addWikittyServiceListener(listener, type); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-06-04 12:40:33 UTC (rev 95) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyServiceNotifier.java 2010-06-04 13:46:55 UTC (rev 96) @@ -75,10 +75,10 @@ /** Wikitty service listener (all event). */ protected ListenerSet<WikittyServiceListener> allWikittyServiceListeners; - + /** Wikitty service listener (only for local event). */ protected ListenerSet<WikittyServiceListener> localWikittyServiceListeners; - + /** Wikitty service listener (only for remote event). */ protected ListenerSet<WikittyServiceListener> remoteWikittyServiceListeners;
participants (1)
-
echatellier@users.nuiton.org