To clarify a bit.

For every listener class registered, I want all subclasses of given listener
class to be added with the ListenerDispatcher#addListener() method. I want
the listening subclass to be eagerly added as listening as soon as the given
Scope starts.

Thanks for any help!

/C

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

> Thanks for the answer.
>
> I will try to refactor the code a bit (in a proper helper Module, rather
> than just a test class) to support registering with different scopes.
>
> The next step is to fix so that all classes subclassing the given class
> registered, should be added as listeners to the newly created
> ListenerDispatcher. This should be pretty straight forward. Just add a
> TypeListener for the class, and use the injector to get the
> ListenerDispatcher and do an addListener().
>
> I would have to force a injector.getInstance() for the TypeListener to get
> triggered tho, as most bindings are lazy. The only eager one is the eager
> singleton? I wouldn't want to force my listening classes to be singletons
> tho. Any thoughts about that?
>
>
> On Mon, Nov 15, 2010 at 5:31 AM, Colin Decker <[email protected]> wrote:
>
>> 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]<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