That's approximately what I'd do, except I'd pull the TypeLiteral creation
out into another method that returns a TypeLiteral<ListenerDispatcher<T>>
(by casting). I would also just use a Provider that calls
ListenerDispatcher.create and let singleton scope take care of the single
instance.

Colin


2010/11/14 Christopher Östlund <[email protected]>

> I came up with the solution:
>
> http://pastie.org/private/upjgliufrvrknv4bpzbhw
>
> <http://pastie.org/private/upjgliufrvrknv4bpzbhw>Maybe it can be done a
> bit less verbose ^^
>
> /C
>
> 2010/11/15 Christopher Östlund <[email protected]>
>
> Thanks for the answers!
>>
>> I think I was a bit unclear on what I was searching for. I think it will
>> be a bit easier if I split the tasks at hand.
>>
>> Is there a way to programatically bind this:
>>
>> @Provides
>> @Singleton
>> public ListenerDispatcher<ZoneActivationListener>
>> getZoneActivationListenerDispatcher() {
>>  return ListenerDispatcher.create(ZoneActivationListener.class);
>> }
>>
>> Byt only specifying ZoneActionvationListener.class? I would somehow need
>> to create a Key for ListenerDispatcher<ZoneActiovationListener> to match the
>> result of ListenerDispatcher.create(ZoneActivationListener.class);
>>
>>
>> Thanks!
>>
>> On Sat, Nov 13, 2010 at 10:52 AM, Jean-Francois Poilpret <
>> [email protected]> wrote:
>>
>>> If you need an events dispatching system, you may want to take a look at
>>> guts-events (http://kenai.com/projects/guts) which is an Event Bus
>>> system based on Guice.
>>> Or you may take a look at guts-events and get some inspiration from there
>>> and adapt it to your own system ;-)
>>>
>>> Jean-Francois
>>>
>>>
>>> On 12-11-2010 23:14, [email protected] wrote:
>>>
>>>> Hello list,
>>>>
>>>> Inspired by the neat configuration Module for guice persist, I decided
>>>> to make something similar for a small subpart of my project. I'm not
>>>> fully sure how to create it though.
>>>>
>>>> I want to create a module which sets up the relationship between
>>>> listeners and dispatchers in an event system. The event system is
>>>> based on a class called ListenerDispatcher<T>  [1]. I want the module
>>>> to work something like this:
>>>>
>>>> protected void configureEvents() {
>>>>     connect(ListeningInterface.class,
>>>> ClassImplementingListeningInterface.class);
>>>>     // .... and so on
>>>> }
>>>>
>>>> protected void configure() {
>>>>     configureEvents();
>>>> }
>>>>
>>>> What I want that line to do is:
>>>>
>>>> ListenerDispatcher<ListeningInterface>  listenerDispatcher =
>>>> ListenerDispatcher.create(ListeningInterface.class);
>>>> listenerDispatcher.addListener(classImplementingListeningInterface);
>>>>
>>>> Initially I wouldn't need to be able to configure the scope of the
>>>> binding. I just want to reduce the boiler plate to that single line
>>>> (compared to a lot of configuration atm). My initial thoughts is that
>>>> I store all the connect bindings in a map or similar until the
>>>> configure() method of AbstractModule is run. In configure I bind/
>>>> create all the ListenerDispatchers. So far it's fine, I'm not just
>>>> sure how to runt the addListener part.
>>>>
>>>> Thanks for any pointers or help!
>>>>
>>>> [1] http://pastie.org/private/e20zdyb9nwbmjgq9vgkjhw
>>>>
>>>>
>>>>
>>>>
>>> --
>>> 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.
>

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