Mercurial > hg > blitz_stable
view src/org/dancres/blitz/cache/CacheListenerSet.java @ 27:511648fa4d64 Version 2.1
Version to 2.1
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Mon, 04 Jan 2010 13:00:40 +0000 |
parents | 3dc0c5604566 |
children |
line wrap: on
line source
package org.dancres.blitz.cache; import java.util.ArrayList; /** Utility class which handles aspects of CacheListener management including signalling of an event */ public class CacheListenerSet { public static final int LOADED = 1; public static final int FLUSHED = 2; public static final int DIRTIED = 3; private ArrayList theListeners = new ArrayList(); public CacheListenerSet() { } public void add(CacheListener aListener) { synchronized(theListeners) { if (! theListeners.contains(aListener)) { theListeners.add(aListener); } } } public void signal(int aSignal, Identifiable aTarget) { CacheListener[] myListeners; synchronized(theListeners) { myListeners = new CacheListener[theListeners.size()]; myListeners = (CacheListener[]) theListeners.toArray(myListeners); } for (int i = 0; i < myListeners.length; i++) { CacheListener myListener = myListeners[i]; switch (aSignal) { case LOADED: { myListener.loaded(aTarget); break; } case FLUSHED: { myListener.flushed(aTarget); break; } case DIRTIED: { myListener.dirtied(aTarget); break; } } } } }