2014/2/11 Davide D'Alto <daltodav...@gmail.com> > > Yes, that helps indeed. Implementing my validation routine in such an > observer works. I guess if needed, I even could implement support for the > suggested service contract in OGM with help of an observer. > > In OGM, we used to have a SessionFactoryObserver but we removed it in > favor of the SessionFactoryServiceInitiator. > https://hibernate.atlassian.net/browse/OGM-299 > > But do we have a DatastoreProvider which actually makes use of the SF?
I can "inject" the SF into a DatastoreProvider by having it implement said StartStoppable contract. But as pointed out before the SF is not yet completely initialized at this point. So I e.g. can't access the entity persisters. I couldn't find any "real" implementation of StartStoppable (besides a testing one); it might actually make sense to re-implement the support for this contract using an observer, which would expose a fully-initialized SF to such implementations. The problem I'm having atm. only relates to CouchDB, so for the time being I think I'm going to add an observer just to this module. > > > On Tue, Feb 11, 2014 at 10:05 AM, Gunnar Morling <gun...@hibernate.org>wrote: > >> 2014/2/11 Hardy Ferentschik <ha...@hibernate.org> >> >> > Hi, >> > >> > not sure whether this could work in your use case, but in Search we use >> a >> > SessionFactoryObserver. >> > We register the observer in Integrator#integrate with the >> > SessionFactoryImplementor. >> > Once the SessionFactory is completely build you get a callback into >> > SessionFactoryObserver#sessionFactoryCreated(). >> > >> > In Search we had the case that we did not want to complete bootstrapping >> > at the integrator phase. Instead we defer >> > this until the SessionFactory is completely build. >> > >> > Hope it helps. >> > >> >> Yes, that helps indeed. Implementing my validation routine in such an >> observer works. I guess if needed, I even could implement support for the >> suggested service contract in OGM with help of an observer. >> >> Thanks! >> >> >> > >> > --Hardy >> >> > >> > >> > >> > On 11 Jan 2014, at 09:38, Gunnar Morling <gun...@hibernate.org> wrote: >> > >> > > Hi, >> > > >> > > Is there a way for services (living in the SF-scoped registry) to get >> > > notified when the session factory has been set up and perform some >> action >> > > using that completely initialized factory? >> > > >> > > Upon invocation of initiateService() of SessionFactoryServiceInitiator >> > > implementations, the passed factory is still under construction (the >> call >> > > originates from SessionFactoryImpl<init>), so I can't access all >> members. >> > > The same holds true for the StartStoppable contract in OGM which also >> > sees >> > > a session factory under construction. >> > > >> > > Now I could store the passed reference in a field and execute the >> > required >> > > logic (some sort of validation) later on. I only have no meaningful >> hook >> > to >> > > trigger such action exactly once. So I'd have to manage a flag to make >> > sure >> > > the action is only performed once. >> > > >> > > Is there a better way to achieve this? >> > > >> > > Would it make sense to provide an additional contract to notify >> services >> > > about session factory lifecycle events: >> > > >> > > public interface SessionFactoryLifecycleAware extends Service { >> > > >> > > void onSessionFactoryLifecycleEvent(SessionFactoryImplementor >> sfi, >> > > Event event); >> > > >> > > public enum Event { POST_START, PRE_STOP } >> > > } >> > > >> > > ? >> > > >> > > Thanks, >> > > >> > > --Gunnar >> > > _______________________________________________ >> > > hibernate-dev mailing list >> > > hibernate-dev@lists.jboss.org >> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev >> > >> > >> _______________________________________________ >> hibernate-dev mailing list >> hibernate-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/hibernate-dev >> > > _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev