/* * 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.test.bytecode.enhancement; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.service.ServiceRegistry; import org.hibernate.testing.ServiceRegistryBuilder; import org.hibernate.testing.bytecode.enhancement.EnhancerTestTask; /** * @author Luis Barreiro */ public abstract class AbstractEnhancerTestTask implements EnhancerTestTask { private ServiceRegistry serviceRegistry; private SessionFactory factory; public final void prepare(Configuration config) { config.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); Class<?>[] resources = getAnnotatedClasses(); for ( Class<?> resource : resources ) { config.addAnnotatedClass( resource ); } StandardServiceRegistryBuilder serviceBuilder = new StandardServiceRegistryBuilder( ); serviceBuilder.addService( ClassLoaderService.class, new ClassLoaderServiceImpl( Thread.currentThread().getContextClassLoader() ) ); serviceBuilder.applySettings( config.getProperties() ); serviceRegistry = serviceBuilder.build(); factory = config.buildSessionFactory( serviceRegistry ); } public final void complete() { try { cleanup(); } finally { factory.close(); factory = null; if ( serviceRegistry != null ) { ServiceRegistryBuilder.destroy( serviceRegistry ); serviceRegistry = null; } } } protected SessionFactory getFactory() { return factory; } protected abstract void cleanup(); }