private static CompassEventListener findEventListener(Session session) { PostInsertEventListener[] listeners = ((SessionImplementor) session).getListeners().getPostInsertEventListeners(); return findEventListener(listeners); }
protected boolean hasPostCommitEventListeners() { return getSession().getListeners().getPostCommitUpdateEventListeners().length>0; }
private boolean preDelete() { PreDeleteEventListener[] preListeners = getSession().getListeners() .getPreDeleteEventListeners(); boolean veto = false; if (preListeners.length>0) { PreDeleteEvent preEvent = new PreDeleteEvent( getInstance(), getId(), state, getPersister() ); for ( int i = 0; i < preListeners.length; i++ ) { veto = preListeners[i].onPreDelete(preEvent) || veto; } } return veto; }
/** * 1. detect any dirty entities * 2. schedule any entity updates * 3. search out any reachable collections */ private void flushEntities(FlushEvent event) throws HibernateException { log.trace("Flushing entities and processing referenced collections"); // Among other things, updateReachables() will recursively load all // collections that are moving roles. This might cause entities to // be loaded. // So this needs to be safe from concurrent modification problems. // It is safe because of how IdentityMap implements entrySet() final SessionImplementor source = event.getSession(); final Map.Entry[] list = IdentityMap.concurrentEntries( source.getPersistenceContext().getEntityEntries() ); final int size = list.length; for ( int i = 0; i < size; i++ ) { // Update the status of the object and if necessary, schedule an update Map.Entry me = list[i]; EntityEntry entry = (EntityEntry) me.getValue(); Status status = entry.getStatus(); if ( status != Status.LOADING && status != Status.GONE ) { FlushEntityEvent entityEvent = new FlushEntityEvent( source, me.getKey(), entry ); source.getListeners().getFlushEntityEventListener().onFlushEntity(entityEvent); } } source.getActionQueue().sortUpdateActions(); }
private void postCommitInsert() { PostInsertEventListener[] postListeners = getSession().getListeners() .getPostCommitInsertEventListeners(); if (postListeners.length>0) { PostInsertEvent postEvent = new PostInsertEvent( getInstance(), generatedId, state, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostInsert(postEvent); } } }
private void postDelete() { PostDeleteEventListener[] postListeners = getSession().getListeners() .getPostDeleteEventListeners(); if (postListeners.length>0) { PostDeleteEvent postEvent = new PostDeleteEvent( getInstance(), getId(), state, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostDelete(postEvent); } } }
private void postCommitInsert() { PostInsertEventListener[] postListeners = getSession().getListeners() .getPostCommitInsertEventListeners(); if ( postListeners.length > 0 ) { PostInsertEvent postEvent = new PostInsertEvent( getInstance(), getId(), state, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostInsert(postEvent); } } }
private void postCommitDelete() { PostDeleteEventListener[] postListeners = getSession().getListeners() .getPostCommitDeleteEventListeners(); if (postListeners.length>0) { PostDeleteEvent postEvent = new PostDeleteEvent( getInstance(), getId(), state, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostDelete(postEvent); } } }
private void postCommitUpdate() { PostUpdateEventListener[] postListeners = getSession().getListeners() .getPostCommitUpdateEventListeners(); if (postListeners.length>0) { PostUpdateEvent postEvent = new PostUpdateEvent( getInstance(), getId(), state, previousState, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostUpdate(postEvent); } } }
private void postUpdate() { PostUpdateEventListener[] postListeners = getSession().getListeners() .getPostUpdateEventListeners(); if (postListeners.length>0) { PostUpdateEvent postEvent = new PostUpdateEvent( getInstance(), getId(), state, previousState, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostUpdate(postEvent); } } }
private void postInsert() { PostInsertEventListener[] postListeners = getSession().getListeners() .getPostInsertEventListeners(); if ( postListeners.length > 0 ) { PostInsertEvent postEvent = new PostInsertEvent( getInstance(), getId(), state, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostInsert(postEvent); } } }
private boolean preUpdate() { PreUpdateEventListener[] preListeners = getSession().getListeners() .getPreUpdateEventListeners(); boolean veto = false; if (preListeners.length>0) { PreUpdateEvent preEvent = new PreUpdateEvent( getInstance(), getId(), state, previousState, getPersister(), getSession() ); for ( int i = 0; i < preListeners.length; i++ ) { veto = preListeners[i].onPreUpdate(preEvent) || veto; } } return veto; }
private void postInsert() { if ( isDelayed ) { getSession().getPersistenceContext().replaceDelayedEntityIdentityInsertKeys( delayedEntityKey, generatedId ); } PostInsertEventListener[] postListeners = getSession().getListeners() .getPostInsertEventListeners(); if (postListeners.length>0) { PostInsertEvent postEvent = new PostInsertEvent( getInstance(), generatedId, state, getPersister(), (EventSource) getSession() ); for ( int i = 0; i < postListeners.length; i++ ) { postListeners[i].onPostInsert(postEvent); } } }
private static Object[] assemble( final Serializable[] values, final Object result, final Serializable id, final EntityPersister persister, final Interceptor interceptor, final SessionImplementor session) throws HibernateException { //assembled state gets put in a new array (we read from cache by value!) Object[] assembledProps = TypeFactory.assemble( values, persister.getPropertyTypes(), session, result ); //persister.setIdentifier(result, id); //before calling interceptor, for consistency with normal load //TODO: reuse the PreLoadEvent PreLoadEvent preLoadEvent = new PreLoadEvent(session).setEntity(result) .setState(assembledProps).setId(id).setPersister(persister); session.getListeners().getPreLoadEventListener().onPreLoad(preLoadEvent); persister.setPropertyValues( result, assembledProps, session.getEntityMode() ); return assembledProps; }
public void execute() throws HibernateException { EntityPersister persister = getPersister(); SessionImplementor session = getSession(); Object instance = getInstance(); PreInsertEvent preEvent = new PreInsertEvent( instance, null, state, persister, session ); final boolean veto = session.getListeners().getPreInsertEventListener().onPreInsert( preEvent ); // Don't need to lock the cache here, since if someone // else inserted the same pk first, the insert would fail if ( !veto ) generatedId = persister.insert( state, instance, session ); //TODO: this bit actually has to be called after all cascades! // but since identity insert is called *synchronously*, // instead of asynchronously as other actions, it isn't /*if ( persister.hasCache() && !persister.isCacheInvalidationRequired() ) { cacheEntry = new CacheEntry(object, persister, session); persister.getCache().insert(generatedId, cacheEntry); }*/ PostInsertEvent postEvent = new PostInsertEvent( instance, generatedId, state, getPersister(), session ); session.getListeners().getPostInsertEventListener().onPostInsert( postEvent ); if ( getSession().getFactory().getStatistics().isStatisticsEnabled() && !veto ) { getSession().getFactory().getStatisticsImplementor() .insertEntity( getPersister().getEntityName() ); } }
session.getListeners().getPostLoadEventListener().onPostLoad(postLoadEvent);
session.getListeners().getPreLoadEventListener().onPreLoad(preLoadEvent); session.getListeners().getPostLoadEventListener().onPostLoad(postLoadEvent);
final boolean veto = session.getListeners().getPreDeleteEventListener().onPreDelete(preEvent); session.getListeners().getPostDeleteEventListener().onPostDelete( postEvent );
final boolean veto = session.getListeners().getPreInsertEventListener().onPreInsert( preEvent ); session.getListeners().getPostInsertEventListener().onPostInsert( postEvent );
final boolean veto = session.getListeners().getPreUpdateEventListener().onPreUpdate( preEvent ); session.getListeners().getPostUpdateEventListener().onPostUpdate( postEvent );