package ch.x42.terye.observation;
import javax.jcr.RepositoryException;
import javax.jcr.observation.EventJournal;
import javax.jcr.observation.EventListener;
import javax.jcr.observation.EventListenerIterator;
import javax.jcr.observation.ObservationManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.x42.terye.SessionImpl;
public class ObservationManagerImpl implements ObservationManager {
private final Logger logger = LoggerFactory.getLogger(getClass());
private SessionImpl session;
private ObservationDispatcher dispatcher;
public ObservationManagerImpl(SessionImpl session,
ObservationDispatcher dispatcher) {
this.session = session;
this.dispatcher = dispatcher;
}
@Override
public void addEventListener(EventListener listener, int eventTypes,
String absPath, boolean isDeep, String[] uuid,
String[] nodeTypeName, boolean noLocal) throws RepositoryException {
logger.debug("addEventListener(" + listener.getClass() + ", "
+ Integer.toBinaryString(eventTypes) + ", " + absPath + ")");
EventFilter filter = new EventFilter(eventTypes, absPath, isDeep, uuid,
nodeTypeName, noLocal, session);
EventConsumer consumer = new EventConsumer(session, listener, filter);
dispatcher.addConsumer(consumer);
}
public void dispatchEvents(EventCollection events) {
dispatcher.dispatchEvents(events);
}
@Override
public void removeEventListener(EventListener listener)
throws RepositoryException {
EventConsumer consumer = new EventConsumer(session, listener, null);
dispatcher.removeConsumer(consumer);
}
@Override
public EventListenerIterator getRegisteredEventListeners()
throws RepositoryException {
return new EventListenerIteratorImpl(dispatcher.getConsumers());
}
@Override
public void setUserData(String userData) throws RepositoryException {
// TODO Auto-generated method stub
}
@Override
public EventJournal getEventJournal() throws RepositoryException {
// TODO Auto-generated method stub
return null;
}
@Override
public EventJournal getEventJournal(int eventTypes, String absPath,
boolean isDeep, String[] uuid, String[] nodeTypeName)
throws RepositoryException {
// TODO Auto-generated method stub
return null;
}
}