From 21c49fff68cc4bae1584c2830ee4af8b636e6fdf Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Tue, 31 Aug 2010 18:57:54 +0000 Subject: [PATCH] HHH-5520 - Per org.hibernate.cache.RegionFactory javadocs, implementors should be allowed to use no-arg constructor git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@20295 1b8cb986-b30d-0410-93ca-fae66ebed9b2 --- .../org/hibernate/cfg/SettingsFactory.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/hibernate/cfg/SettingsFactory.java b/core/src/main/java/org/hibernate/cfg/SettingsFactory.java index 8e999243df..cb620795e7 100644 --- a/core/src/main/java/org/hibernate/cfg/SettingsFactory.java +++ b/core/src/main/java/org/hibernate/cfg/SettingsFactory.java @@ -24,6 +24,7 @@ package org.hibernate.cfg; import java.io.Serializable; +import java.lang.reflect.Constructor; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; @@ -368,8 +369,8 @@ else if ( "cglib".equals( providerName ) ) { return new org.hibernate.bytecode.cglib.BytecodeProviderImpl(); } else { - log.debug( "using cglib as bytecode provider by default" ); - return new org.hibernate.bytecode.cglib.BytecodeProviderImpl(); + log.debug( "using javassist as bytecode provider by default" ); + return new org.hibernate.bytecode.javassist.BytecodeProviderImpl(); } } @@ -404,9 +405,19 @@ public static RegionFactory createRegionFactory(Properties properties, boolean c } log.info( "Cache region factory : " + regionFactoryClassName ); try { - return ( RegionFactory ) ReflectHelper.classForName( regionFactoryClassName ) - .getConstructor( new Class[] { Properties.class } ) - .newInstance( new Object[] { properties } ); + try { + return (RegionFactory) ReflectHelper.classForName( regionFactoryClassName ) + .getConstructor( Properties.class ) + .newInstance( properties ); + } + catch ( NoSuchMethodException nsme ) { + // no constructor accepting Properties found, try no arg constructor + log.debug( + regionFactoryClassName + " did not provide constructor accepting java.util.Properties; " + + "attempting no-arg constructor." + ); + return (RegionFactory) ReflectHelper.classForName( regionFactoryClassName ).newInstance(); + } } catch ( Exception e ) { throw new HibernateException( "could not instantiate RegionFactory [" + regionFactoryClassName + "]", e ); @@ -429,9 +440,9 @@ protected QueryTranslatorFactory createQueryTranslatorFactory(Properties propert protected BatcherFactory createBatcherFactory(Properties properties, int batchSize) { String batcherClass = properties.getProperty(Environment.BATCH_STRATEGY); if (batcherClass==null) { - return batchSize==0 ? - (BatcherFactory) new NonBatchingBatcherFactory() : - (BatcherFactory) new BatchingBatcherFactory(); + return batchSize == 0 + ? new NonBatchingBatcherFactory() + : new BatchingBatcherFactory(); } else { log.info("Batcher factory: " + batcherClass);