added ListenerSupport for repositoryManagers

This commit is contained in:
Sebastian Sdorra
2010-09-08 17:27:16 +02:00
parent 66e342c823
commit e553f3fc34
6 changed files with 144 additions and 2 deletions

View File

@@ -0,0 +1,34 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sonia.scm;
/**
*
* @author Sebastian Sdorra
*
* @param <T>
*/
public interface ListenerSupport<T>
{
/**
* Method description
*
*
* @param listener
*/
public void addListener(T listener);
/**
* Method description
*
*
* @param listener
*/
public void removeListener(T listener);
}

View File

@@ -0,0 +1,66 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sonia.scm.repository;
//~--- JDK imports ------------------------------------------------------------
import java.util.HashSet;
import java.util.Set;
/**
*
* @author Sebastian Sdorra
*/
public abstract class AbstractRepositoryManager implements RepositoryManager
{
/**
* Method description
*
*
* @param listener
*/
@Override
public void addListener(RepositoryListener listener)
{
listenerSet.add(listener);
}
/**
* Method description
*
*
* @param listener
*/
@Override
public void removeListener(RepositoryListener listener)
{
listenerSet.remove(listener);
}
/**
* Method description
*
*
* @param repository
* @param event
*/
protected void fireEvent(Repository repository, RepositoryEvent event)
{
for (RepositoryListener listener : listenerSet)
{
listener.onEvent(repository, event);
}
}
//~--- fields ---------------------------------------------------------------
/** Field description */
private Set<RepositoryListener> listenerSet =
new HashSet<RepositoryListener>();
}

View File

@@ -0,0 +1,14 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sonia.scm.repository;
/**
*
* @author Sebastian Sdorra
*/
public enum RepositoryEvent { CREATE, MODIFY, DELETE }

View File

@@ -0,0 +1,27 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sonia.scm.repository;
/**
*
* @author Sebastian Sdorra
*/
public interface RepositoryListener
{
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @param repository
* @param event
*/
public void onEvent(Repository repository, RepositoryEvent event);
}

View File

@@ -9,6 +9,7 @@ package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
import sonia.scm.ListenerSupport;
import sonia.scm.Manager;
/**
@@ -16,7 +17,7 @@ import sonia.scm.Manager;
* @author Sebastian Sdorra
*/
public interface RepositoryManager
extends Manager<Repository, RepositoryException>
extends Manager<Repository, RepositoryException>, ListenerSupport<RepositoryListener>
{
/**