It looks like Fabio did a bunch of work last weekend refactoring the session factory and other session factory related stuff. Based on the amount of code that was changed, I'm sure it was needed. Merging my project to the trunk, I did find one breaking change.
The previous versions called something like:
if
(isSessionScopedInterceptor)
interceptor.SetSession(sessionImpl);
on each Interceptor registered with the session. This was useful in that you could then overload this in the interceptor and then keep a reference to that session. This is now removed, which is easy enough to deal with - simply call the method manually after creating the session.
session = sessionFactory.OpenSession(interceptor);
interceptor.SetSession(session);
I of course only found out about this breaking change when running my interceptor unit tests. (How did I ever write software without unit tests? Who knows?!)
Instead, we should remove the SetSession(ISession session) method from the Interceptor interface and EmptyInterceptor implementation. This will force people to realize "ohh, if it isn't there, obviously it isn't being called by NHCore anymore." Then they will change it to non-virtual and call it themselves without needing to look into the source as I did...
- Will