com.autentia.wuija.widget.notification.EventProcessor.java Source code

Java tutorial

Introduction

Here is the source code for com.autentia.wuija.widget.notification.EventProcessor.java

Source

/**
 * Copyright 2008 Autentia Real Business Solutions S.L.
 * 
 * This file is part of Autentia WUIJA.
 * 
 * Autentia WUIJA is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, version 3 of the License.
 * 
 * Autentia WUIJA is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with Autentia WUIJA. If not, see <http://www.gnu.org/licenses/>.
 */

package com.autentia.wuija.widget.notification;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.springframework.util.Assert;

/**
 * Esta clase se encarga de registrar los listeners y de lanzar eventos en todos los listeners registrados capaces de
 * procesar el tipo de evento que se est lanzando.
 */
public class EventProcessor {

    private final List<WidgetListener> listeners = new ArrayList<WidgetListener>();

    /**
     * Aade un nuevo listener para procesar eventos.
     * 
     * @param widgetListener el listener que se quiere aadir.
     */
    public void addListener(WidgetListener widgetListener) {
        Assert.notNull(widgetListener, "widgetListener cannot be null");
        listeners.add(widgetListener);
    }

    /**
     * Dispara el evento <code>widgetEvent</code> en todo los listeners que estn registrados y sean capaces de procesar
     * ese tipo de evento.
     * 
     * @param widgetEvent el evento que se quiere lanzar.
     */
    public void fireEvent(WidgetEvent widgetEvent) {
        for (WidgetListener listener : listeners) {
            if (widgetEvent.isAppropriateListener(listener)) {
                widgetEvent.processListener(listener);
            }
        }
    }

    /**
     * Devuelve si hay registrado o no algn listener.
     * 
     * @return true si no hay registrado ningn listener, false en otro caso.
     */
    public boolean someoneIsListening() {
        return !listeners.isEmpty();
    }

    /**
     * Devuelve si hay registrado o no algn listener del tipo que se pasa como parmetro.
     * 
     * @return true si hay registrado algn listener del tipo especificado, false en otro caso.
     */
    public boolean someoneIsListening(Class<? extends WidgetListener> listenerClass) {
        for (WidgetListener listener : listeners) {
            if (listenerClass.isAssignableFrom(listener.getClass())) {
                return true;
            }
        }
        return false;
    }

    /**
     * Devuelve una lista no modificable de todos los {@link WidgetListener} registrados.
     * 
     * @return lista no modificable de todos los {@link WidgetListener} registrados.
     */
    public List<WidgetListener> getListeners() {
        return Collections.unmodifiableList(listeners);
    }
}