package xapi.event.api; import xapi.util.api.RemovalHandler; import static xapi.util.api.SerializableWrapper.serializableId; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Objects; /** * Created by James X. Nelson (james @wetheinter.net) on 7/16/16. */ public class EventHandlerWithIdentity<Source, Event extends IsEvent<Source>> implements EventHandler<Source, Event> { private final Serializable id; public final EventHandler<Source, Event> wrapped; public EventHandlerWithIdentity(@NotNull Serializable id, @NotNull EventHandler<Source, Event> wrapped) { this.id = serializableId(id); this.wrapped = wrapped; } public boolean handleEvent(Event e) { return wrapped.handleEvent(e); } @Override public void storeRemover(RemovalHandler remover) { wrapped.storeRemover(remover); } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof EventHandlerWithIdentity)) return false; final EventHandlerWithIdentity<?, ?> that = (EventHandlerWithIdentity<?, ?>) o; return Objects.equals(id, that.id); } @Override public int hashCode() { return id.hashCode(); } }