@Override public void to(@Nonnull Class<? extends T> impl, boolean chained) { binding.to(impl, chained); }
@Override public LenskitBinding<T> withAnyQualifier() { return wrap(binding.withAnyQualifier(), coercion); }
@Override public LenskitBinding<T> withQualifier(@Nonnull Class<? extends Annotation> qualifier) { return wrap(binding.withQualifier(qualifier), coercion); }
@Override public void toNull(Class<? extends T> type) { binding.toNull(type); }
@Override public void toProvider(@Nonnull Class<? extends Provider<? extends T>> provider) { binding.toProvider(provider); }
@Override public LenskitBinding<T> shared() { return wrap(binding.shared(), coercion); }
@Override public LenskitBinding<T> exclude(@Nonnull Class<?> exclude) { return wrap(binding.exclude(exclude), coercion); }
@Override public Binding<T> fixed() { return wrap(binding.fixed(), coercion); }
@Override public void toNull() { binding.toNull(); }
@Override public void toProvider(@Nonnull Provider<? extends T> provider) { binding.toProvider(provider); }
@Override public LenskitBinding<T> shared() { return wrap(binding.shared(), coercion); }
@Override public LenskitBinding<T> exclude(@Nonnull Class<?> exclude) { return wrap(binding.exclude(exclude), coercion); }
@Override public Binding<T> fixed() { return wrap(binding.fixed(), coercion); }
@Override public void to(@Nonnull Class<? extends T> impl) { binding.to(impl); }
@Override public LenskitBinding<T> withQualifier(@Nonnull Annotation annot) { return wrap(binding.withQualifier(annot), coercion); }
@Override public <T> Binding<T> bindAny(Class<T> type) { return bind(type).withAnyQualifier(); }
@Override public void toNull() { binding.toNull(); }
@Override public void toProvider(@Nonnull Class<? extends Provider<? extends T>> provider) { binding.toProvider(provider); }
@Override public void to(@Nullable T instance) { T obj = instance; if (coercion != null && obj != null) { Optional<T> result = coercion.apply(instance); assert result != null; if (result.isPresent()) { obj = result.get(); } // otherwise, just try to use the object as-is, let Binding fail } binding.to(obj); }
@Override @SuppressWarnings("rawtypes") public Binding set(@Nonnull Class<? extends Annotation> param) { Preconditions.checkNotNull(param); // Parameter annotation appears on the alias target Class<? extends Annotation> real = Qualifiers.resolveAliases(param); final Parameter annot = real.getAnnotation(Parameter.class); if (annot == null) { throw new IllegalArgumentException(param.toString() + "has no Parameter annotation"); } Class<?> type = annot.value(); Binding<?> binding; if (type.equals(File.class)) { binding = LenskitBindingImpl.wrap(bind(File.class), new StringToFileConversion()); } else { binding = bind(annot.value()); } return binding.withQualifier(param); }