public PostCommitEventListenerGroupImpl(EventType<T> eventType) { super( eventType ); if ( eventType == EventType.POST_COMMIT_DELETE ) { this.extendedListenerContract = PostCommitDeleteEventListener.class; } else if ( eventType == EventType.POST_COMMIT_INSERT ) { this.extendedListenerContract = PostCommitInsertEventListener.class; } else if ( eventType == EventType.POST_COMMIT_UPDATE ) { this.extendedListenerContract = PostCommitUpdateEventListener.class; } else { throw new IllegalStateException( "Unexpected usage of PostCommitEventListenerGroupImpl" ); } }
private void postCommitUpdate(boolean success) { final EventListenerGroup<PostUpdateEventListener> listenerGroup = listenerGroup( EventType.POST_COMMIT_UPDATE ); if ( listenerGroup.isEmpty() ) { return; } final PostUpdateEvent event = new PostUpdateEvent( getInstance(), getId(), state, previousState, dirtyFields, getPersister(), eventSource() ); for ( PostUpdateEventListener listener : listenerGroup.listeners() ) { if ( PostCommitUpdateEventListener.class.isInstance( listener ) ) { if ( success ) { listener.onPostUpdate( event ); } else { ((PostCommitUpdateEventListener) listener).onPostUpdateCommitFailed( event ); } } else { //default to the legacy implementation that always fires the event listener.onPostUpdate( event ); } } }
@Override protected void configure() { bind(TestEventListener.class) .to(PostDeleteEventListener.class) .to(PreDeleteEventListener.class) .to(PreInsertEventListener.class) .to(PostInsertEventListener.class) .to(PreUpdateEventListener.class) .to(PostUpdateEventListener.class) .to(PostCommitInsertEventListener.class) .to(PostCommitUpdateEventListener.class) .to(PostCommitDeleteEventListener.class) .in(PerThread.class); }