package be.selckin.swu.events;
import be.selckin.swu.events.AnnotationEventDispatcher.EventException;
import com.google.common.base.Preconditions;
import org.apache.wicket.event.IEvent;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class PayloadAndEventCaller implements EventCaller {
private final Method method;
public PayloadAndEventCaller(Method method) {
this.method = Preconditions.checkNotNull(method);
}
@Override
public void call(Object obj, IEvent<?> event) {
try {
method.invoke(obj, event.getPayload(), event);
} catch (IllegalAccessException e) {
throw new EventException("Failed to call payload & event @OnEvent method " + method + " on " + obj, e);
} catch (InvocationTargetException e) {
throw new EventException("Failed to call payload & event @OnEvent method " + method + " on " + obj, e);
}
}
}