Rsolved :)

I find reason.

I have:

bind(Osoba.class).to(Władysław.class);

in module definition and when I remove this line everything work fine.

Pozdrawiam
Bartek "Koziołek" Kuczyński
http://koziolekweb.pl
Lepiej pomyśleć dwa razy i zacząć programować
niż dwa razy programować i potem zacząć myśleć
 \     /
 ~00~
  \_/
   |||


W dniu 3 stycznia 2012 01:30 użytkownik Sam Berlin <[email protected]>napisał:

>  There's a few things off with the code you pasted that may be throwing
> assistedinject off.
>
> The factory interface should just be:
> *  interface Factory {*
> *     Baz create(@Assisted("foo") Long p1, @Assisted("bar") Long p2);*
> *  }*
> .. that is, no @Named(..) binding on the 'create' method.
>
> Additionally, you added that you're expecting to have bindings like:
> *
> bind(Long.class).annotatedWith(Assisted.class).toInstance(System.nanoTime());
>   bind(Long.class).annotatedWith(Assisted.class).toInstance(4L); *
> ... but you actually _shouldn't_ have those bindings.  AssistedInject
> creates the assisted bindings for you automatically when you install the
> module & call the factory methods.
>
> Are you certain that TestowaRodzinaWładysława is injecting the factory (as
> opposed to injecting the assisted object (Władysław) & calling create on
> the factory?  The error looks like what would happen if you attempted to
> inject the assisted object directly.
>
> sam
>
> 2012/1/2 koziolek <[email protected]>
>
>> I have:
>>
>> public class Władysław implements Osoba {
>>
>>        @Inject
>>        public Władysław(@Named("tata") Osoba tata, @Mama Osoba mama,
>>                        @Assisted("dataUrodzenia") Long dataUrodzenia,
>>                        @Assisted("liczbaRąk") Long liczbaRąk) {
>>                super();
>>                this.tata = tata;
>>                this.mama = mama;
>>                this.dataUrodzenia = dataUrodzenia;
>>                this.liczbaRąk = liczbaRąk;
>>        }
>>
>> }
>>
>> A factory
>>
>> public interface WładysławFactory {
>>
>>        @Named("dataUrodzenia")
>>        public Władysław create(@Assisted("dataUrodzenia") Long
>> dataUrodzenia,
>>                        @Assisted("liczbaRąk") Long liczbaRąk);
>>
>> }
>>
>> And in module definition:
>>
>> install(new FactoryModuleBuilder().implement(Osoba.class,
>>
>>  Władysław.class).build(WładysławFactory.class));
>>
>> But when I call:
>>
>> Władysław władysław = factory.create(System.nanoTime(),
>> Random.nextLong(1, 10) );
>>
>> I get:
>>
>> 1) No implementation for java.lang.Long annotated with
>> @com.google.inject.assistedinject.Assisted(value=dataUrodzenia) was
>> bound.
>>  while locating java.lang.Long annotated with
>> @com.google.inject.assistedinject.Assisted(value=dataUrodzenia)
>>    for parameter 2 at
>> pl.koziolekweb.wjug.guice.base.Władysław.<init>(Władysław.java:26)
>>  at
>>
>> pl.koziolekweb.wjug.guice.base.TestowaRodzinaWładysława.configure(TestowaRodzinaWładysława.java:
>> 14)
>>
>> 2) No implementation for java.lang.Long annotated with
>> @com.google.inject.assistedinject.Assisted(value=liczbaRąk) was bound.
>>  while locating java.lang.Long annotated with
>> @com.google.inject.assistedinject.Assisted(value=liczbaRąk)
>>    for parameter 3 at
>> pl.koziolekweb.wjug.guice.base.Władysław.<init>(Władysław.java:26)
>>  at
>>
>> pl.koziolekweb.wjug.guice.base.TestowaRodzinaWładysława.configure(TestowaRodzinaWładysława.java:
>> 14)
>>
>>
>> I understand that i need to bindings like this:
>>
>>
>> bind(Long.class).annotatedWith(Assisted.class).toInstance(System.nanoTime());
>> bind(Long.class).annotatedWith(Assisted.class).toInstance(4L);
>>
>> but how can I put value to Assisted annotation? I'm looking somethong
>> like Names but I didn't find.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "google-guice" group.
>> 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.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> 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.
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
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.

Reply via email to