Hi Emond, The names of the methods in that code is a bit misleading already... :-/ HttpSessionStore#bind() actually does nothing but calling HSS#onBind() which has no specialized implementations in Wicket core code. I.e. the new BindListener is similar to #onBind(). Both of them notify when a new Wicket Session is created.
The actual binding of the HttpSession is in org.apache.wicket.session.HttpSessionStore#getSessionId(Request, true) UnboudListener listens for unbinding of HttpSession ... On Thu, Jan 5, 2012 at 10:47 AM, Emond Papegaaij <[email protected]> wrote: > About the name: the BindListener is called before the session is actually > bound, it is called from the bind method, just after onBind. The > UnboundListener is called after is session is unbound, from the valueUnbound > method. I think the name is correct as it is. > > About the commented methods: I actually forgot about them :) They do serve a > purpose though, as people can see these methods will be added (are already > added) to wicket 6. Shall I remove them? > > Emond > > > On Thu, Jan 5, 2012 at 8:42 AM, Martin Grigorov <[email protected]> > wrote: >> >> On Wed, Jan 4, 2012 at 8:55 PM, <[email protected]> wrote: >> > Updated Branches: >> > refs/heads/wicket-1.5.x ec53d1b75 -> b01790689 >> > >> > >> > WICKET-4212: Add ISessionStore BindListener >> > >> > >> > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo >> > Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b0179068 >> > Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b0179068 >> > Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b0179068 >> > >> > Branch: refs/heads/wicket-1.5.x >> > Commit: b01790689f54327ba755e5250dfe7d15c8059c06 >> > Parents: eb86ba3 >> > Author: Emond Papegaaij <[email protected]> >> > Authored: Wed Nov 9 15:31:56 2011 +0100 >> > Committer: Emond Papegaaij <[email protected]> >> > Committed: Wed Jan 4 17:56:13 2012 +0100 >> > >> > ---------------------------------------------------------------------- >> > .../apache/wicket/session/HttpSessionStore.java | 34 +++++++++++++ >> > .../org/apache/wicket/session/ISessionStore.java | 38 >> > +++++++++++++++ >> > 2 files changed, 72 insertions(+), 0 deletions(-) >> > ---------------------------------------------------------------------- >> > >> > >> > >> > http://git-wip-us.apache.org/repos/asf/wicket/blob/b0179068/wicket-core/src/main/java/org/apache/wicket/session/HttpSessionStore.java >> > ---------------------------------------------------------------------- >> > diff --git >> > a/wicket-core/src/main/java/org/apache/wicket/session/HttpSessionStore.java >> > b/wicket-core/src/main/java/org/apache/wicket/session/HttpSessionStore.java >> > index 68e2a1a..07d3e6d 100644 >> > --- >> > a/wicket-core/src/main/java/org/apache/wicket/session/HttpSessionStore.java >> > +++ >> > b/wicket-core/src/main/java/org/apache/wicket/session/HttpSessionStore.java >> > @@ -55,6 +55,8 @@ public class HttpSessionStore implements ISessionStore >> > /** */ >> > private final Set<UnboundListener> unboundListeners = new >> > CopyOnWriteArraySet<UnboundListener>(); >> > >> > + private final Set<BindListener> bindListeners = new >> > CopyOnWriteArraySet<BindListener>(); >> > + >> > /** >> > * Construct. >> > */ >> > @@ -102,6 +104,10 @@ public class HttpSessionStore implements >> > ISessionStore >> > { >> > // call template method >> > onBind(request, newSession); >> > + for (BindListener listener : getBindListeners()) >> > + { >> > + listener.bindingSession(request, >> > newSession); >> > + } >> > >> > HttpSession httpSession = getHttpSession(request, >> > false); >> > >> > @@ -354,6 +360,34 @@ public class HttpSessionStore implements >> > ISessionStore >> > } >> > >> > /** >> > + * Registers listener invoked when session is bound. >> > + * >> > + * @param listener >> > + */ >> > + public void registerBindListener(BindListener listener) >> > + { >> > + bindListeners.add(listener); >> > + } >> > + >> > + /** >> > + * Unregisters listener invoked when session is bound. >> > + * >> > + * @param listener >> > + */ >> > + public void unregisterBindListener(BindListener listener) >> > + { >> > + bindListeners.remove(listener); >> > + } >> > + >> > + /** >> > + * @return The list of registered bind listeners >> > + */ >> > + public Set<BindListener> getBindListeners() >> > + { >> > + return Collections.unmodifiableSet(bindListeners); >> > + } >> > + >> > + /** >> > * Reacts on unbinding from the session by cleaning up the >> > session related data. >> > */ >> > protected static final class SessionBindingListener >> > >> > >> > http://git-wip-us.apache.org/repos/asf/wicket/blob/b0179068/wicket-core/src/main/java/org/apache/wicket/session/ISessionStore.java >> > ---------------------------------------------------------------------- >> > diff --git >> > a/wicket-core/src/main/java/org/apache/wicket/session/ISessionStore.java >> > b/wicket-core/src/main/java/org/apache/wicket/session/ISessionStore.java >> > index f4894d7..ead4444 100644 >> > --- >> > a/wicket-core/src/main/java/org/apache/wicket/session/ISessionStore.java >> > +++ >> > b/wicket-core/src/main/java/org/apache/wicket/session/ISessionStore.java >> > @@ -180,4 +180,42 @@ public interface ISessionStore >> > * @return The list of registered unbound listeners >> > */ >> > Set<UnboundListener> getUnboundListener(); >> > + >> > + /** >> > + * Listener invoked when session is bound. >> > + */ >> > + public interface BindListener >> > + { >> > + /** >> > + * Informs the listener that a session is about to be >> > bound. Note that this method is also >> > + * called for {@link Session#isTemporary() temporary >> > sessions}. >> > + * >> > + * @param request >> > + * The request the session is bound in >> > + * @param newSession >> > + * The session that will be bound >> > + */ >> > + void bindingSession(Request request, Session >> > newSession); >> > + } >> > + >> > + // TODO Wicket.next add these methods to the interface >> >> What's the purpose of these commented methods ? >> I understand you didn't add them because of API change but why added >> them as commented ? >> >> > + /** >> > + * Registers listener invoked when session is bound. >> > + * >> > + * @param listener >> > + */ >> > + // void registerBindListener(BindListener listener); >> > + >> > + /** >> > + * Unregisters listener invoked when session is bound. >> > + * >> > + * @param listener >> > + */ >> > + // void unregisterBindListener(BindListener listener); >> > + >> > + /** >> > + * @return The list of registered bind listeners >> > + */ >> > + // Set<BindListener> getBindListener(); >> > + >> > } >> > >> >> >> >> -- >> Martin Grigorov >> jWeekend >> Training, Consulting, Development >> http://jWeekend.com > > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com
