All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.impalaframework.extension.event.EventTask Maven / Gradle / Ivy

The newest version!
package org.impalaframework.extension.event;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.impalaframework.exception.ExecutionException;
import org.springframework.util.Assert;

/**
 * Task which will holds an {@link EventListener}, and invokes the {@link EventListener#onEvent(Event)} method
 * when the {@link #run()} method is called.
 */
public class EventTask implements Runnable {

    private static final Log logger = LogFactory.getLog(EventTask.class);
    
    final private Event event;

    final private EventListener eventListener;

    public EventTask(
            final Event Event,
            final EventListener eventListener) {
        super();
        Assert.notNull(Event);
        Assert.notNull(eventListener);
        this.event = Event;
        this.eventListener = eventListener;
    }

    public void run() {
        runInternal();
    }

    protected void runInternal() {
        try {
            eventListener.onEvent(event);
        } catch (Throwable e) {
            logger.error("Uncaught error running event: " + event + ". Message: " + e.getMessage(), e);
            if (e instanceof RuntimeException) {
                throw (RuntimeException) e;
            } else {
                throw new ExecutionException(e);
            }
        }
    }

    protected Event getEvent() {
        return event;
    }

    protected EventListener getEventListener() {
        return eventListener;
    }

    @Override
    public String toString() {
        return "EventTask [event=" + event + ", eventListener=" + eventListener + "]";
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy