Author: tchemit Date: 2008-04-03 21:51:16 +0000 (Thu, 03 Apr 2008) New Revision: 320 Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/AbstractVCSHandler.java Log: add VCSHandlerEvent to manage life cycle of an handler (init - open - close) Modified: trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/AbstractVCSHandler.java =================================================================== --- trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/AbstractVCSHandler.java 2008-04-03 21:50:11 UTC (rev 319) +++ trunk/lutinvcs/lutinvcs-core/src/main/java/org/codelutin/vcs/AbstractVCSHandler.java 2008-04-03 21:51:16 UTC (rev 320) @@ -22,6 +22,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.util.FileUtil; +import org.codelutin.util.ListenerSet; +import org.codelutin.vcs.VCSHandlerEvent.Type; import java.io.File; import java.io.FileFilter; @@ -51,6 +53,8 @@ protected final String confLocalEntriesFilename; protected final VCSConfig config; + protected ListenerSet<VCSHandlerEventListener> listeners = new ListenerSet<VCSHandlerEventListener>(); + protected AbstractVCSHandler(VCSConfig config, final String vCSConfLocalDirName, String vCSConfLocalEntriesFilename) { this.config = config; this.confLocalDirName = vCSConfLocalDirName; @@ -65,6 +69,7 @@ return dir.isFile() || (!vCSConfLocalDirName.equals(dir.getName()) && !"CVS".equals(dir.getName())); } }; + fireInit(); } public VCSConfig getConfig() { @@ -112,6 +117,49 @@ return result; } + public void addVCSHandlerEventListener(VCSHandlerEventListener l) { + listeners.add(l); + } + + public void removeVCSHandlerEventListener(VCSHandlerEventListener l) { + listeners.remove(l); + } + + public void open() { + fireOpen(); + } + + public void close() { + fireClose(); + } + + protected void fireInit() { + VCSHandlerEvent e = new VCSHandlerEvent(this, Type.INIT); + for (VCSHandlerEventListener l : listeners) { + l.init(e); + } + } + + protected void fireOpen() { + VCSHandlerEvent e = new VCSHandlerEvent(this, Type.OPEN); + for (VCSHandlerEventListener l : listeners) { + l.open(e); + } + } + + protected void fireClose() { + VCSHandlerEvent e = new VCSHandlerEvent(this, Type.CLOSE); + for (VCSHandlerEventListener l : listeners) { + l.close(e); + } + } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + close(); + } + protected void getFiles0(File directory, List<String> result, String prefix) { //TODO put the hardcored value in a property!!! if (directory.getName().equals("data")) return;