Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-3274

Application-Scoped EventBus

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Later
    • 1.5-M3
    • None
    • wicket
    • None

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            jwcarman James Carman
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: