[hibernate-commits] Hibernate SVN: r20295 - core/trunk/core/src/main/java/org/hibernate/cfg.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Aug 31 14:57:54 EDT 2010


Author: steve.ebersole at jboss.com
Date: 2010-08-31 14:57:54 -0400 (Tue, 31 Aug 2010)
New Revision: 20295

Modified:
   core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java
Log:
HHH-5520 - Per org.hibernate.cache.RegionFactory javadocs, implementors should be allowed to use no-arg constructor


Modified: core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java	2010-08-31 18:44:56 UTC (rev 20294)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/SettingsFactory.java	2010-08-31 18:57:54 UTC (rev 20295)
@@ -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 @@
 			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 @@
 		}
 		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 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);



More information about the hibernate-commits mailing list