You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Rodolfo Hansen (JIRA)" <ji...@apache.org> on 2010/12/19 08:14:04 UTC

[jira] Commented: (WICKET-3274) Application-Scoped EventBus

    [ https://issues.apache.org/jira/browse/WICKET-3274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12972928#action_12972928 ] 

Rodolfo Hansen commented on WICKET-3274:
----------------------------------------

This seems like a very good idea, 

I would like to see the components messaging and wicket-push take this into account.

I am very interested in seeing how this develops.

> Application-Scoped EventBus
> ---------------------------
>
>                 Key: WICKET-3274
>                 URL: https://issues.apache.org/jira/browse/WICKET-3274
>             Project: Wicket
>          Issue Type: New Feature
>          Components: wicket
>    Affects Versions: 1.5-M3
>            Reporter: James Carman
>
> It would be nice if Wicket had an application-scoped "event bus" that users could plug into to receive event notifications.  Right now, there are multiple points where you can subscribe to events (and no "global" place to subscribe to AjaxRequestTarget.IListener events).  Wouldn't it be better if you could just do:
> Application.get().getEventBus().subscribe(IRequestCycleListener.class, myListener);
> or perhaps:
> Application.get().getEventBus().getChannel(IRequestCycleListener.class).subscribe(myListener);
> To fire events, you would do something like:
> Application.get().getEventBus().publish(IRequestCycleListener.class).onBeginRequest(requestCycle);
> or
> Application.get().getEventBus().getChannel(IRequestCycleListener.class).publish().onBeginRequest(requestCycle);
> Or course, this approach uses proxies (the publish methods return proxies which let you fire the events to all listeners) and I know they are considered somewhat taboo, but I think this is a good use of them and I really don't see how debugging this could be that difficult really.  It would only need to use JDK proxies, because we'd be dealing with listener interfaces only.  The benefit of this is that there's just one way to publish/subscribe events in Wicket and it makes it easier for folks to "plug in."  They don't have to override a factory method somewhere to make sure they add their listener or anything.  They just ask for the bus and subscribe by listener interface.
> Now, I like the idea of subscribing to a "channel" by means of the listener interface, but I'm open to suggestions if other folks don't really like that idea.  I like the type-safety of it.
> I have some code, but I'm waiting for more discussion here before I submit a patch.  I'd have to get rid of all of the listener lists that are lying around and start having the events published through the bus.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.