package tc.oc.commons.core.event;
import java.util.logging.Level;
import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.common.eventbus.SubscriberExceptionHandler;
import tc.oc.commons.core.logging.Loggers;
@Singleton
public class EventExceptionHandler implements SubscriberExceptionHandler {
private final Loggers loggers;
@Inject EventExceptionHandler(Loggers loggers) {
this.loggers = loggers;
}
@Override
public void handleException(Throwable exception, SubscriberExceptionContext context) {
loggers.get(context.getSubscriber().getClass()).log(
Level.SEVERE,
"Exception dispatching " + context.getEvent().getClass().getName() +
" to " + context.getSubscriber().getClass().getName() +
"#" + context.getSubscriberMethod().getName(),
exception
);
}
}