Sorry, that should be
@Inject(optional=true) public Bar bar;
On Saturday, May 26, 2012 12:22:31 AM UTC-4, dmitrig wrote:
>
> Hi,
>
> Can anyone explain why this test fails? Optional injection points seem to
> be getting ignored when they occur on a provider inside a private module.
> The fact that this passes when you set optional=false leads me to believe
> that it might be a bug. Using guice 3.0.
>
> public static class Foo {
> public Bar bar;
> Foo(Bar bar) { this.bar = bar; }
> }
>
> static class Bar { }
>
> static class FooProvider implements Provider<Foo> {
> @Inject(optional=false) public Bar bar;
> public Foo get() {
> return new Foo(bar);
> }
> }
>
> static class ChildInjectorInjector {
> public Injector injector;
> @Inject
> ChildInjectorInjector(Injector injector) {
> this.injector = injector;
> }
> }
>
>
> @Test
> public void test() throws Exception {
> Injector i = Guice.createInjector(new PrivateModule() {
> @Override protected void configure() {
> bind(Bar.class);
> bind(Foo.class).toProvider(FooProvider.class);
> bind(ChildInjectorInjector.class);
> expose(ChildInjectorInjector.class);
> }
> });
> Injector ci = i.getInstance(ChildInjectorInjector.class).injector;
> Foo foo = ci.getInstance(Foo.class);
> assertTrue(foo.bar != null);
> }
>
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-guice/-/eyO2PManlt4J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.