private void checkAgainstBaseInterface(T listener) { if ( !eventType.baseListenerInterface().isInstance( listener ) ) { throw new EventListenerRegistrationException( "Listener did not implement expected interface [" + eventType.baseListenerInterface().getName() + "]" ); } }
@Override public String toString() { return eventName(); }
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 ) ); } } }
@SuppressWarnings({ "unchecked" }) public <T> EventListenerGroupImpl<T> getEventListenerGroup(EventType<T> eventType) { EventListenerGroupImpl<T> listeners = registeredEventListeners[ eventType.ordinal() ]; if ( listeners == null ) { throw new HibernateException( "Unable to find listeners for type [" + eventType.eventName() + "]" ); } return listeners; }
/** * Looks for hibernate event listeners and register all them. * * @param registry The event listener registry. */ @SuppressWarnings({"unchecked", "rawtypes" }) private void configure(final EventListenerRegistry registry) { Collection<EventType> values = EventType.values(); for (EventType eventType : values) { EventListenerGroup group = registry.getEventListenerGroup(eventType); Collection listeners = applicationContext.getBeansOfType(eventType.baseListenerInterface()) .values(); for (Object listener : listeners) { group.appendListener(listener); } } } }
final EventType eventType = EventType.resolveEventTypeByName( eventTypeName ); final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); for ( String listenerImpl : ( (String) entry.getValue() ).split( " ," ) ) { for ( EventType eventType : EventType.values() ) { final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); for ( Object listener : eventListenerGroup.listeners() ) {
private EventListenerGroupImpl[] buildListenerGroups() { EventListenerGroupImpl[] listenerArray = new EventListenerGroupImpl[ EventType.values().size() ];
private <T> void prepareListeners(EventType<T> type, T defaultListener, EventListenerGroupImpl[] listenerArray) { final EventListenerGroupImpl<T> listenerGroup; if ( type == EventType.POST_COMMIT_DELETE || type == EventType.POST_COMMIT_INSERT || type == EventType.POST_COMMIT_UPDATE ) { listenerGroup = new PostCommitEventListenerGroupImpl<T>( type, this ); } else { listenerGroup = new EventListenerGroupImpl<T>( type, this ); } if ( defaultListener != null ) { listenerGroup.appendListener( defaultListener ); } listenerArray[ type.ordinal() ] = listenerGroup; }
private static <T> EventType<T> create(String name, Class<T> listenerClass) { return new EventType<T>( name, listenerClass ); }
@SuppressWarnings({ "unchecked" }) public <T> EventListenerGroupImpl<T> getEventListenerGroup(EventType<T> eventType) { EventListenerGroupImpl<T> listeners = registeredEventListeners[ eventType.ordinal() ]; if ( listeners == null ) { throw new HibernateException( "Unable to find listeners for type [" + eventType.eventName() + "]" ); } return listeners; }
private EventListenerGroupImpl[] buildListenerGroups() { EventListenerGroupImpl[] listenerArray = new EventListenerGroupImpl[ EventType.values().size() ];
private <T> void prepareListeners(EventType<T> type, T defaultListener, EventListenerGroupImpl[] listenerArray) { final EventListenerGroupImpl<T> listenerGroup; if ( type == EventType.POST_COMMIT_DELETE || type == EventType.POST_COMMIT_INSERT || type == EventType.POST_COMMIT_UPDATE ) { listenerGroup = new PostCommitEventListenerGroupImpl<>( type, this ); } else { listenerGroup = new EventListenerGroupImpl<>( type, this ); } if ( defaultListener != null ) { listenerGroup.appendListener( defaultListener ); } listenerArray[ type.ordinal() ] = listenerGroup; }
private static <T> EventType<T> create(String name, Class<T> listenerClass) { return new EventType<T>( name, listenerClass ); }
@SuppressWarnings( {"unchecked"}) private <T> T[] resolveListenerInstances(EventType<T> type, Class<? extends T>... listenerClasses) { T[] listeners = (T[]) Array.newInstance( type.baseListenerInterface(), listenerClasses.length ); for ( int i = 0; i < listenerClasses.length; i++ ) { listeners[i] = resolveListenerInstance( listenerClasses[i] ); } return listeners; }
private void checkAgainstExtendedContract(T listener) { if ( !extendedListenerContract.isInstance( listener ) ) { log.warnf( "Encountered event listener [%s] for post-commit event [%s] " + "which did not implement the corresponding extended " + "listener contract [%s]", listener.getClass().getName(), getEventType().eventName(), extendedListenerContract.getName() ); } }
final EventType eventType = EventType.resolveEventTypeByName( listener.getType().value() ); cfg.addEventListener( eventType, listener.getClazz() ); final EventType eventType = EventType.resolveEventTypeByName( eventTypeName );
private void checkAgainstBaseInterface(T listener) { if ( !eventType.baseListenerInterface().isInstance( listener ) ) { throw new EventListenerRegistrationException( "Listener did not implement expected interface [" + eventType.baseListenerInterface().getName() + "]" ); } }
@Override public Map<String, EventType> run() { final Map<String, EventType> typeByNameMap = new HashMap<String, EventType>(); for ( Field field : EventType.class.getDeclaredFields() ) { if ( EventType.class.isAssignableFrom( field.getType() ) ) { try { final EventType typeField = (EventType) field.get( null ); typeByNameMap.put( typeField.eventName(), typeField ); } catch (Exception t) { throw new HibernateException( "Unable to initialize EventType map", t ); } } } return typeByNameMap; } }
private void prepareEventListeners(Metamodel metamodel) { final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService( EventListenerRegistry.class ); final ConfigurationService cfgService = serviceRegistry.getService( ConfigurationService.class ); final ClassLoaderService classLoaderService = serviceRegistry.getService( ClassLoaderService.class ); eventListenerRegistry.prepare( metamodel ); 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 checkAgainstBaseInterface(T listener) { if ( !eventType.baseListenerInterface().isInstance( listener ) ) { throw new EventListenerRegistrationException( "Listener did not implement expected interface [" + eventType.baseListenerInterface().getName() + "]" ); } }