Example usage for org.hibernate.event.service.spi EventListenerGroup appendListener

List of usage examples for org.hibernate.event.service.spi EventListenerGroup appendListener

Introduction

In this page you can find the example usage for org.hibernate.event.service.spi EventListenerGroup appendListener.

Prototype

public void appendListener(T listener);

Source Link

Usage

From source file:org.babyfish.hibernate.cfg.Configuration.java

License:Open Source License

@Override
public XSessionFactory buildSessionFactory(ServiceRegistry serviceRegistry) throws HibernateException {
    Arguments.mustBeInstanceOfValue("serviceRegistry",
            Arguments.mustNotBeNull("serviceRegistry", serviceRegistry), StandardServiceRegistryImpl.class);
    replacePersisterClassResolver((AbstractServiceRegistryImpl) serviceRegistry);

    String originalCurrentSessionContext = this.getProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS);
    this.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
    SessionFactoryImpl factory;/*from   ww w. ja  v  a  2s . c o m*/
    try {
        pathPlanKeyVlidationSuspended = true;
        try {
            factory = (SessionFactoryImpl) super.buildSessionFactory(serviceRegistry);
        } finally {
            pathPlanKeyVlidationSuspended = false;
        }
    } finally {
        if (originalCurrentSessionContext != null) {
            this.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, originalCurrentSessionContext);
        } else {
            this.getProperties().remove(Environment.CURRENT_SESSION_CONTEXT_CLASS);
        }
    }
    if (originalCurrentSessionContext != null) {
        factory.getProperties().setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS,
                originalCurrentSessionContext);
    } else {
        factory.getProperties().remove(Environment.CURRENT_SESSION_CONTEXT_CLASS);
    }

    Dialect dialect = factory.getDialect();
    if (dialect instanceof InstallableDialect) {
        ((InstallableDialect) dialect).install(factory);
    }

    EventListenerGroup<MergeEventListener> mergeEventListenerGroup = factory.getServiceRegistry()
            .getService(EventListenerRegistry.class).getEventListenerGroup(EventType.MERGE);
    MergeEventListener mergeEventListener = new ObjectModelMergeEventListener(
            mergeEventListenerGroup.listeners());
    mergeEventListenerGroup.clear();
    mergeEventListenerGroup.appendListener(mergeEventListener);

    setQueryPlanceCache(factory, this.createQueryPlanCache(factory));

    for (ClassMetadata classMetadata : factory.getAllClassMetadata().values()) {
        if (Metadatas.getObjectModelFactoryProvider(classMetadata.getMappedClass()) != null) {
            //Validate whether JPA configuration is same with object model configuration
            HibernateMetadatas.of(classMetadata.getMappedClass()).getPersistentClass(factory);
        }
    }

    return SessionFactoryImplWrapper.wrap(factory);
}

From source file:org.codehaus.groovy.grails.orm.hibernate.EventListenerIntegrator.java

License:Apache License

protected <T> void appendListeners(EventListenerRegistry listenerRegistry, EventType<T> eventType,
        Collection<T> listeners) {

    EventListenerGroup<T> group = listenerRegistry.getEventListenerGroup(eventType);
    for (T listener : listeners) {
        if (listener != null) {
            group.appendListener(listener);
        }//from w  ww.  j a  v a 2s. com
    }
}

From source file:org.grails.orm.hibernate.EventListenerIntegrator.java

License:Apache License

protected <T> void appendListeners(EventListenerRegistry listenerRegistry, EventType<T> eventType,
        Collection<T> listeners) {

    EventListenerGroup<T> group = listenerRegistry.getEventListenerGroup(eventType);
    for (T listener : listeners) {
        if (listener != null) {
            if (shouldOverrideListeners(eventType, listener)) {
                // since ClosureEventTriggeringInterceptor extends DefaultSaveOrUpdateEventListener we want to override instead of append the listener here
                // to avoid there being 2 implementations which would impact performance too
                group.clear();/*  ww  w  . j a v  a2s.c  om*/
                group.appendListener(listener);
            } else {
                group.appendListener(listener);
            }
        }
    }
}

From source file:org.openeos.hibernate.internal.observers.ListenerObserver.java

License:Apache License

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override/*  w  w w. j a  va  2s  .  c om*/
public void sessionFactoryCreated(SessionFactory factory) {
    LOG.debug("Session factory created... registering listeners in service registry");
    ServiceRegistry serviceRegistry = ((SessionFactoryImplementor) factory).getServiceRegistry();
    for (Entry<EventType, Object> entry : mapPreListeners.entrySet()) {
        EventListenerGroup group = serviceRegistry.getService(EventListenerRegistry.class)
                .getEventListenerGroup(entry.getKey());
        group.prependListener(entry.getValue());
    }
    for (Entry<EventType, Object> entry : mapPostListeners.entrySet()) {
        EventListenerGroup group = serviceRegistry.getService(EventListenerRegistry.class)
                .getEventListenerGroup(entry.getKey());
        group.appendListener(entry.getValue());
    }

}