/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.graph; import java.util.*; /** The component of a graph responsible for managing events and listeners. The interface extends GraphListener because most of the notificiations are the same; the special case to note is that an event manager expects to be handed iterator events as lists, not as iterators. */ public interface GraphEventManager extends GraphListener { /** Attached <code>listener</code> to this manager; notification events sent to the manager are sent to all registered listeners. A listener may be registered multiple times, in which case it's called multiple times per event. A listener will be notified of an event if it is registered before the Graph method call that initiated the event, and was not unregistered before that method call returned. In addition, a listener <em>may</em> (or may not) be notified of an event if it is registered before such a method returns or is unregistered after such a method is called. For example, it may unregister itself in response to the event. If the registration and/or unregistration occur on different threads the usual thread uncertainties in such statements apply. @param listener a listener to be fed events @return this manager, for cascading */ GraphEventManager register( GraphListener listener ); /** If <code>listener</code> is attached to this manager, detach it, otherwise do nothing. Only a single registration is removed. @param listener the listener to be detached from the graph @return this manager, for cascading */ GraphEventManager unregister( GraphListener listener ); /** Answer true iff there is at least one attached listener. @return true iff there is at least one attached listener */ boolean listening(); /** Notify all attached listeners that an iterator [of triples] has been added to the graph; its content has been captured in the list <code>triples</code>. */ void notifyAddIterator( Graph g, List<Triple> triples ); /** Notify all attached listeners that an iterator [of triples] has been removed from the graph; its content has been captured in the list <code>triples</code>. */ void notifyDeleteIterator( Graph g, List<Triple> triples ); }