Omg, that's what I didn't get ! Hat you can bind to another type literal !

THANKS !

Cheers,

On Thu, Sep 23, 2010 at 5:08 PM, Lucas Cavalcanti <[email protected]>wrote:

> you can use TypeLiteral in both ways:
>
> bind(new TypeLiteral<UiHandlersStrategy<MyUiHandlers>>() { }).to(new
> TypeLiteral<ProviderUiHandlersStrategyImpl<MyUiHandlers>>(){});
>
> []'s
>
> On Thu, Sep 23, 2010 at 5:57 PM, Christian Goudreau <
> [email protected]> wrote:
>
>> bind(new TypeLiteral<UiHandlersStrategy<MyUiHandlers>>() {
>> }).to(ProviderUiHandlersStrategyImpl.class);
>>
>> ProviderUiHandlersStrategyImpl here is a raw type... is this problematic ?
>> Unfortunatly, to instance isn't available in Gin :(
>>
>> What I do now and that does work is that instead of binding
>> UiHandlerStrategy I use ProviderUiHandlerStrategyImpl<MyUiHanlders> in my
>> class that needs it. But I kinda wanted to get rid of my implementation and
>> use the interface instead.
>>
>> On Thu, Sep 23, 2010 at 4:34 PM, Lucas Cavalcanti <[email protected]
>> > wrote:
>>
>>> I tried to reproduce your error, but i couldn't.
>>>
>>> The problem is:
>>>
>>> You have a generic interface, but you are binding only its raw type...
>>>
>>> Suppose you want to receive a List<Something> as dependency...
>>> this way you must do something like:
>>>
>>>  bind(new TypeLiteral<List<Something>>() {}).toInstance(new 
>>> ArrayList<Something>());
>>>
>>>
>>> http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_to_inject_class_with_generic_type?<http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions>
>>>
>>> On Thu, Sep 23, 2010 at 5:09 PM, Christian Goudreau <
>>> [email protected]> wrote:
>>>
>>>> This one:
>>>> bind(MemberView.MyUiHandlers.class).to(MemberPresenter.class);
>>>>
>>>> How can I bind H ? And I will have to remove the upper one if I don't
>>>> want to get and error from Guive.
>>>>
>>>> Thanks btw for every input I had
>>>>
>>>> 2010/9/23 Yaxin Liu 刘亚新 <[email protected]>
>>>>
>>>>> TypeLiteral?
>>>>>
>>>>>
>>>>> On Thu, Sep 23, 2010 at 7:50 AM, Christian Goudreau <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Yeah, well, that doesn't work :D It's still complaining about H
>>>>>> extends UiHandlers that isn't bind :D (H = MyUiHandlers and is bound)
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>>
>>>>>> On Thu, Sep 23, 2010 at 10:47 AM, Lucas Cavalcanti <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> When your class has a generic type, I think you have to do the
>>>>>>> generic binding explicity:
>>>>>>>
>>>>>>> bind(new
>>>>>>> TypeLiteral<UiHandlersStrategy<MyUiHandlers>>(){}).annotatedWith(...).to(...);
>>>>>>>
>>>>>>> You could try to use wildcards, but I'm not sure if it works
>>>>>>>
>>>>>>> []'s
>>>>>>> Lucas
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Sep 23, 2010 at 11:35 AM, Christian Goudreau <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Anyone else ?
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Sep 22, 2010 at 11:34 AM, Christian Goudreau <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> bind(MemberView.MyUiHandlers.class).to(MemberPresenter.class);
>>>>>>>>>
>>>>>>>>>     bind(UiHandlersStrategy.class).annotatedWith(ProviderUiHandler
>>>>>>>>> .class).to(ProviderUiHandlersStrategyImpl.class);
>>>>>>>>>
>>>>>>>>>     bind(UiHandlersStrategy.class).annotatedWith(SetterUiHandler.
>>>>>>>>> class).to(SetterUiHandlersStrategyImpl.class);
>>>>>>>>>
>>>>>>>>> public interface UiHandlersStrategy<H extends UiHandlers> {
>>>>>>>>>
>>>>>>>>>   void setUiHandlers(H uiHandlers);
>>>>>>>>>
>>>>>>>>>   H getUiHandlers();
>>>>>>>>>
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> public class ProviderUiHandlersStrategyImpl<H extends UiHandlers>
>>>>>>>>> implements
>>>>>>>>>
>>>>>>>>>     UiHandlersStrategy<H> {
>>>>>>>>>
>>>>>>>>>   private final Provider<H> uiHandlersProvider;
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Here's more informations. What I don't get is that MyUiHandlers is
>>>>>>>>> declared... but my guest is that it is AFTER the other one...
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Sep 22, 2010 at 11:16 AM, Fred Faber <[email protected]>wrote:
>>>>>>>>>
>>>>>>>>>> Can you post your binding?
>>>>>>>>>>
>>>>>>>>>> You should be able to do this with something to the effect of:
>>>>>>>>>>
>>>>>>>>>> bind(new TypeLiteral<UiHandlersStrategy<MyUiHandlers>(){})
>>>>>>>>>>   .to(...your impl);
>>>>>>>>>>
>>>>>>>>>> -Fred
>>>>>>>>>>
>>>>>>>>>> On Mon, Sep 20, 2010 at 5:10 PM, Christian Goudreau <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Humm I think my subject is weird... anyway :D
>>>>>>>>>>>
>>>>>>>>>>> Here's what I want to do:
>>>>>>>>>>>
>>>>>>>>>>>   @Inject
>>>>>>>>>>>
>>>>>>>>>>>   public MemberView(@ProviderUiHandler 
>>>>>>>>>>> finalUiHandlersStrategy<MyUiHandlers> 
>>>>>>>>>>> providerUiHandlersStrategyImpl) {
>>>>>>>>>>> My error:
>>>>>>>>>>> 17:02:42.928 [ERROR] [apapul] No implementation bound for key
>>>>>>>>>>> Key[type=ca.ulaval.apapul.client.mvp.strategies.uihandlers.UiHandlersStrategy<ca.ulaval.apapul.client.core.member.MemberView$MyUiHandlers>,
>>>>>>>>>>> [email protected]]
>>>>>>>>>>>
>>>>>>>>>>> MyUiHandlers is also an interface binded by Gin/Guice. Using the
>>>>>>>>>>> implementation class instead the interface work, but I wanted to 
>>>>>>>>>>> use the
>>>>>>>>>>> interface with an annotation.
>>>>>>>>>>>
>>>>>>>>>>> Btw, is this worth the pain ? That seem to be almost as if I was
>>>>>>>>>>> using the implementation class anyway...
>>>>>>>>>>>
>>>>>>>>>>> Thanks and cheers,
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Christian Goudreau
>>>>>>>>>>> www.arcbees.com
>>>>>>>>>>>
>>>>>>>>>>>  --
>>>>>>>>>>> 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]<google-guice%[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]<google-guice%[email protected]>
>>>>>>>>>> .
>>>>>>>>>> For more options, visit this group at
>>>>>>>>>> http://groups.google.com/group/google-guice?hl=en.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Christian Goudreau
>>>>>>>>> www.arcbees.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Christian Goudreau
>>>>>>>> www.arcbees.com
>>>>>>>>
>>>>>>>>  --
>>>>>>>> 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]<google-guice%[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]<google-guice%[email protected]>
>>>>>>> .
>>>>>>> For more options, visit this group at
>>>>>>> http://groups.google.com/group/google-guice?hl=en.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Christian Goudreau
>>>>>> www.arcbees.com
>>>>>>
>>>>>>  --
>>>>>> 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]<google-guice%[email protected]>
>>>>>> .
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/google-guice?hl=en.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Yaxin
>>>>>
>>>>>  --
>>>>> 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]<google-guice%[email protected]>
>>>>> .
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/google-guice?hl=en.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Christian Goudreau
>>>> www.arcbees.com
>>>>
>>>>  --
>>>> 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]<google-guice%[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]<google-guice%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-guice?hl=en.
>>>
>>
>>
>>
>> --
>> Christian Goudreau
>> www.arcbees.com
>>
>>  --
>> 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]<google-guice%[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]<google-guice%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>



-- 
Christian Goudreau
www.arcbees.com

-- 
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