001package org.javasimon.callback; 002 003import java.util.List; 004 005/** 006 * Composite {@link Callback} can hold more callbacks which allows to form callback trees where events are passed to 007 * sub-callbacks. Events can be filtered using {@link FilterCallback} which may be set up to pass only specific 008 * events under certain circumstances. 009 * This can be configured via Manager configuration facility. (Configuration part is still rather WIP.) 010 * <p/> 011 * Callback tree has no correlation with Simon tree in the {@link org.javasimon.Manager}). 012 * 013 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a> 014 * @since 3.2 015 */ 016public interface CompositeCallback extends Callback { 017 018 /** 019 * Returns the list of all child-callbacks. 020 * 021 * @return children list 022 */ 023 List<Callback> callbacks(); 024 025 /** 026 * Adds another callback as a child to this callback. 027 * 028 * @param callback added callback 029 */ 030 void addCallback(Callback callback); 031 032 /** 033 * Removes specified callback from this callback. 034 * 035 * @param callback removed child-callback 036 */ 037 void removeCallback(Callback callback); 038 039 /** Removes all callbacks from this callback. */ 040 void removeAllCallbacks(); 041}