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

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

Introduction

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

Prototype

public void clear();

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 www.  j  a  v a  2  s  . 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.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();
                group.appendListener(listener);
            } else {
                group.appendListener(listener);
            }// www.j  av  a  2 s .  c om
        }
    }
}