diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/Configuration.java b/hibernate-core/src/main/java/org/hibernate/cfg/Configuration.java index d6c4715f1a..f91ff17c1c 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/Configuration.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/Configuration.java @@ -741,7 +741,14 @@ public class Configuration { public SessionFactory buildSessionFactory() throws HibernateException { log.debug( "Building session factory using internal StandardServiceRegistryBuilder" ); standardServiceRegistryBuilder.applySettings( properties ); - return buildSessionFactory( standardServiceRegistryBuilder.build() ); + StandardServiceRegistry serviceRegistry = standardServiceRegistryBuilder.build(); + try { + return buildSessionFactory( serviceRegistry ); + } + catch (Throwable t) { + serviceRegistry.close(); + throw t; + } } diff --git a/hibernate-core/src/main/java/org/hibernate/jpa/boot/internal/EntityManagerFactoryBuilderImpl.java b/hibernate-core/src/main/java/org/hibernate/jpa/boot/internal/EntityManagerFactoryBuilderImpl.java index 8d0adeea1c..cd2c954dfe 100644 --- a/hibernate-core/src/main/java/org/hibernate/jpa/boot/internal/EntityManagerFactoryBuilderImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/jpa/boot/internal/EntityManagerFactoryBuilderImpl.java @@ -222,80 +222,88 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil providedClassLoader, providedClassLoaderService ); + try { + // merge configuration sources and build the "standard" service registry + final StandardServiceRegistryBuilder ssrBuilder = getStandardServiceRegistryBuilder( bsr ); - // merge configuration sources and build the "standard" service registry - final StandardServiceRegistryBuilder ssrBuilder = getStandardServiceRegistryBuilder( bsr ); + final MergedSettings mergedSettings = mergeSettings( persistenceUnit, integrationSettings, ssrBuilder ); - final MergedSettings mergedSettings = mergeSettings( persistenceUnit, integrationSettings, ssrBuilder ); + // flush before completion validation + if ( "true".equals( mergedSettings.configurationValues.get( Environment.FLUSH_BEFORE_COMPLETION ) ) ) { + LOG.definingFlushBeforeCompletionIgnoredInHem( Environment.FLUSH_BEFORE_COMPLETION ); + mergedSettings.configurationValues.put( Environment.FLUSH_BEFORE_COMPLETION, "false" ); + } - // flush before completion validation - if ( "true".equals( mergedSettings.configurationValues.get( Environment.FLUSH_BEFORE_COMPLETION ) ) ) { - LOG.definingFlushBeforeCompletionIgnoredInHem( Environment.FLUSH_BEFORE_COMPLETION ); - mergedSettings.configurationValues.put( Environment.FLUSH_BEFORE_COMPLETION, "false" ); - } + // keep the merged config values for phase-2 + this.configurationValues = mergedSettings.getConfigurationValues(); - // keep the merged config values for phase-2 - this.configurationValues = mergedSettings.getConfigurationValues(); + // Build the "standard" service registry + ssrBuilder.applySettings( configurationValues ); - // Build the "standard" service registry - ssrBuilder.applySettings( configurationValues ); + this.standardServiceRegistry = ssrBuilder.build(); - this.standardServiceRegistry = ssrBuilder.build(); + configureIdentifierGenerators( standardServiceRegistry ); - configureIdentifierGenerators( standardServiceRegistry ); + final MetadataSources metadataSources = new MetadataSources( bsr ); + this.metamodelBuilder = (MetadataBuilderImplementor) metadataSources.getMetadataBuilder( + standardServiceRegistry ); + List attributeConverterDefinitions = applyMappingResources( metadataSources ); - final MetadataSources metadataSources = new MetadataSources( bsr ); - List attributeConverterDefinitions = applyMappingResources( metadataSources ); + applyMetamodelBuilderSettings( mergedSettings, attributeConverterDefinitions ); - this.metamodelBuilder = (MetadataBuilderImplementor) metadataSources.getMetadataBuilder( standardServiceRegistry ); - applyMetamodelBuilderSettings( mergedSettings, attributeConverterDefinitions ); + applyMetadataBuilderContributor(); - applyMetadataBuilderContributor(); - - // todo : would be nice to have MetadataBuilder still do the handling of CfgXmlAccessService here - // another option is to immediately handle them here (probably in mergeSettings?) as we encounter them... - final CfgXmlAccessService cfgXmlAccessService = standardServiceRegistry.getService( CfgXmlAccessService.class ); - if ( cfgXmlAccessService.getAggregatedConfig() != null ) { - if ( cfgXmlAccessService.getAggregatedConfig().getMappingReferences() != null ) { - for ( MappingReference mappingReference : cfgXmlAccessService.getAggregatedConfig().getMappingReferences() ) { - mappingReference.apply( metadataSources ); + // todo : would be nice to have MetadataBuilder still do the handling of CfgXmlAccessService here + // another option is to immediately handle them here (probably in mergeSettings?) as we encounter them... + final CfgXmlAccessService cfgXmlAccessService = standardServiceRegistry.getService( CfgXmlAccessService.class ); + if ( cfgXmlAccessService.getAggregatedConfig() != null ) { + if ( cfgXmlAccessService.getAggregatedConfig().getMappingReferences() != null ) { + for ( MappingReference mappingReference : cfgXmlAccessService.getAggregatedConfig() + .getMappingReferences() ) { + mappingReference.apply( metadataSources ); + } } } - } - this.managedResources = MetadataBuildingProcess.prepare( - metadataSources, - metamodelBuilder.getBootstrapContext() - ); - - final Object validatorFactory = configurationValues.get( org.hibernate.cfg.AvailableSettings.JPA_VALIDATION_FACTORY ); - if ( validatorFactory == null ) { - withValidatorFactory( configurationValues.get( org.hibernate.cfg.AvailableSettings.JAKARTA_JPA_VALIDATION_FACTORY ) ); - } - else { - withValidatorFactory( validatorFactory ); - } - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // push back class transformation to the environment; for the time being this only has any effect in EE - // container situations, calling back into PersistenceUnitInfo#addClassTransformer - - final boolean dirtyTrackingEnabled = readBooleanConfigurationValue( AvailableSettings.ENHANCER_ENABLE_DIRTY_TRACKING ); - final boolean lazyInitializationEnabled = readBooleanConfigurationValue( AvailableSettings.ENHANCER_ENABLE_LAZY_INITIALIZATION ); - final boolean associationManagementEnabled = readBooleanConfigurationValue( AvailableSettings.ENHANCER_ENABLE_ASSOCIATION_MANAGEMENT ); - - if ( dirtyTrackingEnabled || lazyInitializationEnabled || associationManagementEnabled ) { - EnhancementContext enhancementContext = getEnhancementContext( - dirtyTrackingEnabled, - lazyInitializationEnabled, - associationManagementEnabled + this.managedResources = MetadataBuildingProcess.prepare( + metadataSources, + metamodelBuilder.getBootstrapContext() ); - persistenceUnit.pushClassTransformer( enhancementContext ); - } + final Object validatorFactory = configurationValues.get( org.hibernate.cfg.AvailableSettings.JPA_VALIDATION_FACTORY ); + if ( validatorFactory == null ) { + withValidatorFactory( configurationValues.get( org.hibernate.cfg.AvailableSettings.JAKARTA_JPA_VALIDATION_FACTORY ) ); + } + else { + withValidatorFactory( validatorFactory ); + } - // for the time being we want to revoke access to the temp ClassLoader if one was passed - metamodelBuilder.applyTempClassLoader( null ); + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // push back class transformation to the environment; for the time being this only has any effect in EE + // container situations, calling back into PersistenceUnitInfo#addClassTransformer + + final boolean dirtyTrackingEnabled = readBooleanConfigurationValue( AvailableSettings.ENHANCER_ENABLE_DIRTY_TRACKING ); + final boolean lazyInitializationEnabled = readBooleanConfigurationValue( AvailableSettings.ENHANCER_ENABLE_LAZY_INITIALIZATION ); + final boolean associationManagementEnabled = readBooleanConfigurationValue( AvailableSettings.ENHANCER_ENABLE_ASSOCIATION_MANAGEMENT ); + + if ( dirtyTrackingEnabled || lazyInitializationEnabled || associationManagementEnabled ) { + EnhancementContext enhancementContext = getEnhancementContext( + dirtyTrackingEnabled, + lazyInitializationEnabled, + associationManagementEnabled + ); + + persistenceUnit.pushClassTransformer( enhancementContext ); + } + + // for the time being we want to revoke access to the temp ClassLoader if one was passed + metamodelBuilder.applyTempClassLoader( null ); + } + catch (Throwable t) { + bsr.close(); + cleanup(); + throw t; + } } /** @@ -532,8 +540,9 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil if ( keyString.startsWith( JACC_PREFIX ) ) { if( !JACC_CONTEXT_ID.equals( keyString ) && !JACC_ENABLED.equals( keyString )) { if ( jaccContextId == null ) { - LOG.debug( - "Found JACC permission grant [%s] in properties, but no JACC context id was specified; ignoring" + LOG.debugf( + "Found JACC permission grant [%s] in properties, but no JACC context id was specified; ignoring", + keyString ); } else { @@ -716,7 +725,7 @@ public class EntityManagerFactoryBuilderImpl implements EntityManagerFactoryBuil if ( txnType == null ) { // is it more appropriate to have this be based on bootstrap entry point (EE vs SE)? - LOG.debugf( "PersistenceUnitTransactionType not specified - falling back to RESOURCE_LOCAL" ); + LOG.debug( "PersistenceUnitTransactionType not specified - falling back to RESOURCE_LOCAL" ); txnType = PersistenceUnitTransactionType.RESOURCE_LOCAL; } diff --git a/hibernate-core/src/test/java/org/hibernate/cache/internal/CacheKeyImplementationHashCodeTest.java b/hibernate-core/src/test/java/org/hibernate/cache/internal/CacheKeyImplementationHashCodeTest.java index 89160be926..a9652bb499 100644 --- a/hibernate-core/src/test/java/org/hibernate/cache/internal/CacheKeyImplementationHashCodeTest.java +++ b/hibernate-core/src/test/java/org/hibernate/cache/internal/CacheKeyImplementationHashCodeTest.java @@ -34,22 +34,23 @@ public class CacheKeyImplementationHashCodeTest { @Test @TestForIssue( jiraKey = "HHH-12746") public void test() { - ServiceRegistryImplementor serviceRegistry = ( - ServiceRegistryImplementor) new StandardServiceRegistryBuilder().build(); - MetadataSources ms = new MetadataSources( serviceRegistry ); - ms.addAnnotatedClass( AnEntity.class ).addAnnotatedClass( AnotherEntity.class ); - Metadata metadata = ms.buildMetadata(); - final SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); - SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) sfb.build(); + try (ServiceRegistryImplementor serviceRegistry = ( + ServiceRegistryImplementor) new StandardServiceRegistryBuilder().build()) { + MetadataSources ms = new MetadataSources( serviceRegistry ); + ms.addAnnotatedClass( AnEntity.class ).addAnnotatedClass( AnotherEntity.class ); + Metadata metadata = ms.buildMetadata(); + final SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); + SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) sfb.build(); - CacheKeyImplementation anEntityCacheKey = createCacheKeyImplementation( - 1, sessionFactory.getMetamodel().entityPersister( AnEntity.class ), sessionFactory - ); - CacheKeyImplementation anotherEntityCacheKey = createCacheKeyImplementation( - 1, sessionFactory.getMetamodel().entityPersister( AnotherEntity.class ), sessionFactory - ); - assertFalse( anEntityCacheKey.equals( anotherEntityCacheKey ) ); + CacheKeyImplementation anEntityCacheKey = createCacheKeyImplementation( + 1, sessionFactory.getMetamodel().entityPersister( AnEntity.class ), sessionFactory + ); + CacheKeyImplementation anotherEntityCacheKey = createCacheKeyImplementation( + 1, sessionFactory.getMetamodel().entityPersister( AnotherEntity.class ), sessionFactory + ); + assertFalse( anEntityCacheKey.equals( anotherEntityCacheKey ) ); + } } private CacheKeyImplementation createCacheKeyImplementation( diff --git a/hibernate-core/src/test/java/org/hibernate/dialect/resolver/DialectFactoryTest.java b/hibernate-core/src/test/java/org/hibernate/dialect/resolver/DialectFactoryTest.java index 7eaf8d8406..0d9ba376be 100644 --- a/hibernate-core/src/test/java/org/hibernate/dialect/resolver/DialectFactoryTest.java +++ b/hibernate-core/src/test/java/org/hibernate/dialect/resolver/DialectFactoryTest.java @@ -22,6 +22,7 @@ import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfoSource; import org.hibernate.engine.jdbc.dialect.spi.DialectResolver; import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.testing.junit4.BaseUnitTestCase; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -50,6 +51,13 @@ public class DialectFactoryTest extends BaseUnitTestCase { dialectFactory.injectServices( (ServiceRegistryImplementor) registry ); } + @After + public void destroy() { + if ( registry != null ) { + registry.close(); + } + } + @Test public void testExplicitShortNameUse() { final Map configValues = new HashMap(); diff --git a/hibernate-core/src/test/java/org/hibernate/id/enhanced/SequenceStyleConfigUnitTest.java b/hibernate-core/src/test/java/org/hibernate/id/enhanced/SequenceStyleConfigUnitTest.java index d706441082..27af9ba116 100644 --- a/hibernate-core/src/test/java/org/hibernate/id/enhanced/SequenceStyleConfigUnitTest.java +++ b/hibernate-core/src/test/java/org/hibernate/id/enhanced/SequenceStyleConfigUnitTest.java @@ -38,11 +38,9 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { */ @Test public void testDefaultedSequenceBackedConfiguration() { - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, SequenceDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); SequenceStyleGenerator generator = new SequenceStyleGenerator(); generator.configure( StandardBasicTypes.LONG, props, serviceRegistry ); @@ -55,9 +53,6 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( NoopOptimizer.class, generator.getOptimizer().getClass() ); assertEquals( SequenceStyleGenerator.DEF_SEQUENCE_NAME, generator.getDatabaseStructure().getName() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } private Properties buildGeneratorPropertiesBase(StandardServiceRegistry serviceRegistry) { @@ -74,11 +69,9 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { */ @Test public void testDefaultedTableBackedConfiguration() { - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, TableDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); SequenceStyleGenerator generator = new SequenceStyleGenerator(); generator.configure( StandardBasicTypes.LONG, props, serviceRegistry ); @@ -91,9 +84,6 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( NoopOptimizer.class, generator.getOptimizer().getClass() ); assertEquals( SequenceStyleGenerator.DEF_SEQUENCE_NAME, generator.getDatabaseStructure().getName() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } /** @@ -104,11 +94,9 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { @Test public void testDefaultOptimizerBasedOnIncrementBackedBySequence() { // for dialects which do not support pooled sequences, we default to pooled+table - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, SequenceDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); props.setProperty( SequenceStyleGenerator.INCREMENT_PARAM, "10" ); @@ -123,16 +111,11 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( PooledOptimizer.class, generator.getOptimizer().getClass() ); assertEquals( SequenceStyleGenerator.DEF_SEQUENCE_NAME, generator.getDatabaseStructure().getName() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } // for dialects which do support pooled sequences, we default to pooled+sequence - serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, PooledSequenceDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); props.setProperty( SequenceStyleGenerator.INCREMENT_PARAM, "10" ); @@ -146,9 +129,6 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( PooledOptimizer.class, generator.getOptimizer().getClass() ); assertEquals( SequenceStyleGenerator.DEF_SEQUENCE_NAME, generator.getDatabaseStructure().getName() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } /** @@ -158,11 +138,9 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { */ @Test public void testDefaultOptimizerBasedOnIncrementBackedByTable() { - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, TableDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); props.setProperty( SequenceStyleGenerator.INCREMENT_PARAM, "10" ); @@ -176,9 +154,6 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( PooledOptimizer.class, generator.getOptimizer().getClass() ); assertEquals( SequenceStyleGenerator.DEF_SEQUENCE_NAME, generator.getDatabaseStructure().getName() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } /** @@ -186,11 +161,9 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { */ @Test public void testForceTableUse() { - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, SequenceDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); props.setProperty( SequenceStyleGenerator.FORCE_TBL_PARAM, "true" ); @@ -204,9 +177,6 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( NoopOptimizer.class, generator.getOptimizer().getClass() ); assertEquals( SequenceStyleGenerator.DEF_SEQUENCE_NAME, generator.getDatabaseStructure().getName() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } /** @@ -214,12 +184,10 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { */ @Test public void testExplicitOptimizerWithExplicitIncrementSize() { - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() - .applySetting( AvailableSettings.DIALECT, SequenceDialect.class.getName() ) - .build(); - // optimizer=none w/ increment > 1 => should honor optimizer - try { + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .applySetting( AvailableSettings.DIALECT, SequenceDialect.class.getName() ) + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); props.setProperty( SequenceStyleGenerator.OPT_PARAM, StandardOptimizerDescriptor.NONE.getExternalName() ); props.setProperty( SequenceStyleGenerator.INCREMENT_PARAM, "20" ); @@ -264,18 +232,13 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertEquals( 20, generator.getOptimizer().getIncrementSize() ); assertEquals( 20, generator.getDatabaseStructure().getIncrementSize() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } @Test public void testPreferredPooledOptimizerSetting() { - StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.DIALECT, PooledSequenceDialect.class.getName() ) - .build(); - - try { + .build()) { Properties props = buildGeneratorPropertiesBase( serviceRegistry ); props.setProperty( SequenceStyleGenerator.INCREMENT_PARAM, "20" ); SequenceStyleGenerator generator = new SequenceStyleGenerator(); @@ -304,9 +267,6 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { assertClassAssignability( SequenceStructure.class, generator.getDatabaseStructure().getClass() ); assertClassAssignability( PooledLoThreadLocalOptimizer.class, generator.getOptimizer().getClass() ); } - finally { - StandardServiceRegistryBuilder.destroy( serviceRegistry ); - } } public static class TableDialect extends Dialect { @@ -319,9 +279,11 @@ public class SequenceStyleConfigUnitTest extends BaseUnitTestCase { public boolean supportsSequences() { return true; } + @Override public boolean supportsPooledSequences() { return false; } + @Override public String getSequenceNextValString(String sequenceName) throws MappingException { return ""; } diff --git a/hibernate-core/src/test/java/org/hibernate/jpa/test/cdi/NoCdiAvailableTestDelegate.java b/hibernate-core/src/test/java/org/hibernate/jpa/test/cdi/NoCdiAvailableTestDelegate.java index e320feecd1..f683442f06 100644 --- a/hibernate-core/src/test/java/org/hibernate/jpa/test/cdi/NoCdiAvailableTestDelegate.java +++ b/hibernate-core/src/test/java/org/hibernate/jpa/test/cdi/NoCdiAvailableTestDelegate.java @@ -29,6 +29,6 @@ public class NoCdiAvailableTestDelegate { new HibernatePersistenceProvider().createContainerEntityManagerFactory( new PersistenceUnitInfoAdapter(), Collections.singletonMap( AvailableSettings.CDI_BEAN_MANAGER, new Object() ) - ); + ).close(); } } diff --git a/hibernate-core/src/test/java/org/hibernate/jpa/test/ejb3configuration/ConfigurationObjectSettingTest.java b/hibernate-core/src/test/java/org/hibernate/jpa/test/ejb3configuration/ConfigurationObjectSettingTest.java index b1078c148b..543b994654 100644 --- a/hibernate-core/src/test/java/org/hibernate/jpa/test/ejb3configuration/ConfigurationObjectSettingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/jpa/test/ejb3configuration/ConfigurationObjectSettingTest.java @@ -11,7 +11,7 @@ import javax.persistence.SharedCacheMode; import javax.persistence.ValidationMode; import org.hibernate.HibernateException; -import org.hibernate.jpa.AvailableSettings; +import org.hibernate.cfg.AvailableSettings; import org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl; import org.hibernate.jpa.boot.spi.Bootstrap; import org.hibernate.jpa.test.PersistenceUnitInfoAdapter; @@ -32,22 +32,25 @@ public class ConfigurationObjectSettingTest extends BaseUnitTestCase { public void testContainerBootstrapSharedCacheMode() { // first, via the integration vars PersistenceUnitInfoAdapter empty = new PersistenceUnitInfoAdapter(); + EntityManagerFactoryBuilderImpl builder = null; { // as object - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( empty, - Collections.singletonMap( AvailableSettings.SHARED_CACHE_MODE, SharedCacheMode.DISABLE_SELECTIVE ) + Collections.singletonMap( AvailableSettings.JPA_SHARED_CACHE_MODE, SharedCacheMode.DISABLE_SELECTIVE ) ); - assertEquals( SharedCacheMode.DISABLE_SELECTIVE, builder.getConfigurationValues().get( AvailableSettings.SHARED_CACHE_MODE ) ); + assertEquals( SharedCacheMode.DISABLE_SELECTIVE, builder.getConfigurationValues().get( AvailableSettings.JPA_SHARED_CACHE_MODE ) ); } + builder.cancel(); { // as string - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( empty, - Collections.singletonMap( AvailableSettings.SHARED_CACHE_MODE, SharedCacheMode.DISABLE_SELECTIVE.name() ) + Collections.singletonMap( AvailableSettings.JPA_SHARED_CACHE_MODE, SharedCacheMode.DISABLE_SELECTIVE.name() ) ); - assertEquals( SharedCacheMode.DISABLE_SELECTIVE.name(), builder.getConfigurationValues().get( AvailableSettings.SHARED_CACHE_MODE ) ); + assertEquals( SharedCacheMode.DISABLE_SELECTIVE.name(), builder.getConfigurationValues().get( AvailableSettings.JPA_SHARED_CACHE_MODE ) ); } + builder.cancel(); // next, via the PUI PersistenceUnitInfoAdapter adapter = new PersistenceUnitInfoAdapter() { @@ -57,43 +60,48 @@ public class ConfigurationObjectSettingTest extends BaseUnitTestCase { } }; { - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( adapter, null ); - assertEquals( SharedCacheMode.ENABLE_SELECTIVE, builder.getConfigurationValues().get( AvailableSettings.SHARED_CACHE_MODE ) ); + assertEquals( SharedCacheMode.ENABLE_SELECTIVE, builder.getConfigurationValues().get( AvailableSettings.JPA_SHARED_CACHE_MODE ) ); } + builder.cancel(); // via both, integration vars should take precedence { - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( adapter, - Collections.singletonMap( AvailableSettings.SHARED_CACHE_MODE, SharedCacheMode.DISABLE_SELECTIVE ) + Collections.singletonMap( AvailableSettings.JPA_SHARED_CACHE_MODE, SharedCacheMode.DISABLE_SELECTIVE ) ); - assertEquals( SharedCacheMode.DISABLE_SELECTIVE, builder.getConfigurationValues().get( AvailableSettings.SHARED_CACHE_MODE ) ); + assertEquals( SharedCacheMode.DISABLE_SELECTIVE, builder.getConfigurationValues().get( AvailableSettings.JPA_SHARED_CACHE_MODE ) ); } + builder.cancel(); } @Test public void testContainerBootstrapValidationMode() { // first, via the integration vars PersistenceUnitInfoAdapter empty = new PersistenceUnitInfoAdapter(); + EntityManagerFactoryBuilderImpl builder = null; { // as object - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( empty, - Collections.singletonMap( AvailableSettings.VALIDATION_MODE, ValidationMode.CALLBACK ) + Collections.singletonMap( AvailableSettings.JPA_VALIDATION_MODE, ValidationMode.CALLBACK ) ); - assertEquals( ValidationMode.CALLBACK, builder.getConfigurationValues().get( AvailableSettings.VALIDATION_MODE ) ); + assertEquals( ValidationMode.CALLBACK, builder.getConfigurationValues().get( AvailableSettings.JPA_VALIDATION_MODE ) ); } + builder.cancel(); { // as string - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( empty, - Collections.singletonMap( AvailableSettings.VALIDATION_MODE, ValidationMode.CALLBACK.name() ) + Collections.singletonMap( AvailableSettings.JPA_VALIDATION_MODE, ValidationMode.CALLBACK.name() ) ); - assertEquals( ValidationMode.CALLBACK.name(), builder.getConfigurationValues().get( AvailableSettings.VALIDATION_MODE ) ); + assertEquals( ValidationMode.CALLBACK.name(), builder.getConfigurationValues().get( AvailableSettings.JPA_VALIDATION_MODE ) ); } + builder.cancel(); // next, via the PUI PersistenceUnitInfoAdapter adapter = new PersistenceUnitInfoAdapter() { @@ -103,21 +111,23 @@ public class ConfigurationObjectSettingTest extends BaseUnitTestCase { } }; { - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( adapter, null ); - assertEquals( ValidationMode.CALLBACK, builder.getConfigurationValues().get( AvailableSettings.VALIDATION_MODE ) ); + assertEquals( ValidationMode.CALLBACK, builder.getConfigurationValues().get( AvailableSettings.JPA_VALIDATION_MODE ) ); } + builder.cancel(); // via both, integration vars should take precedence { - EntityManagerFactoryBuilderImpl builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( + builder = (EntityManagerFactoryBuilderImpl) Bootstrap.getEntityManagerFactoryBuilder( adapter, - Collections.singletonMap( AvailableSettings.VALIDATION_MODE, ValidationMode.NONE ) + Collections.singletonMap( AvailableSettings.JPA_VALIDATION_MODE, ValidationMode.NONE ) ); - assertEquals( ValidationMode.NONE, builder.getConfigurationValues().get( AvailableSettings.VALIDATION_MODE ) ); + assertEquals( ValidationMode.NONE, builder.getConfigurationValues().get( AvailableSettings.JPA_VALIDATION_MODE ) ); } + builder.cancel(); } @Test @@ -127,8 +137,8 @@ public class ConfigurationObjectSettingTest extends BaseUnitTestCase { try { Bootstrap.getEntityManagerFactoryBuilder( adapter, - Collections.singletonMap( AvailableSettings.VALIDATION_FACTORY, token ) - ); + Collections.singletonMap( AvailableSettings.JPA_VALIDATION_FACTORY, token ) + ).cancel(); fail( "Was expecting error as token did not implement ValidatorFactory" ); } catch ( HibernateException e ) { diff --git a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaCreateDropUtf8WithoutHbm2DdlCharsetNameTest.java b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaCreateDropUtf8WithoutHbm2DdlCharsetNameTest.java index e3d91076b8..aa96d9cec4 100644 --- a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaCreateDropUtf8WithoutHbm2DdlCharsetNameTest.java +++ b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaCreateDropUtf8WithoutHbm2DdlCharsetNameTest.java @@ -23,6 +23,7 @@ import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; import org.hibernate.testing.TestForIssue; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -63,6 +64,13 @@ public class SchemaCreateDropUtf8WithoutHbm2DdlCharsetNameTest { ); } + @After + public void destroy() { + if ( entityManagerFactoryBuilder != null ) { + entityManagerFactoryBuilder.cancel(); + } + } + @Test @TestForIssue(jiraKey = "HHH-10972") public void testEncoding() throws Exception { diff --git a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaDatabaseFileGenerationFailureTest.java b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaDatabaseFileGenerationFailureTest.java index 037d87a913..a72da433c7 100644 --- a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaDatabaseFileGenerationFailureTest.java +++ b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaDatabaseFileGenerationFailureTest.java @@ -29,6 +29,7 @@ import org.hibernate.tool.schema.spi.CommandAcceptanceException; import org.hibernate.tool.schema.spi.SchemaManagementException; import org.hibernate.testing.TestForIssue; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -60,6 +61,13 @@ public class SchemaDatabaseFileGenerationFailureTest { ); } + @After + public void destroy() { + if ( entityManagerFactoryBuilder != null ) { + entityManagerFactoryBuilder.cancel(); + } + } + @Test @TestForIssue(jiraKey = "HHH-12192") public void testErrorMessageContainsTheFailingDDLCommand() { @@ -83,7 +91,6 @@ public class SchemaDatabaseFileGenerationFailureTest { SQLException root = (SQLException) e.getCause().getCause().getCause(); assertEquals( "Expected", root.getMessage() ); - } } @@ -119,5 +126,4 @@ public class SchemaDatabaseFileGenerationFailureTest { config.put( org.hibernate.jpa.AvailableSettings.LOADED_CLASSES, classes ); return config; } - } diff --git a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationFailureTest.java b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationFailureTest.java index e08c873dab..578e1c1801 100644 --- a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationFailureTest.java +++ b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationFailureTest.java @@ -27,6 +27,7 @@ import org.hibernate.tool.schema.spi.CommandAcceptanceException; import org.hibernate.tool.schema.spi.SchemaManagementException; import org.hibernate.testing.TestForIssue; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -52,12 +53,19 @@ public class SchemaScriptFileGenerationFailureTest { ); } + @After + public void destroy() { + if ( entityManagerFactoryBuilder != null ) { + entityManagerFactoryBuilder.cancel(); + } + } + @Test @TestForIssue(jiraKey = "HHH-12192") public void testErrorMessageContainsTheFailingDDLCommand() { try { entityManagerFactoryBuilder.generateSchema(); - fail( "Should haave thrown IOException" ); + fail( "Should have thrown IOException" ); } catch (Exception e) { assertTrue( e instanceof PersistenceException ); @@ -126,7 +134,6 @@ public class SchemaScriptFileGenerationFailureTest { @Override public void close() throws IOException { - } } } diff --git a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationTest.java b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationTest.java index c70aca3fbe..02ca66ac72 100644 --- a/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/jpa/test/schemagen/SchemaScriptFileGenerationTest.java @@ -24,6 +24,7 @@ import org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder; import org.hibernate.jpa.boot.spi.PersistenceUnitDescriptor; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -53,6 +54,13 @@ public class SchemaScriptFileGenerationTest { ); } + @After + public void destroy() { + if ( entityManagerFactoryBuilder != null ) { + entityManagerFactoryBuilder.cancel(); + } + } + @Test @TestForIssue(jiraKey = "10601") public void testGenerateSchemaDoesNotProduceTheSameStatementTwice() throws Exception { @@ -109,5 +117,4 @@ public class SchemaScriptFileGenerationTest { config.put( org.hibernate.jpa.AvailableSettings.LOADED_CLASSES, classes ); return config; } - } diff --git a/hibernate-core/src/test/java/org/hibernate/serialization/SessionFactorySerializationTest.java b/hibernate-core/src/test/java/org/hibernate/serialization/SessionFactorySerializationTest.java index 4dd68095e3..cc9a71dea1 100644 --- a/hibernate-core/src/test/java/org/hibernate/serialization/SessionFactorySerializationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/serialization/SessionFactorySerializationTest.java @@ -36,21 +36,27 @@ public class SessionFactorySerializationTest extends BaseUnitTestCase { Configuration cfg = new Configuration() .setProperty( AvailableSettings.SESSION_FACTORY_NAME, NAME ) .setProperty( AvailableSettings.SESSION_FACTORY_NAME_IS_JNDI, "false" ); // default is true - SessionFactory factory = cfg.buildSessionFactory(); + try (SessionFactory factory = cfg.buildSessionFactory()) { - // we need to do some tricking here so that Hibernate thinks the deserialization happens in a - // different VM - String uuid = ( (SessionFactoryImplementor) factory ).getUuid(); - // deregister under this uuid... - SessionFactoryRegistry.INSTANCE.removeSessionFactory( uuid, NAME, false, null ); - // and then register under a different uuid... - SessionFactoryRegistry.INSTANCE.addSessionFactory( "some-other-uuid", NAME, false, factory, null ); + // we need to do some tricking here so that Hibernate thinks the deserialization happens in a + // different VM + String uuid = ( (SessionFactoryImplementor) factory ).getUuid(); + // deregister under this uuid... + SessionFactoryRegistry.INSTANCE.removeSessionFactory( uuid, NAME, false, null ); + // and then register under a different uuid... + SessionFactoryRegistry.INSTANCE.addSessionFactory( + "some-other-uuid", + NAME, + false, + factory, + null + ); - SessionFactory factory2 = (SessionFactory) SerializationHelper.clone( factory ); - assertSame( factory, factory2 ); + SessionFactory factory2 = (SessionFactory) SerializationHelper.clone( factory ); + assertSame( factory, factory2 ); - SessionFactoryRegistry.INSTANCE.removeSessionFactory( "some-other-uuid", NAME, false, null ); - factory.close(); + SessionFactoryRegistry.INSTANCE.removeSessionFactory( "some-other-uuid", NAME, false, null ); + } assertFalse( SessionFactoryRegistry.INSTANCE.hasRegistrations() ); } @@ -61,25 +67,31 @@ public class SessionFactorySerializationTest extends BaseUnitTestCase { // here, the test should fail based just on attempted uuid resolution Configuration cfg = new Configuration() .setProperty( AvailableSettings.SESSION_FACTORY_NAME_IS_JNDI, "false" ); // default is true - SessionFactory factory = cfg.buildSessionFactory(); + try (SessionFactory factory = cfg.buildSessionFactory()) { - // we need to do some tricking here so that Hibernate thinks the deserialization happens in a - // different VM - String uuid = ( (SessionFactoryImplementor) factory ).getUuid(); - // deregister under this uuid... - SessionFactoryRegistry.INSTANCE.removeSessionFactory( uuid, null, false, null ); - // and then register under a different uuid... - SessionFactoryRegistry.INSTANCE.addSessionFactory( "some-other-uuid", null, false, factory, null ); + // we need to do some tricking here so that Hibernate thinks the deserialization happens in a + // different VM + String uuid = ( (SessionFactoryImplementor) factory ).getUuid(); + // deregister under this uuid... + SessionFactoryRegistry.INSTANCE.removeSessionFactory( uuid, null, false, null ); + // and then register under a different uuid... + SessionFactoryRegistry.INSTANCE.addSessionFactory( + "some-other-uuid", + null, + false, + factory, + null + ); - try { - SerializationHelper.clone( factory ); - fail( "Expecting an error" ); + try { + SerializationHelper.clone( factory ); + fail( "Expecting an error" ); + } + catch (SerializationException expected) { + } + + SessionFactoryRegistry.INSTANCE.removeSessionFactory( "some-other-uuid", null, false, null ); } - catch ( SerializationException expected ) { - } - - SessionFactoryRegistry.INSTANCE.removeSessionFactory( "some-other-uuid", null, false, null ); - factory.close(); assertFalse( SessionFactoryRegistry.INSTANCE.hasRegistrations() ); } diff --git a/hibernate-core/src/test/java/org/hibernate/service/ServiceRegistryTest.java b/hibernate-core/src/test/java/org/hibernate/service/ServiceRegistryTest.java index 710d3efd0f..3adc6e2769 100644 --- a/hibernate-core/src/test/java/org/hibernate/service/ServiceRegistryTest.java +++ b/hibernate-core/src/test/java/org/hibernate/service/ServiceRegistryTest.java @@ -15,6 +15,8 @@ import org.hibernate.service.spi.ServiceRegistryAwareService; import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.service.spi.Startable; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.hibernate.testing.TestForIssue; @@ -25,9 +27,18 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; public class ServiceRegistryTest { - private final ServiceRegistry registry = buildRegistry(); + private ServiceRegistry registry; private final static int NUMBER_OF_THREADS = 100; - private StandardServiceRegistryBuilder standardServiceRegistryBuilder; + + @Before + public void init() { + registry = buildRegistry(); + } + + @After + public void destroy() { + registry.close(); + } @Test @TestForIssue(jiraKey = "HHH-10427") @@ -46,9 +57,6 @@ public class ServiceRegistryTest { } } - - standardServiceRegistryBuilder.destroy( registry ); - } @Test @@ -82,8 +90,7 @@ public class ServiceRegistryTest { } private ServiceRegistry buildRegistry() { - standardServiceRegistryBuilder = new StandardServiceRegistryBuilder(); - return standardServiceRegistryBuilder.addInitiator( new SlowServiceInitiator() ) + return new StandardServiceRegistryBuilder().addInitiator( new SlowServiceInitiator() ) .addInitiator( new NullServiceInitiator() ) .build(); } diff --git a/hibernate-core/src/test/java/org/hibernate/service/internal/ServiceRegistryClosingCascadeTest.java b/hibernate-core/src/test/java/org/hibernate/service/internal/ServiceRegistryClosingCascadeTest.java index b39d43171c..71726675f4 100644 --- a/hibernate-core/src/test/java/org/hibernate/service/internal/ServiceRegistryClosingCascadeTest.java +++ b/hibernate-core/src/test/java/org/hibernate/service/internal/ServiceRegistryClosingCascadeTest.java @@ -30,9 +30,9 @@ public class ServiceRegistryClosingCascadeTest extends BaseUnitTestCase { StandardServiceRegistry sr = new StandardServiceRegistryBuilder(bsr).build(); assertTrue( ( (BootstrapServiceRegistryImpl) bsr ).isActive() ); Configuration config = new Configuration(); - SessionFactory sf = config.buildSessionFactory( sr ); + try (SessionFactory sf = config.buildSessionFactory( sr )) { - sf.close(); + } assertFalse( ( (BootstrapServiceRegistryImpl) bsr ).isActive() ); } } diff --git a/hibernate-core/src/test/java/org/hibernate/subclassProxyInterface/SubclassProxyInterfaceTest.java b/hibernate-core/src/test/java/org/hibernate/subclassProxyInterface/SubclassProxyInterfaceTest.java index 7307370a5a..31a830f20d 100644 --- a/hibernate-core/src/test/java/org/hibernate/subclassProxyInterface/SubclassProxyInterfaceTest.java +++ b/hibernate-core/src/test/java/org/hibernate/subclassProxyInterface/SubclassProxyInterfaceTest.java @@ -24,8 +24,8 @@ public class SubclassProxyInterfaceTest extends BaseUnitTestCase { final Configuration cfg = new Configuration() .setProperty( Environment.DIALECT, H2Dialect.class.getName() ) .addClass( Person.class ); - ServiceRegistry serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( cfg.getProperties() ); - cfg.buildSessionFactory( serviceRegistry ).close(); - ServiceRegistryBuilder.destroy( serviceRegistry ); + try (ServiceRegistry serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( cfg.getProperties() )) { + cfg.buildSessionFactory( serviceRegistry ).close(); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/ConfigurationTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/ConfigurationTest.java index 8b0c4376f7..3435752bdd 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/ConfigurationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/ConfigurationTest.java @@ -30,25 +30,26 @@ import static org.junit.Assert.fail; * @author Emmanuel Bernard */ public class ConfigurationTest { - @Test - public void testDeclarativeMix() throws Exception { + @Test + public void testDeclarativeMix() { Configuration cfg = new Configuration(); cfg.configure( "org/hibernate/test/annotations/hibernate.cfg.xml" ); cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); - SessionFactory sf = cfg.buildSessionFactory(); - assertNotNull( sf ); - Session s = sf.openSession(); - Transaction tx = s.beginTransaction(); - Query q = s.createQuery( "from Boat" ); - assertEquals( 0, q.list().size() ); - q = s.createQuery( "from Plane" ); - assertEquals( 0, q.list().size() ); - tx.commit(); - s.close(); - sf.close(); + try (SessionFactory sf = cfg.buildSessionFactory()) { + assertNotNull( sf ); + Session s = sf.openSession(); + Transaction tx = s.beginTransaction(); + Query q = s.createQuery( "from Boat" ); + assertEquals( 0, q.list().size() ); + q = s.createQuery( "from Plane" ); + assertEquals( 0, q.list().size() ); + tx.commit(); + s.close(); + } } - @Test - public void testIgnoringHbm() throws Exception { + + @Test + public void testIgnoringHbm() { Configuration cfg = new Configuration(); cfg.configure( "org/hibernate/test/annotations/hibernate.cfg.xml" ); cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); @@ -84,90 +85,93 @@ public class ConfigurationTest { } } - @Test - public void testPrecedenceHbm() throws Exception { + @Test + public void testPrecedenceHbm() { Configuration cfg = new Configuration(); cfg.configure( "org/hibernate/test/annotations/hibernate.cfg.xml" ); cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); cfg.addAnnotatedClass( Boat.class ); - SessionFactory sf = cfg.buildSessionFactory(); - assertNotNull( sf ); - Session s = sf.openSession(); - s.getTransaction().begin(); - Boat boat = new Boat(); - boat.setSize( 12 ); - boat.setWeight( 34 ); - s.persist( boat ); - s.getTransaction().commit(); - s.clear(); - Transaction tx = s.beginTransaction(); - boat = (Boat) s.get( Boat.class, boat.getId() ); - assertTrue( "Annotation has precedence", 34 != boat.getWeight() ); - s.delete( boat ); - //s.getTransaction().commit(); - tx.commit(); - s.close(); - sf.close(); + try (SessionFactory sf = cfg.buildSessionFactory()) { + assertNotNull( sf ); + Session s = sf.openSession(); + s.getTransaction().begin(); + Boat boat = new Boat(); + boat.setSize( 12 ); + boat.setWeight( 34 ); + s.persist( boat ); + s.getTransaction().commit(); + s.clear(); + Transaction tx = s.beginTransaction(); + boat = (Boat) s.get( Boat.class, boat.getId() ); + assertTrue( "Annotation has precedence", 34 != boat.getWeight() ); + s.delete( boat ); + //s.getTransaction().commit(); + tx.commit(); + s.close(); + } } - @Test - public void testPrecedenceAnnotation() throws Exception { + + @Test + public void testPrecedenceAnnotation() { Configuration cfg = new Configuration(); cfg.configure( "org/hibernate/test/annotations/hibernate.cfg.xml" ); cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); cfg.setProperty( Configuration.ARTEFACT_PROCESSING_ORDER, "class, hbm" ); cfg.addAnnotatedClass( Boat.class ); - SessionFactory sf = cfg.buildSessionFactory(); - assertNotNull( sf ); - Session s = sf.openSession(); - s.getTransaction().begin(); - Boat boat = new Boat(); - boat.setSize( 12 ); - boat.setWeight( 34 ); - s.persist( boat ); - s.getTransaction().commit(); - s.clear(); - Transaction tx = s.beginTransaction(); - boat = (Boat) s.get( Boat.class, boat.getId() ); - assertTrue( "Annotation has precedence", 34 == boat.getWeight() ); - s.delete( boat ); - tx.commit(); - s.close(); - sf.close(); + try (SessionFactory sf = cfg.buildSessionFactory()) { + assertNotNull( sf ); + Session s = sf.openSession(); + s.getTransaction().begin(); + Boat boat = new Boat(); + boat.setSize( 12 ); + boat.setWeight( 34 ); + s.persist( boat ); + s.getTransaction().commit(); + s.clear(); + Transaction tx = s.beginTransaction(); + boat = (Boat) s.get( Boat.class, boat.getId() ); + assertTrue( "Annotation has precedence", 34 == boat.getWeight() ); + s.delete( boat ); + tx.commit(); + s.close(); + } } - @Test - public void testHbmWithSubclassExtends() throws Exception { + + @Test + public void testHbmWithSubclassExtends() { Configuration cfg = new Configuration(); cfg.configure( "org/hibernate/test/annotations/hibernate.cfg.xml" ); cfg.addClass( Ferry.class ); cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); - SessionFactory sf = cfg.buildSessionFactory(); - assertNotNull( sf ); - Session s = sf.openSession(); - Transaction tx = s.beginTransaction(); - Query q = s.createQuery( "from Ferry" ); - assertEquals( 0, q.list().size() ); - q = s.createQuery( "from Plane" ); - assertEquals( 0, q.list().size() ); - tx.commit(); - s.close(); - sf.close(); + try (SessionFactory sf = cfg.buildSessionFactory()) { + assertNotNull( sf ); + Session s = sf.openSession(); + Transaction tx = s.beginTransaction(); + Query q = s.createQuery( "from Ferry" ); + assertEquals( 0, q.list().size() ); + q = s.createQuery( "from Plane" ); + assertEquals( 0, q.list().size() ); + tx.commit(); + s.close(); + } } - @Test - public void testAnnReferencesHbm() throws Exception { + + @Test + public void testAnnReferencesHbm() { Configuration cfg = new Configuration(); cfg.configure( "org/hibernate/test/annotations/hibernate.cfg.xml" ); cfg.addAnnotatedClass( Port.class ); cfg.setProperty( Environment.HBM2DDL_AUTO, "create-drop" ); - SessionFactory sf = cfg.buildSessionFactory(); - assertNotNull( sf ); - Session s = sf.openSession(); - Transaction tx = s.beginTransaction(); - Query q = s.createQuery( "from Boat" ); - assertEquals( 0, q.list().size() ); - q = s.createQuery( "from Port" ); - assertEquals( 0, q.list().size() ); - tx.commit(); - s.close(); - sf.close(); + try (SessionFactory sf = cfg.buildSessionFactory()) { + assertNotNull( sf ); + Session s = sf.openSession(); + Transaction tx = s.beginTransaction(); + Query q = s.createQuery( "from Boat" ); + assertEquals( 0, q.list().size() ); + q = s.createQuery( "from Port" ); + assertEquals( 0, q.list().size() ); + tx.commit(); + s.close(); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/SafeMappingTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/SafeMappingTest.java index 19e1db4e87..445d4c02b4 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/SafeMappingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/SafeMappingTest.java @@ -44,6 +44,7 @@ public class SafeMappingTest { if ( serviceRegistry != null ) { ServiceRegistryBuilder.destroy( serviceRegistry ); } + cfg.getStandardServiceRegistryBuilder().getBootstrapServiceRegistry().close(); } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/SecuredBindingTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/SecuredBindingTest.java index 5ad40ede70..316f1f5034 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/SecuredBindingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/SecuredBindingTest.java @@ -60,6 +60,7 @@ public class SecuredBindingTest { if ( serviceRegistry != null ) { ServiceRegistryBuilder.destroy( serviceRegistry ); } + ac.getStandardServiceRegistryBuilder().getBootstrapServiceRegistry().close(); } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/backquotes/BackquoteTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/backquotes/BackquoteTest.java index 0583b1bfd2..d99b917665 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/backquotes/BackquoteTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/backquotes/BackquoteTest.java @@ -11,13 +11,14 @@ package org.hibernate.test.annotations.backquotes; import java.io.PrintWriter; import java.io.StringWriter; -import org.jboss.logging.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.hibernate.MappingException; import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.BootstrapServiceRegistry; +import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; import org.hibernate.service.ServiceRegistry; @@ -37,17 +38,21 @@ import static org.junit.Assert.fail; public class BackquoteTest extends BaseUnitTestCase { private ServiceRegistry serviceRegistry; - private SessionFactory sessionFactory; + private SessionFactory sessionFactory; @Before - public void setUp() { + public void setUp() { serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( Environment.getProperties() ); } @After - public void tearDown() { - if(sessionFactory !=null) sessionFactory.close(); - if (serviceRegistry != null) ServiceRegistryBuilder.destroy(serviceRegistry); + public void tearDown() { + if(sessionFactory !=null) { + sessionFactory.close(); + } + if (serviceRegistry != null) { + ServiceRegistryBuilder.destroy(serviceRegistry); + } } @Test @@ -55,15 +60,15 @@ public class BackquoteTest extends BaseUnitTestCase { public void testBackquotes() { try { Configuration config = new Configuration(); - config.addAnnotatedClass(Bug.class); - config.addAnnotatedClass(Category.class); + config.addAnnotatedClass( Bug.class ); + config.addAnnotatedClass( Category.class ); sessionFactory = config.buildSessionFactory( serviceRegistry ); } catch( Exception e ) { StringWriter writer = new StringWriter(); - e.printStackTrace(new PrintWriter(writer)); - log.debug(writer.toString()); - fail(e.getMessage()); + e.printStackTrace( new PrintWriter(writer) ); + log.debug( writer.toString() ); + fail( e.getMessage() ); } finally { if ( sessionFactory != null ) { @@ -83,27 +88,27 @@ public class BackquoteTest extends BaseUnitTestCase { @Test @TestForIssue( jiraKey = "HHH-4647" ) public void testInvalidReferenceToQuotedTableName() { - try { - Configuration config = new Configuration(); - config.addAnnotatedClass(Printer.class); - config.addAnnotatedClass(PrinterCable.class); - sessionFactory = config.buildSessionFactory( serviceRegistry ); - fail("expected MappingException to be thrown"); - } - //we WANT MappingException to be thrown - catch( MappingException e ) { - assertTrue("MappingException was thrown", true); - } - catch(Exception e) { - StringWriter writer = new StringWriter(); - e.printStackTrace(new PrintWriter(writer)); - log.debug(writer.toString()); - fail(e.getMessage()); - } finally { + try (BootstrapServiceRegistry serviceRegistry = new BootstrapServiceRegistryBuilder().build()) { + Configuration config = new Configuration( serviceRegistry ); + config.addAnnotatedClass( Printer.class ); + config.addAnnotatedClass( PrinterCable.class ); + sessionFactory = config.buildSessionFactory( this.serviceRegistry ); + fail( "expected MappingException to be thrown" ); + } + //we WANT MappingException to be thrown + catch( MappingException e ) { + assertTrue("MappingException was thrown", true); + } + catch(Exception e) { + StringWriter writer = new StringWriter(); + e.printStackTrace( new PrintWriter(writer) ); + log.debug( writer.toString() ); + fail( e.getMessage() ); + } finally { if(sessionFactory!=null){ sessionFactory.close(); sessionFactory = null; } } } -} +} \ No newline at end of file diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/configuration/ConfigurationTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/configuration/ConfigurationTest.java index dc7c681996..2ebc58d301 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/configuration/ConfigurationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/configuration/ConfigurationTest.java @@ -8,6 +8,8 @@ //$Id$ package org.hibernate.test.annotations.configuration; +import org.hibernate.boot.registry.BootstrapServiceRegistry; +import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.junit.Assert; @@ -19,8 +21,8 @@ import org.junit.Test; public class ConfigurationTest { @Test public void testMixPackageAndResourceOrdering() throws Exception { - try { - Configuration config = new Configuration(); + try (BootstrapServiceRegistry serviceRegistry = new BootstrapServiceRegistryBuilder().build()) { + Configuration config = new Configuration( serviceRegistry ); config.addResource( "org/hibernate/test/annotations/configuration/orm.xml" ); config.addPackage( "org.hibernate.test.annotations.configuration" ); } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/EmbeddableIntegratorTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/EmbeddableIntegratorTest.java index fb8b8e6cd5..50a41f1ae0 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/EmbeddableIntegratorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/EmbeddableIntegratorTest.java @@ -37,11 +37,9 @@ public class EmbeddableIntegratorTest extends BaseUnitTestCase { */ @Test public void testWithoutIntegrator() { - SessionFactory sf = new Configuration().addAnnotatedClass( Investor.class ) + try (SessionFactory sf = new Configuration().addAnnotatedClass( Investor.class ) .setProperty( "hibernate.hbm2ddl.auto", "create-drop" ) - .buildSessionFactory(); - - try { + .buildSessionFactory()) { Session sess = sf.openSession(); try { sess.getTransaction().begin(); @@ -62,20 +60,14 @@ public class EmbeddableIntegratorTest extends BaseUnitTestCase { } sess.close(); } - finally { - sf.close(); - } } @Test public void testWithTypeContributor() { - SessionFactory sf = new Configuration().addAnnotatedClass( Investor.class ) + try (SessionFactory sf = new Configuration().addAnnotatedClass( Investor.class ) .registerTypeContributor( new InvestorTypeContributor() ) .setProperty( "hibernate.hbm2ddl.auto", "create-drop" ) - .buildSessionFactory(); - - Session sess = sf.openSession(); - try { + .buildSessionFactory(); Session sess = sf.openSession()) { sess.getTransaction().begin(); Investor myInv = getInvestor(); myInv.setId( 2L ); @@ -86,13 +78,6 @@ public class EmbeddableIntegratorTest extends BaseUnitTestCase { Investor inv = (Investor) sess.get( Investor.class, 2L ); assertEquals( new BigDecimal( "100" ), inv.getInvestments().get( 0 ).getAmount().getAmount() ); - }catch (Exception e){ - sess.getTransaction().rollback(); - throw e; - } - finally { - sess.close(); - sf.close(); } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithManyToMany_HHH_11302_Test.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithManyToMany_HHH_11302_Test.java index 6b1ecb2b70..89bebd21b2 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithManyToMany_HHH_11302_Test.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithManyToMany_HHH_11302_Test.java @@ -62,7 +62,9 @@ public class EmbeddableWithManyToMany_HHH_11302_Test ) ); } finally { - serviceRegistry().destroy(); + if ( serviceRegistry() != null ) { + serviceRegistry().destroy(); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_11302_Test.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_11302_Test.java index 0ec874fca4..b558b962ff 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_11302_Test.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_11302_Test.java @@ -62,7 +62,9 @@ public class EmbeddableWithOneToMany_HHH_11302_Test ) ); } finally { - serviceRegistry().destroy(); + if ( serviceRegistry() != null ) { + serviceRegistry().destroy(); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8564_Test.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8564_Test.java index f69c38aaf7..79112d8902 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8564_Test.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8564_Test.java @@ -56,7 +56,9 @@ public class EmbeddableWithOneToMany_HHH_8564_Test ) ); } finally { - serviceRegistry().destroy(); + if ( serviceRegistry() != null ) { + serviceRegistry().destroy(); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8860_Test.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8860_Test.java index 85212876f8..88f339408e 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8860_Test.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/embeddables/collection/EmbeddableWithOneToMany_HHH_8860_Test.java @@ -54,7 +54,9 @@ public class EmbeddableWithOneToMany_HHH_8860_Test ) ); } finally { - serviceRegistry().destroy(); + if ( serviceRegistry() != null ) { + serviceRegistry().destroy(); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/FetchProfileTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/FetchProfileTest.java index 5b507892d7..d2456aff28 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/FetchProfileTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/FetchProfileTest.java @@ -57,19 +57,19 @@ public class FetchProfileTest extends BaseUnitTestCase { config.addAnnotatedClass( Order.class ); config.addAnnotatedClass( SupportTickets.class ); config.addAnnotatedClass( Country.class ); - SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( + try (SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( serviceRegistry - ); + )) { - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "customer-with-orders" ) - ); - assertFalse( - "package info should not be parsed", - sessionImpl.containsFetchProfileDefinition( "package-profile-1" ) - ); - sessionImpl.close(); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "customer-with-orders" ) + ); + assertFalse( + "package info should not be parsed", + sessionImpl.containsFetchProfileDefinition( "package-profile-1" ) + ); + } } @Test @@ -148,15 +148,15 @@ public class FetchProfileTest extends BaseUnitTestCase { .getContextClassLoader() .getResourceAsStream( "org/hibernate/test/annotations/fetchprofile/mappings.hbm.xml" ); config.addInputStream( is ); - SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( + try (SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( serviceRegistry - ); + )) { - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "orders-profile" ) - ); - sessionImpl.close(); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "orders-profile" ) + ); + } // now the same with no xml final MetadataSources metadataSources = new MetadataSources() @@ -187,18 +187,18 @@ public class FetchProfileTest extends BaseUnitTestCase { config.addAnnotatedClass( SupportTickets.class ); config.addAnnotatedClass( Country.class ); config.addPackage( Customer.class.getPackage().getName() ); - SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( + try (SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( serviceRegistry - ); + )) { - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "package-profile-1" ) - ); - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "package-profile-2" ) - ); - sessionImpl.close(); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "package-profile-1" ) + ); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "package-profile-2" ) + ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/MappedByFetchProfileUnitTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/MappedByFetchProfileUnitTest.java index c3955ecca3..91e498672d 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/MappedByFetchProfileUnitTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/fetchprofile/MappedByFetchProfileUnitTest.java @@ -34,19 +34,19 @@ public class MappedByFetchProfileUnitTest extends BaseUnitTestCase { Configuration config = new Configuration(); config.addAnnotatedClass( Customer6.class ); config.addAnnotatedClass( Address.class ); - SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( + try (SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( serviceRegistry - ); + )) { - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "address-with-customer" ) - ); - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "customer-with-address" ) - ); - sessionImpl.close(); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "address-with-customer" ) + ); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "customer-with-address" ) + ); + } } @Test @@ -55,19 +55,19 @@ public class MappedByFetchProfileUnitTest extends BaseUnitTestCase { config.addAnnotatedClass( Customer6.class ); config.addAnnotatedClass( Address.class ); config.addPackage( Address.class.getPackage().getName() ); - SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( + try (SessionFactoryImplementor sessionImpl = ( SessionFactoryImplementor ) config.buildSessionFactory( serviceRegistry - ); + )) { - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "mappedBy-package-profile-1" ) - ); - assertTrue( - "fetch profile not parsed properly", - sessionImpl.containsFetchProfileDefinition( "mappedBy-package-profile-2" ) - ); - sessionImpl.close(); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "mappedBy-package-profile-1" ) + ); + assertTrue( + "fetch profile not parsed properly", + sessionImpl.containsFetchProfileDefinition( "mappedBy-package-profile-2" ) + ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/formula/JoinColumnOrFormulaTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/formula/JoinColumnOrFormulaTest.java index 375c5e4647..9b0f9d6c41 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/formula/JoinColumnOrFormulaTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/formula/JoinColumnOrFormulaTest.java @@ -18,6 +18,8 @@ import org.hibernate.annotations.JoinColumnOrFormula; import org.hibernate.annotations.JoinFormula; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.BootstrapServiceRegistry; +import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; @@ -50,15 +52,17 @@ public class JoinColumnOrFormulaTest extends BaseUnitTestCase { @TestForIssue( jiraKey = "HHH-9897" ) @FailureExpected( jiraKey = "HHH-9897" ) public void testUseOfJoinColumnOrFormula() { - Metadata metadata = new MetadataSources() - .addAnnotatedClass( A.class ) - .addAnnotatedClass( D.class ) - .buildMetadata(); + try (BootstrapServiceRegistry serviceRegistry = new BootstrapServiceRegistryBuilder().build()) { + Metadata metadata = new MetadataSources( serviceRegistry ) + .addAnnotatedClass( A.class ) + .addAnnotatedClass( D.class ) + .buildMetadata(); - // Binding to the mapping model works after the simple change for HHH-9897 - // But building the SessionFactory fails in the collection persister trying to - // use the formula (it expects Columns too) - metadata.buildSessionFactory().close(); + // Binding to the mapping model works after the simple change for HHH-9897 + // But building the SessionFactory fails in the collection persister trying to + // use the formula (it expects Columns too) + metadata.buildSessionFactory().close(); + } } @Entity( name = "A" ) diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/override/inheritance/EntityInheritanceAttributeOverrideTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/override/inheritance/EntityInheritanceAttributeOverrideTest.java index 7ed667757d..8bfb9c82da 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/override/inheritance/EntityInheritanceAttributeOverrideTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/override/inheritance/EntityInheritanceAttributeOverrideTest.java @@ -11,6 +11,7 @@ import static org.junit.Assert.assertTrue; import javax.persistence.AttributeOverride; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.EntityManagerFactory; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @@ -39,24 +40,26 @@ public class EntityInheritanceAttributeOverrideTest extends BaseEntityManagerFun @Override public Class[] getAnnotatedClasses() { - return new Class[]{ - CategoryEntity.class, - TaxonEntity.class, - AbstractEntity.class + return new Class[] { + CategoryEntity.class, + TaxonEntity.class, + AbstractEntity.class }; } - @Override - public void buildEntityManagerFactory() { + public EntityManagerFactory produceEntityManagerFactory() { Triggerable warningLogged = logInspection.watchForLogMessages( "HHH000499:" ); super.buildEntityManagerFactory(); + EntityManagerFactory entityManagerFactory = entityManagerFactory(); assertTrue("A warning should have been logged for this unsupported configuration", warningLogged.wasTriggered()); + return entityManagerFactory; } @Test public void test() { + produceEntityManagerFactory().close(); } @Entity(name = "AbstractEntity") diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/JPAXMLOverriddenAnnotationReaderTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/JPAXMLOverriddenAnnotationReaderTest.java index 8eaec9352f..1c12a7a146 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/JPAXMLOverriddenAnnotationReaderTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/JPAXMLOverriddenAnnotationReaderTest.java @@ -15,6 +15,8 @@ import org.hibernate.internal.util.xml.XMLMappingHelper; import org.hibernate.testing.boot.BootstrapContextImpl; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.hibernate.testing.TestForIssue; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import javax.persistence.*; @@ -29,19 +31,32 @@ import static org.junit.Assert.*; */ @TestForIssue(jiraKey = "HHH-14529") public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { + + private BootstrapContextImpl bootstrapContext; + + @Before + public void init() { + bootstrapContext = new BootstrapContextImpl(); + } + + @After + public void destroy() { + bootstrapContext.close(); + } + @Test public void testMappedSuperclassAnnotations() throws Exception { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/metadata-complete.xml" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( Organization.class, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( Organization.class, context, bootstrapContext ); assertTrue( reader.isAnnotationPresent( MappedSuperclass.class ) ); } @Test public void testEntityRelatedAnnotations() throws Exception { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( Administration.class, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( Administration.class, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Entity.class ) ); assertEquals( "Default value in xml entity should not override @Entity.name", "JavaAdministration", @@ -75,7 +90,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { assertEquals( "wrong tble name", "tablehilo", reader.getAnnotation( TableGenerator.class ).table() ); assertEquals( "no schema overriding", "myschema", reader.getAnnotation( TableGenerator.class ).schema() ); - reader = new JPAXMLOverriddenAnnotationReader( Match.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( Match.class, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Table.class ) ); assertEquals( "Java annotation not taken into account", "matchtable", reader.getAnnotation( Table.class ).name() @@ -123,10 +138,10 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { assertNotNull( reader.getAnnotation( ExcludeSuperclassListeners.class ) ); assertNotNull( reader.getAnnotation( ExcludeDefaultListeners.class ) ); - reader = new JPAXMLOverriddenAnnotationReader( Competition.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( Competition.class, context, bootstrapContext ); assertNotNull( reader.getAnnotation( MappedSuperclass.class ) ); - reader = new JPAXMLOverriddenAnnotationReader( TennisMatch.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( TennisMatch.class, context, bootstrapContext ); assertNull( "Mutualize PKJC into PKJCs", reader.getAnnotation( PrimaryKeyJoinColumn.class ) ); assertNotNull( reader.getAnnotation( PrimaryKeyJoinColumns.class ) ); assertEquals( @@ -153,7 +168,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { ); - reader = new JPAXMLOverriddenAnnotationReader( SocialSecurityPhysicalAccount.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( SocialSecurityPhysicalAccount.class, context, bootstrapContext ); assertNotNull( reader.getAnnotation( IdClass.class ) ); assertEquals( "id-class not used", SocialSecurityNumber.class, reader.getAnnotation( IdClass.class ).value() ); assertEquals( @@ -174,7 +189,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/metadata-complete.xml" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( Administration.class, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( Administration.class, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Entity.class ) ); assertEquals( "Metadata complete should ignore java annotations", "", reader.getAnnotation( Entity.class ).name() @@ -183,7 +198,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { assertEquals( "@Table should not be used", "", reader.getAnnotation( Table.class ).name() ); assertEquals( "Default schema not overriden", "myschema", reader.getAnnotation( Table.class ).schema() ); - reader = new JPAXMLOverriddenAnnotationReader( Match.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( Match.class, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Table.class ) ); assertEquals( "@Table should not be used", "", reader.getAnnotation( Table.class ).name() ); assertEquals( "Overriding not taken into account", "myschema", reader.getAnnotation( Table.class ).schema() ); @@ -194,14 +209,14 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { assertNull( reader.getAnnotation( NamedQueries.class ) ); assertNull( reader.getAnnotation( NamedNativeQueries.class ) ); - reader = new JPAXMLOverriddenAnnotationReader( TennisMatch.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( TennisMatch.class, context, bootstrapContext ); assertNull( reader.getAnnotation( PrimaryKeyJoinColumn.class ) ); assertNull( reader.getAnnotation( PrimaryKeyJoinColumns.class ) ); - reader = new JPAXMLOverriddenAnnotationReader( Competition.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( Competition.class, context, bootstrapContext ); assertNull( reader.getAnnotation( MappedSuperclass.class ) ); - reader = new JPAXMLOverriddenAnnotationReader( SocialSecurityMoralAccount.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( SocialSecurityMoralAccount.class, context, bootstrapContext ); assertNull( reader.getAnnotation( IdClass.class ) ); assertNull( reader.getAnnotation( DiscriminatorValue.class ) ); assertNull( reader.getAnnotation( DiscriminatorColumn.class ) ); @@ -213,11 +228,11 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { public void testIdRelatedAnnotations() throws Exception { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); Method method = Administration.class.getDeclaredMethod( "getId" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertNull( reader.getAnnotation( Id.class ) ); assertNull( reader.getAnnotation( Column.class ) ); Field field = Administration.class.getDeclaredField( "id" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Id.class ) ); assertNotNull( reader.getAnnotation( GeneratedValue.class ) ); assertEquals( GenerationType.SEQUENCE, reader.getAnnotation( GeneratedValue.class ).strategy() ); @@ -234,23 +249,23 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { "org/hibernate/test/annotations/reflection/metadata-complete.xml" ); method = Administration.class.getDeclaredMethod( "getId" ); - reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertNotNull( "Default access type when not defined in metadata complete should be property", reader.getAnnotation( Id.class ) ); field = Administration.class.getDeclaredField( "id" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNull( "Default access type when not defined in metadata complete should be property", reader.getAnnotation( Id.class ) ); method = BusTrip.class.getDeclaredMethod( "getId" ); - reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertNull( reader.getAnnotation( EmbeddedId.class ) ); field = BusTrip.class.getDeclaredField( "id" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( EmbeddedId.class ) ); assertNotNull( reader.getAnnotation( AttributeOverrides.class ) ); assertEquals( 1, reader.getAnnotation( AttributeOverrides.class ).value().length ); @@ -262,22 +277,22 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { "org/hibernate/test/annotations/reflection/metadata-complete.xml" ); Field field = BusTrip.class.getDeclaredField( "status" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Enumerated.class ) ); assertEquals( EnumType.STRING, reader.getAnnotation( Enumerated.class ).value() ); assertEquals( false, reader.getAnnotation( Basic.class ).optional() ); field = BusTrip.class.getDeclaredField( "serial" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Lob.class ) ); assertEquals( "serialbytes", reader.getAnnotation( Columns.class ).columns()[0].name() ); field = BusTrip.class.getDeclaredField( "terminusTime" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Temporal.class ) ); assertEquals( TemporalType.TIMESTAMP, reader.getAnnotation( Temporal.class ).value() ); assertEquals( FetchType.LAZY, reader.getAnnotation( Basic.class ).fetch() ); field = BusTripPk.class.getDeclaredField( "busDriver" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.isAnnotationPresent( Basic.class ) ); } @@ -285,7 +300,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { public void testVersionRelatedAnnotations() throws Exception { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); Method method = Administration.class.getDeclaredMethod( "getVersion" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Version.class ) ); Field field = Match.class.getDeclaredField( "version" ); @@ -297,12 +312,12 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); Field field = Administration.class.getDeclaredField( "transientField" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Transient.class ) ); assertNull( reader.getAnnotation( Basic.class ) ); field = Match.class.getDeclaredField( "playerASSN" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( Embedded.class ) ); } @@ -311,7 +326,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); Field field = Administration.class.getDeclaredField( "defaultBusTrip" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( OneToOne.class ) ); assertNull( reader.getAnnotation( JoinColumns.class ) ); assertNotNull( reader.getAnnotation( PrimaryKeyJoinColumns.class ) ); @@ -324,7 +339,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { "org/hibernate/test/annotations/reflection/metadata-complete.xml" ); field = BusTrip.class.getDeclaredField( "players" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( OneToMany.class ) ); assertNotNull( reader.getAnnotation( JoinColumns.class ) ); assertEquals( 2, reader.getAnnotation( JoinColumns.class ).value().length ); @@ -333,7 +348,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { assertEquals( "name", reader.getAnnotation( MapKey.class ).name() ); field = BusTrip.class.getDeclaredField( "roads" ); - reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( ManyToMany.class ) ); assertNotNull( reader.getAnnotation( JoinTable.class ) ); assertEquals( "bus_road", reader.getAnnotation( JoinTable.class ).name() ); @@ -350,7 +365,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); Field field = Company.class.getDeclaredField( "organizations" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( field, context, bootstrapContext ); assertNotNull( reader.getAnnotation( ElementCollection.class ) ); assertNotNull( reader.getAnnotation( Converts.class ) ); assertNotNull( reader.getAnnotation( Converts.class ).value() ); @@ -363,20 +378,20 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { XMLContext context = buildContext( "org/hibernate/test/annotations/reflection/orm.xml" ); Method method = Administration.class.getDeclaredMethod( "calculate" ); - JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + JPAXMLOverriddenAnnotationReader reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertTrue( reader.isAnnotationPresent( PrePersist.class ) ); - reader = new JPAXMLOverriddenAnnotationReader( Administration.class, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( Administration.class, context, bootstrapContext ); assertTrue( reader.isAnnotationPresent( EntityListeners.class ) ); assertEquals( 1, reader.getAnnotation( EntityListeners.class ).value().length ); assertEquals( LogListener.class, reader.getAnnotation( EntityListeners.class ).value()[0] ); method = LogListener.class.getDeclaredMethod( "noLog", Object.class ); - reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertTrue( reader.isAnnotationPresent( PostLoad.class ) ); method = LogListener.class.getDeclaredMethod( "log", Object.class ); - reader = new JPAXMLOverriddenAnnotationReader( method, context, BootstrapContextImpl.INSTANCE ); + reader = new JPAXMLOverriddenAnnotationReader( method, context, bootstrapContext ); assertTrue( reader.isAnnotationPresent( PrePersist.class ) ); assertFalse( reader.isAnnotationPresent( PostPersist.class ) ); @@ -387,7 +402,7 @@ public class JPAXMLOverriddenAnnotationReaderTest extends BaseUnitTestCase { private XMLContext buildContext(String ormfile) throws IOException { XMLMappingHelper xmlHelper = new XMLMappingHelper(); JaxbEntityMappings mappings = xmlHelper.readOrmXmlMappings( ormfile ); - XMLContext context = new XMLContext( BootstrapContextImpl.INSTANCE ); + XMLContext context = new XMLContext( bootstrapContext ); context.addDocument( mappings ); return context; } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/XMLContextTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/XMLContextTest.java index 22f6e4dbb6..4608b7eb40 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/XMLContextTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/reflection/XMLContextTest.java @@ -12,6 +12,8 @@ import org.hibernate.internal.util.xml.XMLMappingHelper; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.boot.BootstrapContextImpl; +import org.junit.After; +import org.junit.Before; import org.junit.Test; /** @@ -19,10 +21,23 @@ import org.junit.Test; */ @TestForIssue(jiraKey = "HHH-14529") public class XMLContextTest { + + private BootstrapContextImpl bootstrapContext; + + @Before + public void init() { + bootstrapContext = new BootstrapContextImpl(); + } + + @After + public void destroy() { + bootstrapContext.close(); + } + @Test public void testAll() throws Exception { XMLMappingHelper xmlHelper = new XMLMappingHelper(); - final XMLContext context = new XMLContext( BootstrapContextImpl.INSTANCE ); + final XMLContext context = new XMLContext( bootstrapContext ); JaxbEntityMappings mappings = xmlHelper.readOrmXmlMappings( "org/hibernate/test/annotations/reflection/orm.xml" ); context.addDocument( mappings ); diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/Ejb3XmlTestCase.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/Ejb3XmlTestCase.java index b5b18a7815..540b461dc9 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/Ejb3XmlTestCase.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/Ejb3XmlTestCase.java @@ -18,6 +18,9 @@ import org.hibernate.internal.util.xml.XMLMappingHelper; import org.hibernate.testing.boot.BootstrapContextImpl; import org.hibernate.testing.junit4.BaseUnitTestCase; +import org.junit.After; +import org.junit.Before; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -31,9 +34,21 @@ public abstract class Ejb3XmlTestCase extends BaseUnitTestCase { protected JPAXMLOverriddenAnnotationReader reader; + private BootstrapContextImpl bootstrapContext; + protected Ejb3XmlTestCase() { } + @Before + public void init() { + bootstrapContext = new BootstrapContextImpl(); + } + + @After + public void destroy() { + bootstrapContext.close(); + } + protected void assertAnnotationPresent(Class annotationType) { assertTrue( "Expected annotation " + annotationType.getSimpleName() + " was not present", @@ -52,7 +67,7 @@ public abstract class Ejb3XmlTestCase extends BaseUnitTestCase { throws Exception { AnnotatedElement el = getAnnotatedElement( entityClass, fieldName ); XMLContext xmlContext = getContext( ormResourceName ); - return new JPAXMLOverriddenAnnotationReader( el, xmlContext, BootstrapContextImpl.INSTANCE ); + return new JPAXMLOverriddenAnnotationReader( el, xmlContext, bootstrapContext ); } protected AnnotatedElement getAnnotatedElement(Class entityClass, String fieldName) throws Exception { @@ -68,7 +83,7 @@ public abstract class Ejb3XmlTestCase extends BaseUnitTestCase { protected XMLContext getContext(InputStream is, String resourceName) throws Exception { XMLMappingHelper xmlHelper = new XMLMappingHelper(); JaxbEntityMappings mappings = xmlHelper.readOrmXmlMappings( is, resourceName ); - XMLContext context = new XMLContext( BootstrapContextImpl.INSTANCE ); + XMLContext context = new XMLContext( bootstrapContext ); context.addDocument( mappings ); return context; } diff --git a/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/NonExistentOrmVersionTest.java b/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/NonExistentOrmVersionTest.java index adc2b3d6fb..bb6988d48b 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/NonExistentOrmVersionTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/annotations/xml/ejb3/NonExistentOrmVersionTest.java @@ -8,6 +8,7 @@ package org.hibernate.test.annotations.xml.ejb3; import org.hibernate.InvalidMappingException; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.BootstrapServiceRegistry; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; import org.hibernate.internal.util.xml.UnsupportedOrmXsdVersionException; @@ -21,9 +22,8 @@ import static org.junit.Assert.fail; public class NonExistentOrmVersionTest extends BaseUnitTestCase { @Test public void testNonExistentOrmVersion() { - try { - BootstrapServiceRegistryBuilder builder = new BootstrapServiceRegistryBuilder(); - new MetadataSources( builder.build() ) + try (BootstrapServiceRegistry serviceRegistry = new BootstrapServiceRegistryBuilder().build()) { + new MetadataSources( serviceRegistry ) .addResource( "org/hibernate/test/annotations/xml/ejb3/orm5.xml" ) .buildMetadata(); fail( "Expecting failure due to unsupported xsd version" ); diff --git a/hibernate-core/src/test/java/org/hibernate/test/boot/jaxb/hbm/internal/XmlBindingChecker.java b/hibernate-core/src/test/java/org/hibernate/test/boot/jaxb/hbm/internal/XmlBindingChecker.java index 21d9c30aac..b2cab5c18c 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/boot/jaxb/hbm/internal/XmlBindingChecker.java +++ b/hibernate-core/src/test/java/org/hibernate/test/boot/jaxb/hbm/internal/XmlBindingChecker.java @@ -32,7 +32,8 @@ public class XmlBindingChecker { ByteArrayOutputStream bos = new ByteArrayOutputStream(); jaxbMarshaller.marshal( hbmMapping, bos ); ByteArrayInputStream is = new ByteArrayInputStream( bos.toByteArray() ); - ServiceRegistry sr = new StandardServiceRegistryBuilder().build(); - new XmlMappingBinderAccess( sr ).bind( is ); + try (ServiceRegistry sr = new StandardServiceRegistryBuilder().build()) { + new XmlMappingBinderAccess( sr ).bind( is ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheAnnotationTest.java b/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheAnnotationTest.java index 8af2f60ee4..f4721274b6 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheAnnotationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheAnnotationTest.java @@ -54,21 +54,20 @@ public class NonRootEntityWithCacheAnnotationTest { settings.put( Environment.CACHE_REGION_FACTORY, CachingRegionFactory.class.getName() ); settings.put( AvailableSettings.JPA_SHARED_CACHE_MODE, SharedCacheMode.ENABLE_SELECTIVE ); - ServiceRegistryImplementor serviceRegistry = (ServiceRegistryImplementor) new StandardServiceRegistryBuilder() + try (ServiceRegistryImplementor serviceRegistry = (ServiceRegistryImplementor) new StandardServiceRegistryBuilder() .applySettings( settings ) - .build(); + .build()) { - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000482" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH000482" ); - Metadata metadata = new MetadataSources( serviceRegistry ) - .addAnnotatedClass( ABase.class ) - .addAnnotatedClass( AEntity.class ) - .buildMetadata(); + Metadata metadata = new MetadataSources( serviceRegistry ) + .addAnnotatedClass( ABase.class ) + .addAnnotatedClass( AEntity.class ) + .buildMetadata(); - assertTrue( triggerable.wasTriggered() ); - assertFalse( metadata.getEntityBinding( AEntity.class.getName() ).isCached() ); - - serviceRegistry.destroy(); + assertTrue( triggerable.wasTriggered() ); + assertFalse( metadata.getEntityBinding( AEntity.class.getName() ).isCached() ); + } } @Entity diff --git a/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheableAnnotationTest.java b/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheableAnnotationTest.java index f613fdd511..538fe5cfd9 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheableAnnotationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cache/NonRootEntityWithCacheableAnnotationTest.java @@ -53,23 +53,22 @@ public class NonRootEntityWithCacheableAnnotationTest { settings.put( AvailableSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY, "read-write" ); settings.put( AvailableSettings.JPA_SHARED_CACHE_MODE, SharedCacheMode.ENABLE_SELECTIVE ); - ServiceRegistryImplementor serviceRegistry = (ServiceRegistryImplementor) new StandardServiceRegistryBuilder() + try (ServiceRegistryImplementor serviceRegistry = (ServiceRegistryImplementor) new StandardServiceRegistryBuilder() .applySettings( settings ) - .build(); + .build()) { - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000482" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH000482" ); - Metadata metadata = new MetadataSources( serviceRegistry ) - .addAnnotatedClass( ABase.class ) - .addAnnotatedClass( AEntity.class ) - .buildMetadata(); + Metadata metadata = new MetadataSources( serviceRegistry ) + .addAnnotatedClass( ABase.class ) + .addAnnotatedClass( AEntity.class ) + .buildMetadata(); - assertFalse( metadata.getEntityBinding( ABase.class.getName() ).isCached() ); - assertTrue( metadata.getEntityBinding( AEntity.class.getName() ).isCached() ); + assertFalse( metadata.getEntityBinding( ABase.class.getName() ).isCached() ); + assertTrue( metadata.getEntityBinding( AEntity.class.getName() ).isCached() ); - assertFalse( triggerable.wasTriggered() ); - - serviceRegistry.destroy(); + assertFalse( triggerable.wasTriggered() ); + } } @Entity diff --git a/hibernate-core/src/test/java/org/hibernate/test/cache/SingleRegisteredProviderTest.java b/hibernate-core/src/test/java/org/hibernate/test/cache/SingleRegisteredProviderTest.java index 6525a21ecf..df4d097d25 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cache/SingleRegisteredProviderTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cache/SingleRegisteredProviderTest.java @@ -32,75 +32,75 @@ import static org.hamcrest.MatcherAssert.assertThat; public class SingleRegisteredProviderTest extends BaseUnitTestCase { @Test public void testCachingExplicitlyDisabled() { - final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + try (final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.USE_SECOND_LEVEL_CACHE, "false" ) - .build(); - - assertThat( registry.getService( RegionFactory.class ), instanceOf( NoCachingRegionFactory.class ) ); + .build()) { + assertThat( registry.getService( RegionFactory.class ), instanceOf( NoCachingRegionFactory.class ) ); + } } @Test public void testCachingImplicitlyEnabledRegistered() { - final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder() - .build(); + try (final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder() + .build()) { + final Collection> implementors = bsr + .getService( StrategySelector.class ) + .getRegisteredStrategyImplementors( RegionFactory.class ); - final Collection> implementors = bsr - .getService( StrategySelector.class ) - .getRegisteredStrategyImplementors( RegionFactory.class ); + assertThat( implementors.size(), equalTo( 1 ) ); - assertThat( implementors.size(), equalTo( 1 ) ); + final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ) + .applySetting( AvailableSettings.USE_SECOND_LEVEL_CACHE, "" ) + .build(); - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ) - .applySetting( AvailableSettings.USE_SECOND_LEVEL_CACHE, "" ) - .build(); - - assertThat( ssr.getService( RegionFactory.class ), instanceOf( NoCachingRegionFactory.class ) ); + assertThat( ssr.getService( RegionFactory.class ), instanceOf( NoCachingRegionFactory.class ) ); + } } @Test public void testCachingImplicitlyEnabledNoRegistered() { - final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder() - .build(); + try (final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder() + .build()) { + final Collection> implementors = bsr + .getService( StrategySelector.class ) + .getRegisteredStrategyImplementors( RegionFactory.class ); - final Collection> implementors = bsr - .getService( StrategySelector.class ) - .getRegisteredStrategyImplementors( RegionFactory.class ); + assertThat( implementors.size(), equalTo( 1 ) ); - assertThat( implementors.size(), equalTo( 1 ) ); + bsr.getService( StrategySelector.class ).unRegisterStrategyImplementor( + RegionFactory.class, + implementors.iterator().next() + ); - bsr.getService( StrategySelector.class ).unRegisterStrategyImplementor( - RegionFactory.class, - implementors.iterator().next() - ); + final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ) + .applySetting( AvailableSettings.USE_SECOND_LEVEL_CACHE, "" ) + .build(); - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ) - .applySetting( AvailableSettings.USE_SECOND_LEVEL_CACHE, "" ) - .build(); - - assertThat( ssr.getService( RegionFactory.class ), instanceOf( NoCachingRegionFactory.class ) ); + assertThat( ssr.getService( RegionFactory.class ), instanceOf( NoCachingRegionFactory.class ) ); + } } @Test public void testConnectionsRegistered() { - final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder() - .build(); + try (final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder() + .build()) { + final Collection> implementors = bsr + .getService( StrategySelector.class ) + .getRegisteredStrategyImplementors( ConnectionProvider.class ); - final Collection> implementors = bsr - .getService( StrategySelector.class ) - .getRegisteredStrategyImplementors( ConnectionProvider.class ); + assertThat( implementors.size(), equalTo( 0 ) ); - assertThat( implementors.size(), equalTo( 0 ) ); + bsr.getService( StrategySelector.class ).registerStrategyImplementor( + ConnectionProvider.class, + "testing", + DriverManagerConnectionProviderImpl.class + ); - bsr.getService( StrategySelector.class ).registerStrategyImplementor( - ConnectionProvider.class, - "testing", - DriverManagerConnectionProviderImpl.class - ); + final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ).build(); - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ).build(); + final ConnectionProvider configuredProvider = ssr.getService( ConnectionProvider.class ); - final ConnectionProvider configuredProvider = ssr.getService( ConnectionProvider.class ); - - assertThat( configuredProvider, instanceOf( DriverManagerConnectionProviderImpl.class ) ); + assertThat( configuredProvider, instanceOf( DriverManagerConnectionProviderImpl.class ) ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/DelayedMixedAccessTest.java b/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/DelayedMixedAccessTest.java index 78e03ee78c..7b4ab809e0 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/DelayedMixedAccessTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/DelayedMixedAccessTest.java @@ -42,14 +42,13 @@ public class DelayedMixedAccessTest implements BeanContainer.LifecycleOptions { @Test public void testDelayedMixedAccess() { - try ( final SeContainer cdiContainer = Helper.createSeContainer() ) { - BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().build(); - + try ( final SeContainer cdiContainer = Helper.createSeContainer(); + final BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().build(); final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ) .applySetting( AvailableSettings.HBM2DDL_AUTO, Action.CREATE_DROP ) .applySetting( AvailableSettings.CDI_BEAN_MANAGER, cdiContainer.getBeanManager() ) .applySetting( AvailableSettings.DELAY_CDI_ACCESS, "true" ) - .build(); + .build() ) { final BeanContainer beanContainer = CdiBeanContainerBuilder.fromBeanManagerReference( cdiContainer.getBeanManager(), diff --git a/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ExtendedMixedAccessTest.java b/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ExtendedMixedAccessTest.java index 00aab0638e..350d59407d 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ExtendedMixedAccessTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ExtendedMixedAccessTest.java @@ -46,42 +46,45 @@ public class ExtendedMixedAccessTest implements BeanContainer.LifecycleOptions { } private void doTest(TestingExtendedBeanManager extendedBeanManager) { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.HBM2DDL_AUTO, Action.CREATE_DROP ) .applySetting( AvailableSettings.CDI_BEAN_MANAGER, extendedBeanManager ) - .build(); + .build()) { + final BeanContainer beanContainer = ssr.getService( ManagedBeanRegistry.class ).getBeanContainer(); - final BeanContainer beanContainer = ssr.getService( ManagedBeanRegistry.class ).getBeanContainer(); + assertThat( beanContainer, instanceOf( CdiBeanContainerExtendedAccessImpl.class ) ); - assertThat( beanContainer, instanceOf( CdiBeanContainerExtendedAccessImpl.class ) ); + try (final SeContainer cdiContainer = Helper.createSeContainer()) { + final BeanManager beanManager = cdiContainer.getBeanManager(); + extendedBeanManager.notifyListenerReady( beanManager ); - try ( final SeContainer cdiContainer = Helper.createSeContainer() ) { - final BeanManager beanManager = cdiContainer.getBeanManager(); - extendedBeanManager.notifyListenerReady( beanManager ); + assertThat( + beanManager, + sameInstance( ( (CdiBeanContainerExtendedAccessImpl) beanContainer ).getUsableBeanManager() ) + ); - assertThat( beanManager, sameInstance( ( (CdiBeanContainerExtendedAccessImpl) beanContainer ).getUsableBeanManager() ) ); + final ContainedBean hostedBean = beanContainer.getBean( + HostedBean.class, + this, + FallbackBeanInstanceProducer.INSTANCE + ); - final ContainedBean hostedBean = beanContainer.getBean( - HostedBean.class, - this, - FallbackBeanInstanceProducer.INSTANCE - ); + assertThat( hostedBean, notNullValue() ); + assertThat( hostedBean.getBeanInstance(), notNullValue() ); - assertThat( hostedBean, notNullValue() ); - assertThat( hostedBean.getBeanInstance(), notNullValue() ); + assertThat( hostedBean.getBeanInstance().getInjectedHostedBean(), notNullValue() ); - assertThat( hostedBean.getBeanInstance().getInjectedHostedBean(), notNullValue() ); + final ContainedBean nonHostedBean = beanContainer.getBean( + NonHostedBean.class, + this, + FallbackBeanInstanceProducer.INSTANCE + ); - final ContainedBean nonHostedBean = beanContainer.getBean( - NonHostedBean.class, - this, - FallbackBeanInstanceProducer.INSTANCE - ); + assertThat( nonHostedBean, notNullValue() ); + assertThat( nonHostedBean.getBeanInstance(), notNullValue() ); - assertThat( nonHostedBean, notNullValue() ); - assertThat( nonHostedBean.getBeanInstance(), notNullValue() ); - - extendedBeanManager.notifyListenerShuttingDown( beanManager ); + extendedBeanManager.notifyListenerShuttingDown( beanManager ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ImmediateMixedAccessTests.java b/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ImmediateMixedAccessTests.java index def3cd6b8f..a694708956 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ImmediateMixedAccessTests.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cdi/general/mixed/ImmediateMixedAccessTests.java @@ -44,8 +44,8 @@ public class ImmediateMixedAccessTests implements BeanContainer.LifecycleOptions @Test public void testImmediateMixedAccess() { - try ( final SeContainer cdiContainer = Helper.createSeContainer() ) { - BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().build(); + try ( final SeContainer cdiContainer = Helper.createSeContainer(); + BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().build() ) { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder( bsr ) .applySetting( AvailableSettings.HBM2DDL_AUTO, Action.CREATE_DROP ) diff --git a/hibernate-core/src/test/java/org/hibernate/test/cfg/AnnotationBinderTest.java b/hibernate-core/src/test/java/org/hibernate/test/cfg/AnnotationBinderTest.java index 471ba21026..8927bb7d62 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/cfg/AnnotationBinderTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/cfg/AnnotationBinderTest.java @@ -13,6 +13,7 @@ import javax.persistence.Id; import javax.persistence.PrimaryKeyJoinColumn; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.AnnotationBinder; import org.hibernate.internal.CoreMessageLogger; @@ -38,15 +39,19 @@ public class AnnotationBinderTest { Triggerable triggerable = logInspection.watchForLogMessages( "HHH000137" ); - StandardServiceRegistryBuilder srb = new StandardServiceRegistryBuilder(); + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build()) { - Metadata metadata = new MetadataSources( srb.build() ) - .addAnnotatedClass( InvalidPrimaryKeyJoinColumnAnnotationEntity.class ) - .buildMetadata(); + Metadata metadata = new MetadataSources( serviceRegistry ) + .addAnnotatedClass( InvalidPrimaryKeyJoinColumnAnnotationEntity.class ) + .buildMetadata(); - assertTrue( "Expected warning HHH00137 but it wasn't triggered", triggerable.wasTriggered() ); - assertTrue( "Expected invalid class name in warning HHH00137 message but it does not apper to be present; got " + triggerable.triggerMessage(), - triggerable.triggerMessage().matches( ".*\\b\\Q" + InvalidPrimaryKeyJoinColumnAnnotationEntity.class.getName() + "\\E\\b.*" ) ); + assertTrue( "Expected warning HHH00137 but it wasn't triggered", triggerable.wasTriggered() ); + assertTrue( + "Expected invalid class name in warning HHH00137 message but it does not apper to be present; got " + triggerable.triggerMessage(), + triggerable.triggerMessage() + .matches( ".*\\b\\Q" + InvalidPrimaryKeyJoinColumnAnnotationEntity.class.getName() + "\\E\\b.*" ) + ); + } } @Entity diff --git a/hibernate-core/src/test/java/org/hibernate/test/collection/bag/MultipleBagFetchTest.java b/hibernate-core/src/test/java/org/hibernate/test/collection/bag/MultipleBagFetchTest.java index bf4128fe73..49a02cbd23 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/collection/bag/MultipleBagFetchTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/collection/bag/MultipleBagFetchTest.java @@ -21,7 +21,6 @@ import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; - import org.hibernate.loader.MultipleBagFetchException; import org.junit.Test; @@ -32,19 +31,20 @@ public class MultipleBagFetchTest { @Test public void testEntityWithMultipleJoinFetchedBags() { - StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().build(); + try (StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().build()) { - Metadata metadata = new MetadataSources( standardRegistry ) - .addAnnotatedClass( Post.class ) - .addAnnotatedClass( PostComment.class ) - .addAnnotatedClass( Tag.class ) - .getMetadataBuilder() - .build(); - try { - metadata.buildSessionFactory(); - fail( "MultipleBagFetchException should have been thrown." ); - } - catch (MultipleBagFetchException expected) { + Metadata metadata = new MetadataSources( standardRegistry ) + .addAnnotatedClass( Post.class ) + .addAnnotatedClass( PostComment.class ) + .addAnnotatedClass( Tag.class ) + .getMetadataBuilder() + .build(); + try { + metadata.buildSessionFactory(); + fail( "MultipleBagFetchException should have been thrown." ); + } + catch (MultipleBagFetchException expected) { + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/converter/AttributeConverterTest.java b/hibernate-core/src/test/java/org/hibernate/test/converter/AttributeConverterTest.java index a8d46871d8..3561fe9882 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/converter/AttributeConverterTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/converter/AttributeConverterTest.java @@ -99,25 +99,29 @@ public class AttributeConverterTest extends BaseUnitTestCase { @Test public void testBasicOperation() { + try ( StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build()) { + SimpleValue simpleValue = new SimpleValue( new MetadataBuildingContextTestingImpl( serviceRegistry ) ); + simpleValue.setJpaAttributeConverterDescriptor( + new InstanceBasedConverterDescriptor( + new StringClobConverter(), + new ClassmateContext() + ) + ); + simpleValue.setTypeUsingReflection( IrrelevantEntity.class.getName(), "name" ); - SimpleValue simpleValue = new SimpleValue( new MetadataBuildingContextTestingImpl() ); - simpleValue.setJpaAttributeConverterDescriptor( - new InstanceBasedConverterDescriptor( - new StringClobConverter(), - new ClassmateContext() - ) - ); - simpleValue.setTypeUsingReflection( IrrelevantEntity.class.getName(), "name" ); - - Type type = simpleValue.getType(); - assertNotNull( type ); - if ( !AttributeConverterTypeAdapter.class.isInstance( type ) ) { - fail( "AttributeConverter not applied" ); + Type type = simpleValue.getType(); + assertNotNull( type ); + if ( !AttributeConverterTypeAdapter.class.isInstance( type ) ) { + fail( "AttributeConverter not applied" ); + } + AbstractStandardBasicType basicType = assertTyping( AbstractStandardBasicType.class, type ); + assertSame( StringTypeDescriptor.INSTANCE, basicType.getJavaTypeDescriptor() ); + SqlTypeDescriptor sqlTypeDescriptor = basicType.getSqlTypeDescriptor(); + assertEquals( + Dialect.getDialect().remapSqlTypeDescriptor( ClobTypeDescriptor.CLOB_BINDING ).getSqlType(), + sqlTypeDescriptor.getSqlType() + ); } - AbstractStandardBasicType basicType = assertTyping( AbstractStandardBasicType.class, type ); - assertSame( StringTypeDescriptor.INSTANCE, basicType.getJavaTypeDescriptor() ); - SqlTypeDescriptor sqlTypeDescriptor = basicType.getSqlTypeDescriptor(); - assertEquals( Dialect.getDialect().remapSqlTypeDescriptor(ClobTypeDescriptor.CLOB_BINDING).getSqlType(), sqlTypeDescriptor.getSqlType() ); } @Test @@ -151,16 +155,16 @@ public class AttributeConverterTest extends BaseUnitTestCase { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); try { - MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) + final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( Tester.class ) .getMetadataBuilder() .applyAttributeConverter( StringClobConverter.class, true ) .build(); - PersistentClass tester = metadata.getEntityBinding( Tester.class.getName() ); - Property nameProp = tester.getProperty( "name" ); - SimpleValue nameValue = (SimpleValue) nameProp.getValue(); - Type type = nameValue.getType(); + final PersistentClass tester = metadata.getEntityBinding( Tester.class.getName() ); + final Property nameProp = tester.getProperty( "name" ); + final SimpleValue nameValue = (SimpleValue) nameProp.getValue(); + final Type type = nameValue.getType(); assertNotNull( type ); assertTyping( BasicType.class, type ); if ( !AttributeConverterTypeAdapter.class.isInstance( type ) ) { @@ -242,9 +246,7 @@ public class AttributeConverterTest extends BaseUnitTestCase { cfg.setProperty( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); cfg.setProperty( AvailableSettings.GENERATE_STATISTICS, "true" ); - SessionFactory sf = cfg.buildSessionFactory(); - - try { + try (SessionFactory sf = cfg.buildSessionFactory()) { Session session = sf.openSession(); session.beginTransaction(); session.save( new Tester4( 1L, "steve", 200 ) ); @@ -274,9 +276,6 @@ public class AttributeConverterTest extends BaseUnitTestCase { session.getTransaction().commit(); session.close(); } - finally { - sf.close(); - } } @Test @@ -285,15 +284,15 @@ public class AttributeConverterTest extends BaseUnitTestCase { final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); try { - MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) + final MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( Tester5.class ) .getMetadataBuilder() .applyAttributeConverter( IntegerToVarcharConverter.class, true ) .build(); - PersistentClass tester = metadata.getEntityBinding( Tester5.class.getName() ); - Property codeProp = tester.getProperty( "code" ); - SimpleValue nameValue = (SimpleValue) codeProp.getValue(); + final PersistentClass tester = metadata.getEntityBinding( Tester5.class.getName() ); + final Property codeProp = tester.getProperty( "code" ); + final SimpleValue nameValue = (SimpleValue) codeProp.getValue(); Type type = nameValue.getType(); assertNotNull( type ); if ( !AttributeConverterTypeAdapter.class.isInstance( type ) ) { @@ -317,9 +316,7 @@ public class AttributeConverterTest extends BaseUnitTestCase { cfg.setProperty( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); cfg.setProperty( AvailableSettings.GENERATE_STATISTICS, "true" ); - SessionFactory sf = cfg.buildSessionFactory(); - - try { + try (SessionFactory sf = cfg.buildSessionFactory()) { Session session = sf.openSession(); session.beginTransaction(); session.save( new IrrelevantInstantEntity( 1L ) ); @@ -340,9 +337,6 @@ public class AttributeConverterTest extends BaseUnitTestCase { session.getTransaction().commit(); session.close(); } - finally { - sf.close(); - } } @Test @@ -354,9 +348,7 @@ public class AttributeConverterTest extends BaseUnitTestCase { cfg.setProperty( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); cfg.setProperty( AvailableSettings.GENERATE_STATISTICS, "true" ); - SessionFactory sf = cfg.buildSessionFactory(); - - try { + try (SessionFactory sf = cfg.buildSessionFactory()) { Session session = sf.openSession(); session.beginTransaction(); session.save( new Tester4( 1L, "George", 150, ConvertibleEnum.DEFAULT ) ); @@ -386,9 +378,6 @@ public class AttributeConverterTest extends BaseUnitTestCase { session.getTransaction().commit(); session.close(); } - finally { - sf.close(); - } } @Test @@ -406,10 +395,10 @@ public class AttributeConverterTest extends BaseUnitTestCase { .build(); // first lets validate that the converter was applied... - PersistentClass tester = metadata.getEntityBinding( EntityWithConvertibleField.class.getName() ); - Property nameProp = tester.getProperty( "convertibleEnum" ); - SimpleValue nameValue = (SimpleValue) nameProp.getValue(); - Type type = nameValue.getType(); + final PersistentClass tester = metadata.getEntityBinding( EntityWithConvertibleField.class.getName() ); + final Property nameProp = tester.getProperty( "convertibleEnum" ); + final SimpleValue nameValue = (SimpleValue) nameProp.getValue(); + final Type type = nameValue.getType(); assertNotNull( type ); assertTyping( BasicType.class, type ); if ( !AttributeConverterTypeAdapter.class.isInstance( type ) ) { diff --git a/hibernate-core/src/test/java/org/hibernate/test/converter/inheritence/AttributeConverterOnSuperclassTest.java b/hibernate-core/src/test/java/org/hibernate/test/converter/inheritence/AttributeConverterOnSuperclassTest.java index 979dc51562..40ae7c6adb 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/converter/inheritence/AttributeConverterOnSuperclassTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/converter/inheritence/AttributeConverterOnSuperclassTest.java @@ -1,3 +1,9 @@ +/* + * 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.converter.inheritence; import java.util.List; @@ -6,6 +12,7 @@ import javax.persistence.AttributeConverter; import org.hibernate.cfg.AttributeConverterDefinition; import org.hibernate.testing.TestForIssue; +import org.hibernate.testing.boot.BootstrapContextImpl; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.Test; @@ -39,8 +46,14 @@ public class AttributeConverterOnSuperclassTest extends BaseUnitTestCase { @Test public void testAttributeConverterOnSuperclass() { - AttributeConverterDefinition def = AttributeConverterDefinition.from( StringIntegerConverterSubclass.class ); - assertEquals( String.class, def.getEntityAttributeType() ); + final BootstrapContextImpl bootstrapContext = new BootstrapContextImpl(); + try { + AttributeConverterDefinition def = AttributeConverterDefinition.from( StringIntegerConverterSubclass.class ); + assertEquals( String.class, def.getEntityAttributeType() ); + } + finally { + bootstrapContext.close(); + } } public interface StringLongAttributeConverter extends AttributeConverter { diff --git a/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/HHH14230.java b/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/HHH14230.java index 09e1bcf378..02895b0786 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/HHH14230.java +++ b/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/HHH14230.java @@ -19,6 +19,7 @@ import javax.persistence.ManyToOne; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.mapping.Table; import org.hibernate.testing.TestForIssue; @@ -35,16 +36,18 @@ public class HHH14230 { @Test public void test() { - Metadata metadata = new MetadataSources(new StandardServiceRegistryBuilder().build()) - .addAnnotatedClass(TestEntity.class).buildMetadata(); - Table table = StreamSupport.stream(metadata.getDatabase().getNamespaces().spliterator(), false) - .flatMap(namespace -> namespace.getTables().stream()) - .filter(t -> t.getName().equals(TABLE_NAME)).findFirst().orElse(null); - assertNotNull(table); - assertEquals(1, table.getForeignKeys().size()); + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build()) { + Metadata metadata = new MetadataSources( serviceRegistry ) + .addAnnotatedClass( TestEntity.class ).buildMetadata(); + Table table = StreamSupport.stream( metadata.getDatabase().getNamespaces().spliterator(), false ) + .flatMap( namespace -> namespace.getTables().stream() ) + .filter( t -> t.getName().equals( TABLE_NAME ) ).findFirst().orElse( null ); + assertNotNull( table ); + assertEquals( 1, table.getForeignKeys().size() ); - // ClassCastException before HHH-14230 - assertTrue(table.getForeignKeys().keySet().iterator().next().toString().contains(JOIN_COLUMN_NAME)); + // ClassCastException before HHH-14230 + assertTrue( table.getForeignKeys().keySet().iterator().next().toString().contains( JOIN_COLUMN_NAME ) ); + } } @Entity diff --git a/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/DefaultConstraintModeTest.java b/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/DefaultConstraintModeTest.java index 86ab995be1..ea2bcc9833 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/DefaultConstraintModeTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/DefaultConstraintModeTest.java @@ -46,10 +46,11 @@ public class DefaultConstraintModeTest extends BaseUnitTestCase { } private void testForeignKeyCreation(boolean created) { - StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() - .applySetting(Environment.HBM2DDL_DEFAULT_CONSTRAINT_MODE, created ? "CONSTRAINT" : "NO_CONSTRAINT").build(); - Metadata metadata = new MetadataSources(ssr).addAnnotatedClass(TestEntity.class).buildMetadata(); - assertThat(findTable(metadata, TABLE_NAME).getForeignKeys().isEmpty(), is(!created)); + try (StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() + .applySetting(Environment.HBM2DDL_DEFAULT_CONSTRAINT_MODE, created ? "CONSTRAINT" : "NO_CONSTRAINT").build()) { + Metadata metadata = new MetadataSources( ssr ).addAnnotatedClass( TestEntity.class ).buildMetadata(); + assertThat( findTable( metadata, TABLE_NAME ).getForeignKeys().isEmpty(), is( !created ) ); + } } private static Table findTable(Metadata metadata, String tableName) { diff --git a/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/OneToManyBidirectionalForeignKeyTest.java b/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/OneToManyBidirectionalForeignKeyTest.java index 38cd379156..37bf045191 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/OneToManyBidirectionalForeignKeyTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/foreignkeys/disabled/OneToManyBidirectionalForeignKeyTest.java @@ -26,6 +26,7 @@ import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.mapping.Table; import org.hibernate.testing.TestForIssue; @@ -44,11 +45,13 @@ public class OneToManyBidirectionalForeignKeyTest { @Test public void testForeignKeyShouldNotBeCreated() { - Metadata metadata = new MetadataSources(new StandardServiceRegistryBuilder().build()) - .addAnnotatedClass(PlainTreeEntity.class).addAnnotatedClass(TreeEntityWithOnDelete.class) - .buildMetadata(); - assertTrue(findTable(metadata, TABLE_NAME_PLAIN).getForeignKeys().isEmpty()); - assertFalse(findTable(metadata, TABLE_NAME_WITH_ON_DELETE).getForeignKeys().isEmpty()); + try (StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build()) { + Metadata metadata = new MetadataSources( serviceRegistry ) + .addAnnotatedClass( PlainTreeEntity.class ).addAnnotatedClass( TreeEntityWithOnDelete.class ) + .buildMetadata(); + assertTrue( findTable( metadata, TABLE_NAME_PLAIN ).getForeignKeys().isEmpty() ); + assertFalse( findTable( metadata, TABLE_NAME_WITH_ON_DELETE ).getForeignKeys().isEmpty() ); + } } private static Table findTable(Metadata metadata, String tableName) { diff --git a/hibernate-core/src/test/java/org/hibernate/test/hbm/comment/ClassCommentTest.java b/hibernate-core/src/test/java/org/hibernate/test/hbm/comment/ClassCommentTest.java index ff8f01fdb7..da7b5e1bde 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/hbm/comment/ClassCommentTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/hbm/comment/ClassCommentTest.java @@ -4,6 +4,7 @@ import java.io.StringReader; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.engine.jdbc.ReaderInputStream; import org.hibernate.mapping.PersistentClass; @@ -28,14 +29,16 @@ public class ClassCommentTest { public void testClassComment() { StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder() .applySetting("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); - MetadataSources metadataSources = new MetadataSources(serviceRegistryBuilder.build()); - metadataSources.addInputStream(new ReaderInputStream(new StringReader(CLASS_COMMENT_HBM_XML))); - Metadata metadata = metadataSources.buildMetadata(); - PersistentClass pc = metadata.getEntityBinding("org.hibernate.test.hbm.Foo"); - Assert.assertNotNull(pc); - Table table = pc.getTable(); - Assert.assertNotNull(table); - Assert.assertEquals("This is class 'Foo' with property 'bar'.", table.getComment()); + try (StandardServiceRegistry serviceRegistry = serviceRegistryBuilder.build()) { + MetadataSources metadataSources = new MetadataSources( serviceRegistry ); + metadataSources.addInputStream( new ReaderInputStream( new StringReader( CLASS_COMMENT_HBM_XML ) ) ); + Metadata metadata = metadataSources.buildMetadata(); + PersistentClass pc = metadata.getEntityBinding( "org.hibernate.test.hbm.Foo" ); + Assert.assertNotNull( pc ); + Table table = pc.getTable(); + Assert.assertNotNull( table ); + Assert.assertEquals( "This is class 'Foo' with property 'bar'.", table.getComment() ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/idgen/userdefined/UserDefinedGeneratorsTests.java b/hibernate-core/src/test/java/org/hibernate/test/idgen/userdefined/UserDefinedGeneratorsTests.java index e84c5681bf..3520043815 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/idgen/userdefined/UserDefinedGeneratorsTests.java +++ b/hibernate-core/src/test/java/org/hibernate/test/idgen/userdefined/UserDefinedGeneratorsTests.java @@ -64,38 +64,45 @@ public class UserDefinedGeneratorsTests extends BaseUnitTestCase { final StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder(); ssrb.applySetting( AvailableSettings.BEAN_CONTAINER, beanContainer ); - final StandardServiceRegistry ssr = ssrb.build(); - final Metadata metadata = new MetadataSources( ssr ) - .addAnnotatedClass( Entity1.class ) - .addAnnotatedClass( Entity2.class ) - .buildMetadata(); + try (final StandardServiceRegistry ssr = ssrb.build()) { + final Metadata metadata = new MetadataSources( ssr ) + .addAnnotatedClass( Entity1.class ) + .addAnnotatedClass( Entity2.class ) + .buildMetadata(); - final DefaultIdentifierGeneratorFactory generatorFactory = new DefaultIdentifierGeneratorFactory(); - generatorFactory.injectServices( (ServiceRegistryImplementor) ssr ); + final DefaultIdentifierGeneratorFactory generatorFactory = new DefaultIdentifierGeneratorFactory(); + generatorFactory.injectServices( (ServiceRegistryImplementor) ssr ); - final PersistentClass entityBinding1 = metadata.getEntityBinding( Entity1.class.getName() ); - final PersistentClass entityBinding2 = metadata.getEntityBinding( Entity2.class.getName() ); - final IdentifierGenerator generator1 = entityBinding1.getRootClass().getIdentifier().createIdentifierGenerator( - generatorFactory, - new H2Dialect(), - "", - "", - entityBinding1.getRootClass() - ); - final IdentifierGenerator generator2 = entityBinding2.getRootClass().getIdentifier().createIdentifierGenerator( - generatorFactory, - new H2Dialect(), - "", - "", - entityBinding2.getRootClass() - ); + final PersistentClass entityBinding1 = metadata.getEntityBinding( Entity1.class.getName() ); + final PersistentClass entityBinding2 = metadata.getEntityBinding( Entity2.class.getName() ); + final IdentifierGenerator generator1 = entityBinding1.getRootClass() + .getIdentifier() + .createIdentifierGenerator( + generatorFactory, + new H2Dialect(), + "", + "", + entityBinding1.getRootClass() + ); + final IdentifierGenerator generator2 = entityBinding2.getRootClass() + .getIdentifier() + .createIdentifierGenerator( + generatorFactory, + new H2Dialect(), + "", + "", + entityBinding2.getRootClass() + ); - then( beanContainer ).should( times( 2 ) ).getBean( same( TestIdentifierGenerator.class ), any( LifecycleOptions.class ), - same( FallbackBeanInstanceProducer.INSTANCE ) ); + then( beanContainer ).should( times( 2 ) ).getBean( same( TestIdentifierGenerator.class ), + any( LifecycleOptions.class ), + same( FallbackBeanInstanceProducer.INSTANCE ) + ); - assertThat( generator1, is( instanceOf( TestIdentifierGenerator.class ) ) ); - assertThat( generator2, is( instanceOf( TestIdentifierGenerator.class ) ) ); - assertThat( generator1 == generator2, is( false ) ); // should not be same instance + assertThat( generator1, is( instanceOf( TestIdentifierGenerator.class ) ) ); + assertThat( generator2, is( instanceOf( TestIdentifierGenerator.class ) ) ); + assertThat( generator1 == generator2, is( false ) ); // should not be same instance + } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/GeneratedValueTests.java b/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/GeneratedValueTests.java index d642f20c49..0d47284b33 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/GeneratedValueTests.java +++ b/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/GeneratedValueTests.java @@ -49,80 +49,92 @@ import static org.junit.Assert.assertTrue; public class GeneratedValueTests extends BaseUnitTestCase { @Test public void baseline() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ExplicitGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ExplicitGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); + final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( + SequenceStyleGenerator.class, + generator + ); - assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_real_db_sequence" ) ); + assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_real_db_sequence" ) ); - // all the JPA defaults since they were not defined - assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 100 ) ); - assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 500 ) ); + // all the JPA defaults since they were not defined + assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 100 ) ); + assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 500 ) ); + } } @Test public void testImplicitSequenceGenerator() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder() .applySetting( AvailableSettings.PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME, "false" ) - .build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ImplicitSequenceGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitSequenceGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + .build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ImplicitSequenceGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitSequenceGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); + final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( + SequenceStyleGenerator.class, + generator + ); - // PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME == false indicates that the legacy - // default (hibernate_sequence) should be used - assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "hibernate_sequence" ) ); + // PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME == false indicates that the legacy + // default (hibernate_sequence) should be used + assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "hibernate_sequence" ) ); - // the JPA defaults since they were not defined - assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 1 ) ); - assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 50 ) ); + // the JPA defaults since they were not defined + assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 1 ) ); + assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 50 ) ); + } } @Test public void testImplicitSequenceGeneratorGeneratorName() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ImplicitSequenceGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitSequenceGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ImplicitSequenceGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitSequenceGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); + final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( + SequenceStyleGenerator.class, + generator + ); - // PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME == true (the default) indicates that the generator-name - // should be used as the default instead. - assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_db_sequence" ) ); + // PREFER_GENERATOR_NAME_AS_DEFAULT_SEQUENCE_NAME == true (the default) indicates that the generator-name + // should be used as the default instead. + assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_db_sequence" ) ); - // the JPA defaults since they were not defined - assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 1 ) ); - assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 50 ) ); + // the JPA defaults since they were not defined + assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 1 ) ); + assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 50 ) ); + } } @Test @@ -152,146 +164,155 @@ public class GeneratedValueTests extends BaseUnitTestCase { @Test public void testExplicitSequenceGeneratorImplicitNamePreferGeneratorName() { // this should be the default behavior - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ExplicitSequenceGeneratorImplicitNameEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitSequenceGeneratorImplicitNameEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ExplicitSequenceGeneratorImplicitNameEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( + ExplicitSequenceGeneratorImplicitNameEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( SequenceStyleGenerator.class, generator ); - // all the JPA defaults since they were not defined - assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_db_sequence" ) ); - assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 100 ) ); - assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 500 ) ); + final SequenceStyleGenerator sequenceStyleGenerator = assertTyping( + SequenceStyleGenerator.class, + generator + ); + // all the JPA defaults since they were not defined + assertThat( sequenceStyleGenerator.getDatabaseStructure().getName(), is( "my_db_sequence" ) ); + assertThat( sequenceStyleGenerator.getDatabaseStructure().getInitialValue(), is( 100 ) ); + assertThat( sequenceStyleGenerator.getDatabaseStructure().getIncrementSize(), is( 500 ) ); - final Sequence sequence = bootModel.getDatabase() - .getDefaultNamespace() - .locateSequence( Identifier.toIdentifier( "my_db_sequence" ) ); - assertThat( sequence, notNullValue() ); - final String[] sqlCreateStrings = new H2Dialect().getSequenceExporter().getSqlCreateStrings( + final Sequence sequence = bootModel.getDatabase() + .getDefaultNamespace() + .locateSequence( Identifier.toIdentifier( "my_db_sequence" ) ); + assertThat( sequence, notNullValue() ); + final String[] sqlCreateStrings = new H2Dialect().getSequenceExporter().getSqlCreateStrings( sequence, bootModel ); assertThat( sqlCreateStrings.length, is(1) ); final String cmd = sqlCreateStrings[0].toLowerCase(); - assertTrue( cmd.startsWith( "create sequence my_db_sequence start with 100 increment by 500" ) ); + assertTrue( cmd.startsWith( "create sequence my_db_sequence start with 100 increment by 500" ) );} } @Test public void testImplicitTableGenerator() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ImplicitTableGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitTableGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ImplicitTableGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitTableGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); + final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); - assertThat( tableGenerator.getTableName(), is( "my_id_table" ) ); + assertThat( tableGenerator.getTableName(), is( "my_id_table" ) ); - // all the JPA defaults since they were not defined - assertThat( tableGenerator.getInitialValue(), is( 1 ) ); - assertThat( tableGenerator.getIncrementSize(), is( 50 ) ); + // all the JPA defaults since they were not defined + assertThat( tableGenerator.getInitialValue(), is( 1 ) ); + assertThat( tableGenerator.getIncrementSize(), is( 50 ) ); + } } @Test public void testExplicitTableGeneratorImplicitName() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ExplicitTableGeneratorImplicitNameEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitTableGeneratorImplicitNameEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ExplicitTableGeneratorImplicitNameEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitTableGeneratorImplicitNameEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); + final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); - assertThat( tableGenerator.getTableName(), is( "my_id_table" ) ); + assertThat( tableGenerator.getTableName(), is( "my_id_table" ) ); - // - note : currently initialValue=1 in mapping is shows up here as 2 - assertThat( tableGenerator.getInitialValue(), is( 1 ) ); - assertThat( tableGenerator.getIncrementSize(), is( 25 ) ); + // - note : currently initialValue=1 in mapping is shows up here as 2 + assertThat( tableGenerator.getInitialValue(), is( 1 ) ); + assertThat( tableGenerator.getIncrementSize(), is( 25 ) ); + } } @Test public void testExplicitTableGenerator() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ExplicitTableGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitTableGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ExplicitTableGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitTableGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); + final TableGenerator tableGenerator = assertTyping( TableGenerator.class, generator ); - assertThat( tableGenerator.getTableName(), is( "my_real_id_table" ) ); + assertThat( tableGenerator.getTableName(), is( "my_real_id_table" ) ); - // all the JPA defaults since they were not defined - // - note : currently initialValue=1 in mapping is shows up here - // as 2 + // all the JPA defaults since they were not defined + // - note : currently initialValue=1 in mapping is shows up here + // as 2 // assertThat( tableGenerator.getInitialValue(), is( 1 ) ); - assertThat( tableGenerator.getIncrementSize(), is( 25 ) ); + assertThat( tableGenerator.getIncrementSize(), is( 25 ) ); + } } @Test public void testExplicitIncrementGenerator() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ExplicitIncrementGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitIncrementGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ExplicitIncrementGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ExplicitIncrementGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - assertTyping( IncrementGenerator.class, generator ); + assertTyping( IncrementGenerator.class, generator ); + } } @Test public void testImplicitIncrementGenerator() { - final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - final Metadata bootModel = new MetadataSources( ssr ) - .addAnnotatedClass( ImplicitIncrementGeneratorEntity.class ) - .buildMetadata(); - final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitIncrementGeneratorEntity.class.getName() ); - final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( - bootModel.getIdentifierGeneratorFactory(), - ssr.getService( JdbcEnvironment.class ).getDialect(), - null, - null, - (RootClass) entityMapping - ); + try (final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build()) { + final Metadata bootModel = new MetadataSources( ssr ) + .addAnnotatedClass( ImplicitIncrementGeneratorEntity.class ) + .buildMetadata(); + final PersistentClass entityMapping = bootModel.getEntityBinding( ImplicitIncrementGeneratorEntity.class.getName() ); + final IdentifierGenerator generator = entityMapping.getIdentifier().createIdentifierGenerator( + bootModel.getIdentifierGeneratorFactory(), + ssr.getService( JdbcEnvironment.class ).getDialect(), + null, + null, + (RootClass) entityMapping + ); - assertTyping( IncrementGenerator.class, generator ); + assertTyping( IncrementGenerator.class, generator ); + } } @Entity @@ -320,7 +341,7 @@ public class GeneratedValueTests extends BaseUnitTestCase { @Entity public static class ExplicitSequenceGeneratorImplicitNameEntity { /** - * This entity does not have explicit {@link SequenceGenerator} defined + * This entity does have explicit {@link SequenceGenerator} defined */ @Id @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "my_db_sequence" ) diff --git a/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/caching/CachingWithSecondaryTablesTests.java b/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/caching/CachingWithSecondaryTablesTests.java index 8d2c1da0e2..fad99b9f75 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/caching/CachingWithSecondaryTablesTests.java +++ b/hibernate-core/src/test/java/org/hibernate/test/jpa/compliance/tck2_2/caching/CachingWithSecondaryTablesTests.java @@ -19,6 +19,7 @@ import javax.persistence.Version; import org.hibernate.Hibernate; import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.AvailableSettings; import org.hibernate.engine.spi.SessionFactoryImplementor; @@ -140,15 +141,20 @@ public class CachingWithSecondaryTablesTests extends BaseUnitTestCase { settings.put( AvailableSettings.JPA_CACHING_COMPLIANCE, "true" ); } - final StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder() - .applySettings( settings ); - - return (SessionFactoryImplementor) new MetadataSources( ssrb.build() ) - .addAnnotatedClass( Person.class ) - .addAnnotatedClass( VersionedPerson.class) - .buildMetadata() - .buildSessionFactory(); - + final StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .applySettings( settings ) + .build(); + try { + return (SessionFactoryImplementor) new MetadataSources( serviceRegistry ) + .addAnnotatedClass( Person.class ) + .addAnnotatedClass( VersionedPerson.class ) + .buildMetadata() + .buildSessionFactory(); + } + catch (Throwable t) { + serviceRegistry.close(); + throw t; + } } @After diff --git a/hibernate-core/src/test/java/org/hibernate/test/mapping/ValueVisitorTest.java b/hibernate-core/src/test/java/org/hibernate/test/mapping/ValueVisitorTest.java index 8bec54a9bd..bf54e12a95 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/mapping/ValueVisitorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/mapping/ValueVisitorTest.java @@ -63,21 +63,23 @@ public class ValueVisitorTest extends BaseUnitTestCase { final RootClass rootClass = new RootClass( metadataBuildingContext ); ValueVisitor vv = new ValueVisitorValidator(); - MetadataBuildingContextTestingImpl metadataBuildingContext = new MetadataBuildingContextTestingImpl(); - new Any( metadataBuildingContext, tbl ).accept( vv ); - new Array( metadataBuildingContext, rootClass ).accept( vv ); - new Bag( metadataBuildingContext, rootClass ).accept( vv ); - new Component( metadataBuildingContext, rootClass ).accept( vv ); - new DependantValue( metadataBuildingContext, tbl, null ).accept( vv ); - new IdentifierBag( metadataBuildingContext, rootClass ).accept( vv ); - new List( metadataBuildingContext, rootClass ).accept( vv ); - new ManyToOne( metadataBuildingContext, tbl ).accept( vv ); - new Map( metadataBuildingContext, rootClass ).accept( vv ); - new OneToMany( metadataBuildingContext, rootClass ).accept( vv ); - new OneToOne( metadataBuildingContext, tbl, rootClass ).accept( vv ); - new PrimitiveArray( metadataBuildingContext, rootClass ).accept( vv ); - new Set( metadataBuildingContext, rootClass ).accept( vv ); - new SimpleValue( metadataBuildingContext ).accept( vv ); + try ( StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build()) { + MetadataBuildingContextTestingImpl metadataBuildingContext = new MetadataBuildingContextTestingImpl( serviceRegistry ); + new Any( metadataBuildingContext, tbl ).accept( vv ); + new Array( metadataBuildingContext, rootClass ).accept( vv ); + new Bag( metadataBuildingContext, rootClass ).accept( vv ); + new Component( metadataBuildingContext, rootClass ).accept( vv ); + new DependantValue( metadataBuildingContext, tbl, null ).accept( vv ); + new IdentifierBag( metadataBuildingContext, rootClass ).accept( vv ); + new List( metadataBuildingContext, rootClass ).accept( vv ); + new ManyToOne( metadataBuildingContext, tbl ).accept( vv ); + new Map( metadataBuildingContext, rootClass ).accept( vv ); + new OneToMany( metadataBuildingContext, rootClass ).accept( vv ); + new OneToOne( metadataBuildingContext, tbl, rootClass ).accept( vv ); + new PrimitiveArray( metadataBuildingContext, rootClass ).accept( vv ); + new Set( metadataBuildingContext, rootClass ).accept( vv ); + new SimpleValue( metadataBuildingContext ).accept( vv ); + } } static public class ValueVisitorValidator implements ValueVisitor { diff --git a/hibernate-core/src/test/java/org/hibernate/test/multitenancy/discriminator/DiscriminatorMultiTenancyTest.java b/hibernate-core/src/test/java/org/hibernate/test/multitenancy/discriminator/DiscriminatorMultiTenancyTest.java index 6600182eb2..165b4b7eaa 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/multitenancy/discriminator/DiscriminatorMultiTenancyTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/multitenancy/discriminator/DiscriminatorMultiTenancyTest.java @@ -68,48 +68,54 @@ public class DiscriminatorMultiTenancyTest extends BaseUnitTestCase { .applySettings(settings) .build(); - MetadataSources ms = new MetadataSources(serviceRegistry); - ms.addAnnotatedClass(Customer.class); + try { + MetadataSources ms = new MetadataSources( serviceRegistry ); + ms.addAnnotatedClass( Customer.class ); - Metadata metadata = ms.buildMetadata(); - final PersistentClass customerMapping = metadata.getEntityBinding( Customer.class.getName() ); - customerMapping.setCached( true ); - ((RootClass) customerMapping ).setCacheConcurrencyStrategy( "read-write"); + Metadata metadata = ms.buildMetadata(); + final PersistentClass customerMapping = metadata.getEntityBinding( Customer.class.getName() ); + customerMapping.setCached( true ); + ( (RootClass) customerMapping ).setCacheConcurrencyStrategy( "read-write" ); - HibernateSchemaManagementTool tool = new HibernateSchemaManagementTool(); - tool.injectServices(serviceRegistry); + HibernateSchemaManagementTool tool = new HibernateSchemaManagementTool(); + tool.injectServices( serviceRegistry ); - connectionProvider = ConnectionProviderBuilder.buildConnectionProvider(); + connectionProvider = ConnectionProviderBuilder.buildConnectionProvider(); - final GenerationTargetToDatabase target = new GenerationTargetToDatabase( - new DdlTransactionIsolatorTestingImpl( - serviceRegistry, - connectionProvider - ) - ); + final GenerationTargetToDatabase target = new GenerationTargetToDatabase( + new DdlTransactionIsolatorTestingImpl( + serviceRegistry, + connectionProvider + ) + ); - new SchemaDropperImpl(serviceRegistry).doDrop( - metadata, - serviceRegistry, - settings, - true, - target - ); + new SchemaDropperImpl( serviceRegistry ).doDrop( + metadata, + serviceRegistry, + settings, + true, + target + ); - new SchemaCreatorImpl(serviceRegistry).doCreation( - metadata, - serviceRegistry, - settings, - true, - target - ); + new SchemaCreatorImpl( serviceRegistry ).doCreation( + metadata, + serviceRegistry, + settings, + true, + target + ); - target.release(); + target.release(); - final SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); - sessionFactory = (SessionFactoryImplementor) sfb.build(); - currentTenantResolver.setHibernateBooted(); + final SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); + sessionFactory = (SessionFactoryImplementor) sfb.build(); + currentTenantResolver.setHibernateBooted(); + } + catch (Throwable t) { + serviceRegistry.close(); + throw t; + } } @After diff --git a/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/SchemaUpdateSchemaNameTest.java b/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/SchemaUpdateSchemaNameTest.java index 92971c38e9..17638d052c 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/SchemaUpdateSchemaNameTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/SchemaUpdateSchemaNameTest.java @@ -75,8 +75,7 @@ public class SchemaUpdateSchemaNameTest extends BaseUnitTestCase { .applySettings( cfg.getProperties() ) .build(); - SessionFactory sf = cfg.buildSessionFactory( ssr ); - try { + try (SessionFactory sf = cfg.buildSessionFactory();) { Session session = sf.openSession(); try { session.getTransaction().begin(); @@ -93,9 +92,6 @@ public class SchemaUpdateSchemaNameTest extends BaseUnitTestCase { session.close(); } } - finally { - sf.close(); - } } finally { StandardServiceRegistryBuilder.destroy( ssr ); @@ -112,8 +108,7 @@ public class SchemaUpdateSchemaNameTest extends BaseUnitTestCase { cfg.getStandardServiceRegistryBuilder().getAggregatedCfgXml() ) .applySettings( cfg.getProperties() ) .build(); - SessionFactory sf = cfg.buildSessionFactory( ssr ); - try { + try (SessionFactory sf = cfg.buildSessionFactory( ssr )) { Session session = sf.openSession(); try { session.getTransaction().begin(); @@ -130,9 +125,6 @@ public class SchemaUpdateSchemaNameTest extends BaseUnitTestCase { session.close(); } } - finally { - sf.close(); - } } finally { StandardServiceRegistryBuilder.destroy( ssr ); diff --git a/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/inheritance/hhh_x/InheritanceSchemaUpdateTest.java b/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/inheritance/hhh_x/InheritanceSchemaUpdateTest.java index c4852f6944..0fe5103233 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/inheritance/hhh_x/InheritanceSchemaUpdateTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/schemaupdate/inheritance/hhh_x/InheritanceSchemaUpdateTest.java @@ -31,13 +31,13 @@ public class InheritanceSchemaUpdateTest extends BaseUnitTestCase { public void testBidirectionalOneToManyReferencingRootEntity() throws Exception { StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build(); - MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) - .addAnnotatedClass( Step.class ) - .addAnnotatedClass( GroupStep.class ) - .buildMetadata(); - metadata.validate(); - try { + MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) + .addAnnotatedClass( Step.class ) + .addAnnotatedClass( GroupStep.class ) + .buildMetadata(); + metadata.validate(); + try { new SchemaUpdate().execute( EnumSet.of( TargetType.DATABASE ), metadata ); } diff --git a/hibernate-core/src/test/java/org/hibernate/test/sql/storedproc/StoredProcedureResultSetMappingTest.java b/hibernate-core/src/test/java/org/hibernate/test/sql/storedproc/StoredProcedureResultSetMappingTest.java index fe27012a35..f42071233d 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/sql/storedproc/StoredProcedureResultSetMappingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/sql/storedproc/StoredProcedureResultSetMappingTest.java @@ -123,8 +123,7 @@ public class StoredProcedureResultSetMappingTest extends BaseUnitTestCase { .addAnnotatedClass( Employee.class ) .setProperty( AvailableSettings.HBM2DDL_AUTO, "create-drop" ); cfg.addAuxiliaryDatabaseObject( new ProcedureDefinition() ); - SessionFactory sf = cfg.buildSessionFactory(); - try { + try (SessionFactory sf = cfg.buildSessionFactory()) { Session session = sf.openSession(); session.beginTransaction(); @@ -137,8 +136,5 @@ public class StoredProcedureResultSetMappingTest extends BaseUnitTestCase { session.getTransaction().commit(); session.close(); } - finally { - sf.close(); - } } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/stats/StatsTest.java b/hibernate-core/src/test/java/org/hibernate/test/stats/StatsTest.java index ea1eb4c327..fbad8036f7 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/stats/StatsTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/stats/StatsTest.java @@ -145,91 +145,91 @@ public class StatsTest extends BaseUnitTestCase { @Test public void testQueryStatGathering() { - SessionFactory sf = buildBaseConfiguration() + try (SessionFactory sf = buildBaseConfiguration() .setProperty( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) - .buildSessionFactory(); + .buildSessionFactory()) { - Session s = sf.openSession(); - Transaction tx = s.beginTransaction(); - fillDb(s); - tx.commit(); - s.close(); + Session s = sf.openSession(); + Transaction tx = s.beginTransaction(); + fillDb( s ); + tx.commit(); + s.close(); - s = sf.openSession(); - tx = s.beginTransaction(); - final String continents = "from Continent"; - int results = s.createQuery( continents ).list().size(); - QueryStatistics continentStats = sf.getStatistics().getQueryStatistics( continents ); - assertNotNull( "stats were null", continentStats ); - assertEquals( "unexpected execution count", 1, continentStats.getExecutionCount() ); - assertEquals( "unexpected row count", results, continentStats.getExecutionRowCount() ); - long maxTime = continentStats.getExecutionMaxTime(); - assertEquals( maxTime, sf.getStatistics().getQueryExecutionMaxTime() ); + s = sf.openSession(); + tx = s.beginTransaction(); + final String continents = "from Continent"; + int results = s.createQuery( continents ).list().size(); + QueryStatistics continentStats = sf.getStatistics().getQueryStatistics( continents ); + assertNotNull( "stats were null", continentStats ); + assertEquals( "unexpected execution count", 1, continentStats.getExecutionCount() ); + assertEquals( "unexpected row count", results, continentStats.getExecutionRowCount() ); + long maxTime = continentStats.getExecutionMaxTime(); + assertEquals( maxTime, sf.getStatistics().getQueryExecutionMaxTime() ); // assertEquals( continents, stats.getQueryExecutionMaxTimeQueryString() ); - Iterator itr = s.createQuery( continents ).iterate(); - // iterate() should increment the execution count - assertEquals( "unexpected execution count", 2, continentStats.getExecutionCount() ); - // but should not effect the cumulative row count - assertEquals( "unexpected row count", results, continentStats.getExecutionRowCount() ); - Hibernate.close( itr ); + Iterator itr = s.createQuery( continents ).iterate(); + // iterate() should increment the execution count + assertEquals( "unexpected execution count", 2, continentStats.getExecutionCount() ); + // but should not effect the cumulative row count + assertEquals( "unexpected row count", results, continentStats.getExecutionRowCount() ); + Hibernate.close( itr ); - ScrollableResults scrollableResults = s.createQuery( continents ).scroll(); - // same deal with scroll()... - assertEquals( "unexpected execution count", 3, continentStats.getExecutionCount() ); - assertEquals( "unexpected row count", results, continentStats.getExecutionRowCount() ); - // scroll through data because SybaseASE15Dialect throws NullPointerException - // if data is not read before closing the ResultSet - while ( scrollableResults.next() ) { - // do nothing - } - scrollableResults.close(); - tx.commit(); - s.close(); + ScrollableResults scrollableResults = s.createQuery( continents ).scroll(); + // same deal with scroll()... + assertEquals( "unexpected execution count", 3, continentStats.getExecutionCount() ); + assertEquals( "unexpected row count", results, continentStats.getExecutionRowCount() ); + // scroll through data because SybaseASE15Dialect throws NullPointerException + // if data is not read before closing the ResultSet + while ( scrollableResults.next() ) { + // do nothing + } + scrollableResults.close(); + tx.commit(); + s.close(); - // explicitly check that statistics for "split queries" get collected - // under the original query - sf.getStatistics().clear(); + // explicitly check that statistics for "split queries" get collected + // under the original query + sf.getStatistics().clear(); - s = sf.openSession(); - tx = s.beginTransaction(); - final String localities = "from Locality"; - results = s.createQuery( localities ).list().size(); - QueryStatistics localityStats = sf.getStatistics().getQueryStatistics( localities ); - assertNotNull( "stats were null", localityStats ); - // ...one for each split query - assertEquals( "unexpected execution count", 2, localityStats.getExecutionCount() ); - assertEquals( "unexpected row count", results, localityStats.getExecutionRowCount() ); - maxTime = localityStats.getExecutionMaxTime(); - assertEquals( maxTime, sf.getStatistics().getQueryExecutionMaxTime() ); + s = sf.openSession(); + tx = s.beginTransaction(); + final String localities = "from Locality"; + results = s.createQuery( localities ).list().size(); + QueryStatistics localityStats = sf.getStatistics().getQueryStatistics( localities ); + assertNotNull( "stats were null", localityStats ); + // ...one for each split query + assertEquals( "unexpected execution count", 2, localityStats.getExecutionCount() ); + assertEquals( "unexpected row count", results, localityStats.getExecutionRowCount() ); + maxTime = localityStats.getExecutionMaxTime(); + assertEquals( maxTime, sf.getStatistics().getQueryExecutionMaxTime() ); // assertEquals( localities, stats.getQueryExecutionMaxTimeQueryString() ); - tx.commit(); - s.close(); - assertFalse( s.isOpen() ); + tx.commit(); + s.close(); + assertFalse( s.isOpen() ); - // native sql queries - sf.getStatistics().clear(); + // native sql queries + sf.getStatistics().clear(); - s = sf.openSession(); - tx = s.beginTransaction(); - final String sql = "select id, name from Country"; - results = s.createSQLQuery( sql ).addEntity( Country.class ).list().size(); - QueryStatistics sqlStats = sf.getStatistics().getQueryStatistics( sql ); - assertNotNull( "sql stats were null", sqlStats ); - assertEquals( "unexpected execution count", 1, sqlStats.getExecutionCount() ); - assertEquals( "unexpected row count", results, sqlStats.getExecutionRowCount() ); - maxTime = sqlStats.getExecutionMaxTime(); - assertEquals( maxTime, sf.getStatistics().getQueryExecutionMaxTime() ); + s = sf.openSession(); + tx = s.beginTransaction(); + final String sql = "select id, name from Country"; + results = s.createSQLQuery( sql ).addEntity( Country.class ).list().size(); + QueryStatistics sqlStats = sf.getStatistics().getQueryStatistics( sql ); + assertNotNull( "sql stats were null", sqlStats ); + assertEquals( "unexpected execution count", 1, sqlStats.getExecutionCount() ); + assertEquals( "unexpected row count", results, sqlStats.getExecutionRowCount() ); + maxTime = sqlStats.getExecutionMaxTime(); + assertEquals( maxTime, sf.getStatistics().getQueryExecutionMaxTime() ); // assertEquals( sql, stats.getQueryExecutionMaxTimeQueryString() ); - tx.commit(); - s.close(); + tx.commit(); + s.close(); - s = sf.openSession(); - tx = s.beginTransaction(); - cleanDb( s ); - tx.commit(); - s.close(); - sf.close(); + s = sf.openSession(); + tx = s.beginTransaction(); + cleanDb( s ); + tx.commit(); + s.close(); + } } private Continent fillDb(Session s) { diff --git a/hibernate-core/src/test/java/org/hibernate/test/tool/schema/DropSchemaDuringJtaTxnTest.java b/hibernate-core/src/test/java/org/hibernate/test/tool/schema/DropSchemaDuringJtaTxnTest.java index e432310f64..94df31d8aa 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/tool/schema/DropSchemaDuringJtaTxnTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/tool/schema/DropSchemaDuringJtaTxnTest.java @@ -53,11 +53,16 @@ public class DropSchemaDuringJtaTxnTest extends BaseUnitTestCase { settings.put( AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jta" ); final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySettings( settings ).build(); - - return new MetadataSources( ssr ) - .addAnnotatedClass( TestEntity.class ) - .buildMetadata() - .buildSessionFactory(); + try { + return new MetadataSources( ssr ) + .addAnnotatedClass( TestEntity.class ) + .buildMetadata() + .buildSessionFactory(); + } + catch (Throwable t) { + ssr.close(); + throw t; + } } diff --git a/hibernate-core/src/test/java/org/hibernate/test/util/jdbc/PreparedStatementSpyConnectionProvider.java b/hibernate-core/src/test/java/org/hibernate/test/util/jdbc/PreparedStatementSpyConnectionProvider.java index b4ac7872f3..fab695a6ad 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/util/jdbc/PreparedStatementSpyConnectionProvider.java +++ b/hibernate-core/src/test/java/org/hibernate/test/util/jdbc/PreparedStatementSpyConnectionProvider.java @@ -39,7 +39,7 @@ public class PreparedStatementSpyConnectionProvider extends ConnectionProviderDe private static final MockSettings MOCK_SETTINGS = Mockito.withSettings() .stubOnly() //important optimisation: uses far less memory, at tradeoff of mocked methods no longer being verifiable but we often don't need that. .defaultAnswer( org.mockito.Answers.CALLS_REAL_METHODS ); - private static final MockSettings VERIFIEABLE_MOCK_SETTINGS = Mockito.withSettings() + private static final MockSettings VERIFIABLE_MOCK_SETTINGS = Mockito.withSettings() .defaultAnswer( org.mockito.Answers.CALLS_REAL_METHODS ); // We must keep around the mocked connections, otherwise they are garbage collected and trigger finalizers // Since we use CALLS_REAL_METHODS this might close underlying IO resources which makes other objects unusable @@ -69,8 +69,8 @@ public class PreparedStatementSpyConnectionProvider extends ConnectionProviderDe * When you really need to verify invocations, set the relevant constructor parameter to true. */ public PreparedStatementSpyConnectionProvider(boolean allowMockVerificationOnStatements, boolean allowMockVerificationOnConnections) { - this.settingsForStatements = allowMockVerificationOnStatements ? VERIFIEABLE_MOCK_SETTINGS : MOCK_SETTINGS; - this.settingsForConnections = allowMockVerificationOnConnections ? VERIFIEABLE_MOCK_SETTINGS : MOCK_SETTINGS; + this.settingsForStatements = allowMockVerificationOnStatements ? VERIFIABLE_MOCK_SETTINGS : MOCK_SETTINGS; + this.settingsForConnections = allowMockVerificationOnConnections ? VERIFIABLE_MOCK_SETTINGS : MOCK_SETTINGS; } protected Connection actualConnection() throws SQLException { diff --git a/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/dynamic/AuditedDynamicComponentTest.java b/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/dynamic/AuditedDynamicComponentTest.java index 85f069ad13..bf158f42ad 100644 --- a/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/dynamic/AuditedDynamicComponentTest.java +++ b/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/dynamic/AuditedDynamicComponentTest.java @@ -54,7 +54,7 @@ public class AuditedDynamicComponentTest extends BaseEnversFunctionalTestCase { final ServiceRegistry serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry( config.getProperties() ); try { - config.buildSessionFactory( serviceRegistry ); + config.buildSessionFactory( serviceRegistry ).close(); Assert.fail( "MappingException expected" ); } catch ( MappingException e ) { diff --git a/hibernate-jcache/src/test/java/org/hibernate/jcache/test/TestHelper.java b/hibernate-jcache/src/test/java/org/hibernate/jcache/test/TestHelper.java index fa1711d855..2020594f4d 100644 --- a/hibernate-jcache/src/test/java/org/hibernate/jcache/test/TestHelper.java +++ b/hibernate-jcache/src/test/java/org/hibernate/jcache/test/TestHelper.java @@ -105,8 +105,13 @@ public class TestHelper { additionalSettings.accept( ssrb ); final StandardServiceRegistry ssr = ssrb.build(); - - return (SessionFactoryImplementor) new MetadataSources( ssr ).buildMetadata().buildSessionFactory(); + try { + return (SessionFactoryImplementor) new MetadataSources( ssr ).buildMetadata().buildSessionFactory(); + } + catch (Throwable t) { + ssr.close(); + throw t; + } } public static StandardServiceRegistryBuilder getStandardServiceRegistryBuilder() { diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/boot/BootstrapContextImpl.java b/hibernate-testing/src/main/java/org/hibernate/testing/boot/BootstrapContextImpl.java index 7991cae114..57a1257b43 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/boot/BootstrapContextImpl.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/boot/BootstrapContextImpl.java @@ -33,11 +33,10 @@ import org.jboss.jandex.IndexView; * @author Andrea Boriero */ public class BootstrapContextImpl implements BootstrapContext { - public static final BootstrapContextImpl INSTANCE = new BootstrapContextImpl(); - private BootstrapContext delegate; + private final BootstrapContext delegate; - private BootstrapContextImpl() { + public BootstrapContextImpl() { StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build(); MetadataBuildingOptions buildingOptions = new MetadataBuilderImpl.MetadataBuildingOptionsImpl( serviceRegistry ); @@ -143,4 +142,9 @@ public class BootstrapContextImpl implements BootstrapContext { public void release() { delegate.release(); } + + public void close() { + delegate.release(); + delegate.getServiceRegistry().close(); + } } diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/boot/MetadataBuildingContextTestingImpl.java b/hibernate-testing/src/main/java/org/hibernate/testing/boot/MetadataBuildingContextTestingImpl.java index 53bb698e9e..affa2af7bb 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/boot/MetadataBuildingContextTestingImpl.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/boot/MetadataBuildingContextTestingImpl.java @@ -31,10 +31,6 @@ public class MetadataBuildingContextTestingImpl implements MetadataBuildingConte private final ObjectNameNormalizer objectNameNormalizer; - public MetadataBuildingContextTestingImpl() { - this( new StandardServiceRegistryBuilder().build() ); - } - public MetadataBuildingContextTestingImpl(StandardServiceRegistry serviceRegistry) { buildingOptions = new MetadataBuilderImpl.MetadataBuildingOptionsImpl( serviceRegistry ); bootstrapContext = new BootstrapContextImpl( serviceRegistry, buildingOptions ); diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java b/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java index d3dee0e2c4..b6504dced2 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/junit4/BaseCoreFunctionalTestCase.java @@ -112,16 +112,34 @@ public abstract class BaseCoreFunctionalTestCase extends BaseUnitTestCase { protected void buildSessionFactory(Consumer configurationAdapter) { // for now, build the configuration to get all the property settings - BootstrapServiceRegistry bootRegistry = buildBootstrapServiceRegistry(); - configuration = constructAndConfigureConfiguration( bootRegistry ); - if ( configurationAdapter != null ) { - configurationAdapter.accept(configuration); + BootstrapServiceRegistry bootRegistry = null; + try { + bootRegistry = buildBootstrapServiceRegistry(); + configuration = constructAndConfigureConfiguration( bootRegistry ); + if ( configurationAdapter != null ) { + configurationAdapter.accept( configuration ); + } + serviceRegistry = buildServiceRegistry( bootRegistry, configuration ); + // this is done here because Configuration does not currently support 4.0 xsd + afterConstructAndConfigureConfiguration( configuration ); + sessionFactory = (SessionFactoryImplementor) configuration.buildSessionFactory( serviceRegistry ); + afterSessionFactoryBuilt(); + } + catch (Throwable t) { + if ( sessionFactory != null ) { + sessionFactory.close(); + sessionFactory = null; + configuration = null; + } + if ( serviceRegistry != null ) { + serviceRegistry.destroy(); + serviceRegistry = null; + } + else if ( bootRegistry != null ) { + bootRegistry.close(); + } + throw t; } - serviceRegistry = buildServiceRegistry( bootRegistry, configuration ); - // this is done here because Configuration does not currently support 4.0 xsd - afterConstructAndConfigureConfiguration( configuration ); - sessionFactory = ( SessionFactoryImplementor ) configuration.buildSessionFactory( serviceRegistry ); - afterSessionFactoryBuilt(); } protected void rebuildSessionFactory() { @@ -277,17 +295,25 @@ public abstract class BaseCoreFunctionalTestCase extends BaseUnitTestCase { } protected StandardServiceRegistryImpl buildServiceRegistry(BootstrapServiceRegistry bootRegistry, Configuration configuration) { - Properties properties = new Properties(); - properties.putAll( configuration.getProperties() ); - ConfigurationHelper.resolvePlaceHolders( properties ); + try { + Properties properties = new Properties(); + properties.putAll( configuration.getProperties() ); + ConfigurationHelper.resolvePlaceHolders( properties ); - StandardServiceRegistryBuilder cfgRegistryBuilder = configuration.getStandardServiceRegistryBuilder(); + StandardServiceRegistryBuilder cfgRegistryBuilder = configuration.getStandardServiceRegistryBuilder(); - StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder( bootRegistry, cfgRegistryBuilder.getAggregatedCfgXml() ) - .applySettings( properties ); + StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder( bootRegistry, cfgRegistryBuilder.getAggregatedCfgXml() ) + .applySettings( properties ); - prepareBasicRegistryBuilder( registryBuilder ); - return (StandardServiceRegistryImpl) registryBuilder.build(); + prepareBasicRegistryBuilder( registryBuilder ); + return (StandardServiceRegistryImpl) registryBuilder.build(); + } + catch (Throwable t) { + if ( bootRegistry != null ) { + bootRegistry.close(); + } + throw t; + } } protected void prepareBasicRegistryBuilder(StandardServiceRegistryBuilder serviceRegistryBuilder) { diff --git a/hibernate-vibur/src/test/java/org/hibernate/test/vibur/ViburDBCPConnectionProviderTest.java b/hibernate-vibur/src/test/java/org/hibernate/test/vibur/ViburDBCPConnectionProviderTest.java index 7c092825d8..8cb6b7354a 100644 --- a/hibernate-vibur/src/test/java/org/hibernate/test/vibur/ViburDBCPConnectionProviderTest.java +++ b/hibernate-vibur/src/test/java/org/hibernate/test/vibur/ViburDBCPConnectionProviderTest.java @@ -132,8 +132,8 @@ public class ViburDBCPConnectionProviderTest extends BaseCoreFunctionalTestCase @SuppressWarnings("unchecked") private static void executeAndVerifySelect(Session session) { - List list = session.createQuery("from Actor where firstName = ?0") - .setParameter(0, "CHRISTIAN").list(); + List list = session.createQuery("from Actor where firstName = ?1") + .setParameter(1, "CHRISTIAN").list(); Set expectedLastNames = new HashSet<>(Arrays.asList("GABLE", "AKROYD", "NEESON")); assertEquals(expectedLastNames.size(), list.size());