package org.limewire.listener;
import org.limewire.util.Objects;
/**
* Default class for events that can carry data in addition to a source
* and an event type.
*/
public class DefaultDataSourceTypeEvent<S, T, D> extends DefaultSourceTypeEvent<S, T> implements DataSourceTypeEvent<D, S, T> {
private final D data;
public DefaultDataSourceTypeEvent(S source, T event, D data) {
super(source, event);
this.data = Objects.nonNull(data, "data");
}
public D getData() {
return data;
}
@Override
public int hashCode() {
int hash = super.hashCode();
hash = 31 * hash + data.hashCode();
return hash;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof DataSourceTypeEvent)) {
return false;
}
if(!super.equals(obj)) {
return false;
}
return data.equals(((DataSourceTypeEvent)obj).getData());
}
@Override
public String toString() {
return super.toString() + ", data: " + data;
}
}