package org.skyscreamer.yoga.listener; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; /** * The RenderingListenerRegistry allows you to declare one or more objects that implement the * {@link org.skyscreamer.yoga.listener.RenderingListener} interface. These Rendering Listeners will process or * decorate the response from a Yoga call before it is returned to the user. * * <p> The RenderingListener objects are stored in an ordered collection, and will be processed in sequence for * each Yoga call.</p> * * @see RenderingListener */ public class RenderingListenerRegistry { protected Collection<RenderingListener> listeners; /** * Constructor to initialize the registry with a set of 0 or more listeners * * @param listeners The ordered collection of rendering listeners */ public RenderingListenerRegistry( RenderingListener... listeners ) { this.listeners = new ArrayList<RenderingListener>( Arrays.asList( listeners ) ); } /** * Constructor to initialize the registry with a set of listeners * * @param listeners The ordered collection of rendering listeners */ public RenderingListenerRegistry( Collection<RenderingListener> listeners ) { this.listeners = listeners; } /** * Retrieves the ordered collection of rendering listeners used by the registry * * @return The rendering listeners */ public Collection<RenderingListener> getListeners() { return Collections.unmodifiableCollection( listeners ); } /** * Adds a rendering listener to the end of the ordered collection used by the registry * * @param listener The rendering listener to add */ public void addListener( RenderingListener listener ) { listeners.add( listener ); } /** * Replaces the ordered collection of rendering listeners used by the registry * * @param listeners The new collection of rendering listeners */ public void setListeners( Collection<RenderingListener> listeners ) { this.listeners = listeners; } }