package tc.oc.commons.bukkit.event.targeted; import com.google.inject.Binder; import com.google.inject.TypeLiteral; import com.google.inject.binder.LinkedBindingBuilder; import tc.oc.commons.core.inject.TypeMapBinder; public class TargetedEventRouterBinder { private final TypeMapBinder<Object, TargetedEventRouter<?>> typeMapBinder; public TargetedEventRouterBinder(Binder binder) { typeMapBinder = new TypeMapBinder<Object, TargetedEventRouter<?>>(binder){}; } public <T> LinkedBindingBuilder<TargetedEventRouter<? super T>> bindEvent(Class<T> type) { return bindEvent(TypeLiteral.get(type)); } public <T> LinkedBindingBuilder<TargetedEventRouter<? super T>> bindEvent(TypeLiteral<T> type) { return (LinkedBindingBuilder) typeMapBinder.addBinding(type); } }