/**
* Execute this target against the linked binding builder.
*/
protected <T> ScopedBindingBuilder bindKeyToTarget(
final Binding<T> binding, Binder binder, final Key<T> key) {
final Binder sourcedBinder = binder.withSource(binding.getSource());
return binding.acceptTargetVisitor(new BindingTargetVisitor<T, ScopedBindingBuilder>() {
public ScopedBindingBuilder visit(InstanceBinding<? extends T> binding) {
sourcedBinder.bind(key).toInstance(binding.getInstance());
return null;
}
public ScopedBindingBuilder visit(ProviderInstanceBinding<? extends T> binding) {
return sourcedBinder.bind(key).toProvider(binding.getProviderInstance());
}
public ScopedBindingBuilder visit(ProviderKeyBinding<? extends T> binding) {
return sourcedBinder.bind(key).toProvider(binding.getProviderKey());
}
public ScopedBindingBuilder visit(LinkedKeyBinding<? extends T> binding) {
return sourcedBinder.bind(key).to(binding.getLinkedKey());
}
public ScopedBindingBuilder visit(UntargettedBinding<? extends T> binding) {
return sourcedBinder.bind(key);
}
public ScopedBindingBuilder visit(ExposedBinding<? extends T> binding) {
throw new IllegalArgumentException("Non-module element");
}