1 /* 2 * Copyright (C) 2003 Christian Cryder [christianc@granitepeaks.com] 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * 18 * $Id: Polymorphic.java,v 1.5 2004/02/01 05:16:28 christianc Exp $ 19 */ 20 package org.enhydra.barracuda.core.event; 21 22 import java.io.*; 23 import java.util.*; 24 25 /** 26 * This interface indicates an Event is Polymorphic, in 27 * the sense that firing it causes parent events to be fired 28 * first. For instance, if MyEvent extends PolymorphicEvent, 29 * firing MyEvent first causes a PolymorphicEvent to be fired 30 * because MyEvent _is_ a PolymorphicEvent. Kapish? 31 * 32 * This type of functionality makes it possible to install 33 * listeners on a parent event and be notified when any of the 34 * child events are fired...this is sometimes very useful. 35 * 36 * This interface has kind of the opposite meaning of the 37 * Exception interface. Events should never indicate both 38 * Exceptional and Polymorphic (and can't because both of these 39 * interfaces define describeEventChainingStrategy()) 40 */ 41 public interface Polymorphic { 42 /** 43 * Describe the event chaining stategy. This method really 44 * serves to ensure that objects cannot implement BOTH 45 * Polymorphic and Exceptional (it's got to be one or the other) 46 * 47 * @return string describing the event chain strategy 48 */ 49 public String describeEventChainingStrategy(); 50 } 51