private void prepareEventListeners(MetadataImplementor metadata) { final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService( EventListenerRegistry.class ); final ConfigurationService cfgService = serviceRegistry.getService( ConfigurationService.class ); final ClassLoaderService classLoaderService = serviceRegistry.getService( ClassLoaderService.class ); eventListenerRegistry.prepare( metadata ); for ( Map.Entry entry : ( (Map<?, ?>) cfgService.getSettings() ).entrySet() ) { if ( !String.class.isInstance( entry.getKey() ) ) { continue; } final String propertyName = (String) entry.getKey(); if ( !propertyName.startsWith( org.hibernate.jpa.AvailableSettings.EVENT_LISTENER_PREFIX ) ) { continue; } final String eventTypeName = propertyName.substring( org.hibernate.jpa.AvailableSettings.EVENT_LISTENER_PREFIX.length() + 1 ); final EventType eventType = EventType.resolveEventTypeByName( eventTypeName ); final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); for ( String listenerImpl : ( (String) entry.getValue() ).split( " ," ) ) { eventListenerGroup.appendListener( instantiate( listenerImpl, classLoaderService ) ); } } }
private void preRecreate() { final EventListenerGroup<PreCollectionRecreateEventListener> listenerGroup = listenerGroup( EventType.PRE_COLLECTION_RECREATE ); if ( listenerGroup.isEmpty() ) { return; } final PreCollectionRecreateEvent event = new PreCollectionRecreateEvent( getPersister(), getCollection(), eventSource() ); for ( PreCollectionRecreateEventListener listener : listenerGroup.listeners() ) { listener.onPreRecreateCollection( event ); } }
private <T> Iterable<T> listeners(EventType<T> type) { return eventListenerGroup( type ).listeners(); }
.getService(EventListenerRegistry.class) .getEventListenerGroup(EventType.MERGE); MergeEventListener mergeEventListener = new ObjectModelMergeEventListener(mergeEventListenerGroup.listeners()); mergeEventListenerGroup.clear(); mergeEventListenerGroup.appendListener(mergeEventListener);
final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); for ( String listenerImpl : ( (String) entry.getValue() ).split( " ," ) ) { eventListenerGroup.appendListener( instantiate( listenerImpl, serviceRegistry ) ); for ( Object listener : eventListenerGroup.listeners() ) { if ( CallbackHandlerConsumer.class.isInstance( listener ) ) { ( (CallbackHandlerConsumer) listener ).setCallbackHandler( callbackHandler );
@Override public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService(EventListenerRegistry.class); final EventListenerGroup<MergeEventListener> mergeListeners = eventListenerRegistry.getEventListenerGroup(EventType.MERGE); mergeListeners.addDuplicationStrategy(USE_DERIVED); mergeListeners.appendListener(new IdTransferringMergeEventListener()); }
@Override protected boolean hasPostCommitEventListeners() { return ! listenerGroup( EventType.POST_COMMIT_DELETE ).isEmpty(); } }
@Override protected boolean hasPostCommitEventListeners() { final EventListenerGroup<PostInsertEventListener> group = listenerGroup( EventType.POST_COMMIT_INSERT ); for ( PostInsertEventListener listener : group.listeners() ) { if ( listener.requiresPostCommitHandling( getPersister() ) ) { return true; } } return false; }
eventListenerRegistry.getEventListenerGroup(EventType.POST_INSERT).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.POST_UPDATE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.POST_DELETE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.PRE_COLLECTION_UPDATE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST).addDuplicationStrategy(new OverrideWrapStrategy<PersistEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST).appendListener(new HibernatePersistListener()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH).addDuplicationStrategy(new OverrideWrapStrategy<PersistEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH).appendListener(new HibernatePersistOnFlushListener()); eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE).addDuplicationStrategy(new OverrideWrapStrategy<SaveOrUpdateEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE).appendListener(new HibernateSaveOrUpdateListener()); eventListenerRegistry.getEventListenerGroup(EventType.MERGE).addDuplicationStrategy(new OverrideWrapStrategy<MergeEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.MERGE).appendListener(new HibernateDataChangeMergeListener()); eventListenerRegistry.getEventListenerGroup(EventType.DELETE).addDuplicationStrategy(new OverrideWrapStrategy<DeleteEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.DELETE).appendListener(new HibernateDeleteListener()); eventListenerRegistry.getEventListenerGroup(EventType.LOCK).addDuplicationStrategy(new OverrideWrapStrategy<LockEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.LOCK).appendListener(new HibernateLockListener()); eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH).addDuplicationStrategy(new OverrideWrapStrategy<AutoFlushEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH).appendListener(new HibernateAutoFlushListener()); eventListenerRegistry.getEventListenerGroup(EventType.FLUSH).addDuplicationStrategy(new OverrideWrapStrategy<FlushEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.FLUSH).appendListener(new HibernateFlushListener());
@Override protected boolean hasPostCommitEventListeners() { return ! listenerGroup( EventType.POST_COMMIT_DELETE ).isEmpty(); } }
private void postRecreate() { final EventListenerGroup<PostCollectionRecreateEventListener> listenerGroup = listenerGroup( EventType.POST_COLLECTION_RECREATE ); if ( listenerGroup.isEmpty() ) { return; } final PostCollectionRecreateEvent event = new PostCollectionRecreateEvent( getPersister(), getCollection(), eventSource() ); for ( PostCollectionRecreateEventListener listener : listenerGroup.listeners() ) { listener.onPostRecreateCollection( event ); } } }
private void integrate(SessionFactoryServiceRegistry serviceRegistry) { serviceRegistry.getService( EventListenerRegistry.class ) .getEventListenerGroup( EventType.PRE_UPDATE ) .appendListener( InitializingPreUpdateEventListener.INSTANCE ); }
@Override protected boolean hasPostCommitEventListeners() { final EventListenerGroup<PostUpdateEventListener> group = listenerGroup( EventType.POST_COMMIT_UPDATE ); for ( PostUpdateEventListener listener : group.listeners() ) { if ( listener.requiresPostCommitHandling( getPersister() ) ) { return true; } } return false; }
public void integrate(Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService(EventListenerRegistry.class); try { HibernateDataPublishListener listener = new HibernateDataPublishListener(); eventListenerRegistry.getEventListenerGroup(EventType.POST_INSERT).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.POST_UPDATE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.POST_DELETE).appendListener(listener); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST).addDuplicationStrategy(new OverrideWrapStrategy<PersistEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST).appendListener(new HibernatePersistListener()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH).addDuplicationStrategy(new OverrideWrapStrategy<PersistEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.PERSIST_ONFLUSH).appendListener(new HibernatePersistOnFlushListener()); eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE).addDuplicationStrategy(new OverrideWrapStrategy<SaveOrUpdateEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.SAVE_UPDATE).appendListener(new HibernateSaveOrUpdateListener()); eventListenerRegistry.getEventListenerGroup(EventType.MERGE).addDuplicationStrategy(new OverrideWrapStrategy<MergeEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.MERGE).appendListener(new HibernateMergeListener()); eventListenerRegistry.getEventListenerGroup(EventType.DELETE).addDuplicationStrategy(new OverrideWrapStrategy<DeleteEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.DELETE).appendListener(new HibernateDeleteListener()); eventListenerRegistry.getEventListenerGroup(EventType.LOCK).addDuplicationStrategy(new OverrideWrapStrategy<LockEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.LOCK).appendListener(new HibernateLockListener()); eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH).addDuplicationStrategy(new OverrideWrapStrategy<AutoFlushEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.AUTO_FLUSH).appendListener(new HibernateAutoFlushListener()); eventListenerRegistry.getEventListenerGroup(EventType.FLUSH).addDuplicationStrategy(new OverrideWrapStrategy<FlushEventListener>()); eventListenerRegistry.getEventListenerGroup(EventType.FLUSH).appendListener(new HibernateFlushListener()); } catch (Exception e) { throw new RuntimeException("Could not setup Hibernate 4 listeners", e); } }
@Override protected boolean hasPostCommitEventListeners() { return ! listenerGroup( EventType.POST_COMMIT_UPDATE ).isEmpty(); }
private void preUpdate() { final EventListenerGroup<PreCollectionUpdateEventListener> listenerGroup = listenerGroup( EventType.PRE_COLLECTION_UPDATE ); if ( listenerGroup.isEmpty() ) { return; } final PreCollectionUpdateEvent event = new PreCollectionUpdateEvent( getPersister(), getCollection(), eventSource() ); for ( PreCollectionUpdateEventListener listener : listenerGroup.listeners() ) { listener.onPreUpdateCollection( event ); } }
private void applyCfgXmlValues(LoadedConfig aggregatedConfig, SessionFactoryServiceRegistry serviceRegistry) { final JaccService jaccService = serviceRegistry.getService( JaccService.class ); if ( jaccService.getContextId() != null ) { final JaccPermissionDeclarations permissions = aggregatedConfig.getJaccPermissions( jaccService.getContextId() ); if ( permissions != null ) { for ( GrantedPermission grantedPermission : permissions.getPermissionDeclarations() ) { jaccService.addPermission( grantedPermission ); } } } if ( aggregatedConfig.getEventListenerMap() != null ) { final ClassLoaderService cls = serviceRegistry.getService( ClassLoaderService.class ); final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService( EventListenerRegistry.class ); for ( Map.Entry<EventType, Set<String>> entry : aggregatedConfig.getEventListenerMap().entrySet() ) { final EventListenerGroup group = eventListenerRegistry.getEventListenerGroup( entry.getKey() ); for ( String listenerClassName : entry.getValue() ) { try { group.appendListener( cls.classForName( listenerClassName ).newInstance() ); } catch (Exception e) { throw new ConfigurationException( "Unable to instantiate event listener class : " + listenerClassName, e ); } } } } }
@Override protected boolean hasPostCommitEventListeners() { final EventListenerGroup<PostDeleteEventListener> group = listenerGroup( EventType.POST_COMMIT_DELETE ); for ( PostDeleteEventListener listener : group.listeners() ) { if ( listener.requiresPostCommitHandling( getPersister() ) ) { return true; } } return false; } }
@Override protected boolean hasPostCommitEventListeners() { return ! listenerGroup( EventType.POST_COMMIT_INSERT ).isEmpty(); }
private void preRemove() { final EventListenerGroup<PreCollectionRemoveEventListener> listenerGroup = listenerGroup( EventType.PRE_COLLECTION_REMOVE ); if ( listenerGroup.isEmpty() ) { return; } final PreCollectionRemoveEvent event = new PreCollectionRemoveEvent( getPersister(), getCollection(), eventSource(), affectedOwner ); for ( PreCollectionRemoveEventListener listener : listenerGroup.listeners() ) { listener.onPreRemoveCollection( event ); } }