package envoy.event;
import java.io.Serializable;
import dev.kske.eventbus.IEvent;
/**
* This class serves as a convenience base class for all events. It implements
* the {@link IEvent} interface and provides a generic value. For events without
* a value there also is {@link envoy.event.Event.Valueless}.
*
* Project: envoy-common
* File: Event.java
* Created: 04.12.2019
*
* @author Kai S. K. Engelbart
* @param the type of the Event
* @since Envoy v0.2-alpha
*/
public abstract class Event implements IEvent, Serializable {
protected final T value;
private static final long serialVersionUID = 0L;
protected Event(T value) { this.value = value; }
/**
* @return the data associated with this event
*/
public T get() { return value; }
@Override
public String toString() { return String.format("%s[value=%s]", this.getClass().getSimpleName(), value); }
/**
* Serves as a super class for events that do not carry a value.
*
* Project: envoy-common
* File: Event.java
* Created: 11 Feb 2020
*
* @author Kai S. K. Engelbart
* @since Envoy Common v0.2-alpha
*/
public static abstract class Valueless extends Event {
private static final long serialVersionUID = 0L;
protected Valueless() { super(null); }
@Override
public String toString() { return this.getClass().getSimpleName(); }
}
}