/* * 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.cocoon.portal.event; import org.apache.avalon.framework.component.Component; import org.apache.cocoon.ProcessingException; /** * This component manages the event handling mechanism in the portal. * The event mechanism is based on the publisher/subscriber principle. * An interested component (a {@link org.apache.cocoon.portal.event.Receiver} * can subscribe itself for a specific class (or classes) of events. * All Events have a common ancestor type {@link Event} and the event types are * identified by a (sub)class * * The old design which is now deprecated has been inspired by the paper by * Gupta, S., J. M. Hartkopf, and S. Ramaswamy, in Java Report, Vol. 3, No. 7, July 1998, 19-36, * "Event Notifier: A Pattern for Event Notification". * * EventManager brokers events between a <tt>Publisher</tt>, which produces events, * and a <tt>Subscriber</tt>, which handles the notification of events. * A <tt>Filter</tt> discards events not of interest to a subscriber. * * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a> * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a> * @author Mauro Talevi * * @version CVS $Id$ */ public interface EventManager extends Component { /** * Represents the role of the service */ String ROLE = EventManager.class.getName(); /** * Returns the Publisher with which events can be published. * @deprecated Use {@link #send(Event)} instead. */ Publisher getPublisher(); /** * Returns the Register with which subscribers can * subscribe and unsubscribe interest to given Events. * @deprecated Use {@link #subscribe(Receiver)} and {@link #unsubscribe(Receiver)}. */ Register getRegister(); /** * Process the events */ void processEvents() throws ProcessingException; /** * Publish an event. All registered receivers get notified. * @param event The event to broadcast. */ void send(Event event); /** * Subscribes a receiver for a specific type of event. */ void subscribe(Receiver receiver); /** * Unsubscribes a receiver for all events. */ void unsubscribe(Receiver receiver); }