/** * Wrap a binding in a LensKit binding. * @param binding The binding to wrap. * @param <T> The bound type. * @return The LensKit binding wrapper. */ static <T> LenskitBinding<T> wrap(Binding<T> binding) { return wrap(binding, null); }
@Override public Binding<T> fixed() { return wrap(binding.fixed(), coercion); }
@Override public <T> LenskitBinding<T> bind(Class<T> type) { return LenskitBindingImpl.wrap(base.bind(type)); }
@Override public LenskitBinding<T> withQualifier(@Nonnull Class<? extends Annotation> qualifier) { return wrap(binding.withQualifier(qualifier), coercion); }
@Override public LenskitBinding<T> withQualifier(@Nonnull Annotation annot) { return wrap(binding.withQualifier(annot), coercion); }
@Override public LenskitBinding<T> exclude(@Nonnull Class<?> exclude) { return wrap(binding.exclude(exclude), coercion); }
@Override public LenskitBinding<T> unqualified() { return wrap(binding.unqualified(), coercion); }
@Override public LenskitBinding<T> shared() { return wrap(binding.shared(), coercion); }
@Override public LenskitBinding<T> withAnyQualifier() { return wrap(binding.withAnyQualifier(), coercion); }
@Override public LenskitBinding<T> unshared() { return wrap(binding.unshared(), coercion); }
@Override public <T> LenskitBinding<T> bind(Class<? extends Annotation> qual, Class<T> type) { return LenskitBindingImpl.wrap(super.bind(qual, type)); }
@Override public <T> LenskitBinding<T> bindAny(Class<T> type) { return LenskitBindingImpl.wrap(super.bindAny(type)); }
@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); }
/** * Wrap a binding in a LensKit binding. * @param binding The binding to wrap. * @param <T> The bound type. * @return The LensKit binding wrapper. */ static <T> LenskitBinding<T> wrap(Binding<T> binding) { return wrap(binding, null); }
@Override public LenskitBinding<T> unqualified() { return wrap(binding.unqualified(), coercion); }
@Override public LenskitBinding<T> withQualifier(@Nonnull Annotation annot) { return wrap(binding.withQualifier(annot), coercion); }
@Override public LenskitBinding<T> unshared() { return wrap(binding.unshared(), coercion); }
@Override public <T> LenskitBinding<T> bind(Class<? extends Annotation> qual, Class<T> type) { return LenskitBindingImpl.wrap(super.bind(qual, type)); }
@Override public <T> LenskitBinding<T> bindAny(Class<T> type) { return LenskitBindingImpl.wrap(super.bindAny(type)); }
@Override public <T> LenskitBinding<T> bind(Class<T> type) { return LenskitBindingImpl.wrap(base.bind(type)); }