/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.jpa.test.ejb3configuration; import javax.persistence.EntityManagerFactory; import java.util.Collections; import org.junit.Assert; import org.junit.Test; import org.hibernate.SessionFactory; import org.hibernate.SessionFactoryObserver; import org.hibernate.jpa.test.PersistenceUnitInfoAdapter; import org.hibernate.jpa.AvailableSettings; import org.hibernate.jpa.boot.spi.Bootstrap; import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder; /** * @author Emmanuel Bernard <emmanuel@hibernate.org> */ public class SessionFactoryObserverTest { @Test public void testSessionFactoryObserverProperty() { EntityManagerFactoryBuilder builder = Bootstrap.getEntityManagerFactoryBuilder( new PersistenceUnitInfoAdapter(), Collections.singletonMap( AvailableSettings.SESSION_FACTORY_OBSERVER, GoofySessionFactoryObserver.class.getName() ) ); try { final EntityManagerFactory entityManagerFactory = builder.build(); entityManagerFactory.close(); Assert.fail( "GoofyException should have been thrown" ); } catch ( GoofyException e ) { //success } } public static class GoofySessionFactoryObserver implements SessionFactoryObserver { public void sessionFactoryCreated(SessionFactory factory) { } public void sessionFactoryClosed(SessionFactory factory) { throw new GoofyException(); } } public static class GoofyException extends RuntimeException { } }