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].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.