package org.neo4j.rdf.sail.rmi; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.HashSet; import java.util.Set; import org.openrdf.sail.Sail; import org.openrdf.sail.SailChangedEvent; import org.openrdf.sail.SailChangedListener; class RmiSailChangedListenerCallbackImpl extends UnicastRemoteObject implements RmiSailChangedListenerCallback { private static class Event implements SailChangedEvent { private final Sail sail; private final boolean statementsAdded; private final boolean statementsRemoved; Event( Sail sail, boolean statementsAdded, boolean statementsRemoved ) { this.sail = sail; this.statementsAdded = statementsAdded; this.statementsRemoved = statementsRemoved; } public Sail getSail() { return sail; } public boolean statementsAdded() { return statementsAdded; } public boolean statementsRemoved() { return statementsRemoved; } } final Set<SailChangedListener> listeners = new HashSet<SailChangedListener>(); private final RmiSailClient sail; RmiSailChangedListenerCallbackImpl( RmiSailClient sail ) throws RemoteException { super(); this.sail = sail; } public boolean sailChanged( boolean statementsAdded, boolean statementsRemoved ) { SailChangedEvent event = new Event( sail, statementsAdded, statementsRemoved ); for ( SailChangedListener listener : listeners ) { listener.sailChanged( event ); } return sail.alive; } }