[hibernate-commits] Hibernate SVN: r19839 - in search/trunk/hibernate-search/src: main/java/org/hibernate/search/batchindexing and 4 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Jun 28 14:44:09 EDT 2010


Author: epbernard
Date: 2010-06-28 14:44:09 -0400 (Mon, 28 Jun 2010)
New Revision: 19839

Added:
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/HibernateHelper.java
Modified:
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderContainedEntity.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoaderHelper.java
   search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java
   search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java
Log:
HSEARCH-549 Isolate Hibernate.initialize / Hibernate.getClass calls into HibernateHelper

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/backend/impl/BatchedQueueingProcessor.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -35,7 +35,6 @@
 
 import org.slf4j.Logger;
 
-import org.hibernate.Hibernate;
 import org.hibernate.annotations.common.AssertionFailure;
 import org.hibernate.search.Environment;
 import org.hibernate.search.spi.WorkerBuildContext;
@@ -57,6 +56,7 @@
 import org.hibernate.search.engine.DocumentBuilderContainedEntity;
 import org.hibernate.search.engine.DocumentBuilderIndexedEntity;
 import org.hibernate.search.engine.SearchFactoryImplementor;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.search.util.LoggerFactory;
 import org.hibernate.search.util.PluginLoader;
 import org.hibernate.util.StringHelper;
@@ -253,10 +253,9 @@
 	}
 
 	private <T> void addWorkToBuilderQueue(List<LuceneWork> luceneQueue, Work<T> work) {
-		@SuppressWarnings("unchecked")
 		Class<T> entityClass = work.getEntityClass() != null ?
 				work.getEntityClass() :
-				Hibernate.getClass( work.getEntity() );
+				HibernateHelper.getClass( work.getEntity() );
 		DocumentBuilderIndexedEntity<T> entityBuilder = searchFactoryImplementor.getDocumentBuilderIndexedEntity( entityClass );
 		if ( entityBuilder != null ) {
 			entityBuilder.addWorkToQueue(

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/batchindexing/EntityConsumerLuceneworkProducer.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -31,7 +31,6 @@
 
 import org.hibernate.CacheMode;
 import org.hibernate.FlushMode;
-import org.hibernate.Hibernate;
 import org.hibernate.LockOptions;
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
@@ -41,6 +40,7 @@
 import org.hibernate.search.bridge.TwoWayFieldBridge;
 import org.hibernate.search.engine.DocumentBuilderIndexedEntity;
 import org.hibernate.search.engine.SearchFactoryImplementor;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.search.util.LoggerFactory;
 import org.slf4j.Logger;
 
@@ -129,7 +129,7 @@
 	@SuppressWarnings("unchecked")
 	private void index( Object entity, Session session ) throws InterruptedException {
 		Serializable id = session.getIdentifier( entity );
-		Class clazz = Hibernate.getClass( entity );
+		Class<?> clazz = HibernateHelper.getClass( entity );
 		DocumentBuilderIndexedEntity docBuilder = documentBuilders.get( clazz );
 		TwoWayFieldBridge idBridge = docBuilder.getIdBridge();
 		String idInString = idBridge.objectToString( id );

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderContainedEntity.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderContainedEntity.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderContainedEntity.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -40,7 +40,6 @@
 import org.apache.lucene.search.Similarity;
 import org.slf4j.Logger;
 
-import org.hibernate.Hibernate;
 import org.hibernate.annotations.common.AssertionFailure;
 import org.hibernate.annotations.common.reflection.ReflectionManager;
 import org.hibernate.annotations.common.reflection.XAnnotatedElement;
@@ -67,6 +66,7 @@
 import org.hibernate.search.bridge.FieldBridge;
 import org.hibernate.search.bridge.LuceneOptions;
 import org.hibernate.search.impl.ConfigContext;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.search.util.LoggerFactory;
 import org.hibernate.search.util.PassThroughAnalyzer;
 import org.hibernate.search.util.ReflectionHelper;
@@ -703,8 +703,7 @@
 	}
 
 	private <T> void processSingleContainedInInstance(List<LuceneWork> queue, SearchFactoryImplementor searchFactoryImplementor, T value) {
-		@SuppressWarnings("unchecked")
-		Class<T> valueClass = Hibernate.getClass( value );
+		Class<T> valueClass = HibernateHelper.getClass( value );
 		DocumentBuilderIndexedEntity<T> builderIndexedEntity =
 				searchFactoryImplementor.getDocumentBuilderIndexedEntity( valueClass );
 

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/DocumentBuilderIndexedEntity.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -41,7 +41,6 @@
 import org.apache.lucene.index.Term;
 import org.slf4j.Logger;
 
-import org.hibernate.Hibernate;
 import org.hibernate.annotations.common.AssertionFailure;
 import org.hibernate.annotations.common.util.ReflectHelper;
 import org.hibernate.annotations.common.reflection.ReflectionManager;
@@ -71,6 +70,7 @@
 import org.hibernate.search.impl.ConfigContext;
 import org.hibernate.search.store.DirectoryProvider;
 import org.hibernate.search.store.IndexShardingStrategy;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.search.util.LoggerFactory;
 import org.hibernate.search.util.ReflectionHelper;
 
@@ -389,7 +389,7 @@
 		}
 
 		Document doc = new Document();
-		final Class<?> entityType = Hibernate.getClass( instance );
+		final Class<?> entityType = HibernateHelper.getClass( instance );
 		doc.setBoost( metadata.getClassBoost( instance ) );
 
 		// add the class name of the entity to the document

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoader.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -30,8 +30,8 @@
 
 import org.slf4j.Logger;
 
-import org.hibernate.Hibernate;
 import org.hibernate.Session;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.search.util.LoggerFactory;
 
 /**
@@ -71,7 +71,7 @@
 		for (EntityInfo entityInfo : entityInfos) {
 			try {
 				Object entity = session.load( entityInfo.clazz, entityInfo.id );
-				Hibernate.initialize( entity );
+				HibernateHelper.initialize( entity );
 				result.add( entity );
 			}
 			catch (RuntimeException e) {

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoaderHelper.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoaderHelper.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/engine/ObjectLoaderHelper.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -32,10 +32,10 @@
 import org.slf4j.Logger;
 
 import org.hibernate.Criteria;
-import org.hibernate.Hibernate;
 import org.hibernate.Session;
 import org.hibernate.criterion.Disjunction;
 import org.hibernate.criterion.Restrictions;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.search.util.LoggerFactory;
 
 /**
@@ -50,7 +50,7 @@
 		//be sure to get an initialized object but save from ONFE and ENFE
 		Object maybeProxy = session.load( entityInfo.clazz, entityInfo.id );
 		try {
-			Hibernate.initialize( maybeProxy );
+			HibernateHelper.initialize( maybeProxy );
 		}
 		catch (RuntimeException e) {
 			if ( LoaderHelper.isObjectNotFoundException( e ) ) {
@@ -99,7 +99,7 @@
 		List result = new ArrayList( entityInfos.length );
 		for (EntityInfo entityInfo : entityInfos) {
 			Object element = session.load( entityInfo.clazz, entityInfo.id );
-			if ( Hibernate.isInitialized( element ) ) {
+			if ( HibernateHelper.isInitialized( element ) ) {
 				//all existing elements should have been loaded by the query,
 				//the other ones are missing ones
 				result.add( element );

Modified: search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/impl/FullTextSessionImpl.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -37,7 +37,6 @@
 import org.hibernate.EntityMode;
 import org.hibernate.Filter;
 import org.hibernate.FlushMode;
-import org.hibernate.Hibernate;
 import org.hibernate.HibernateException;
 import org.hibernate.Interceptor;
 import org.hibernate.LockMode;
@@ -79,6 +78,7 @@
 import org.hibernate.search.engine.SearchFactoryImplementor;
 import org.hibernate.search.query.FullTextQueryImpl;
 import org.hibernate.search.util.ContextHelper;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.stat.SessionStatistics;
 import org.hibernate.type.Type;
 
@@ -173,7 +173,7 @@
 			throw new IllegalArgumentException( "Entity to index should not be null" );
 		}
 
-		Class<?> clazz = Hibernate.getClass( entity );
+		Class<?> clazz = HibernateHelper.getClass( entity );
 		//TODO cache that at the FTSession level
 		SearchFactoryImplementor searchFactoryImplementor = getSearchFactoryImplementor();
 		//not strictly necessary but a small optimization

Added: search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/HibernateHelper.java
===================================================================
--- search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/HibernateHelper.java	                        (rev 0)
+++ search/trunk/hibernate-search/src/main/java/org/hibernate/search/util/HibernateHelper.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -0,0 +1,28 @@
+package org.hibernate.search.util;
+
+import org.hibernate.Hibernate;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public final class HibernateHelper {
+	private HibernateHelper() {};
+
+	/**
+	 * Get the real class type.
+	 * In case of Hibernate proxies, return the entity type rather than the proxy's
+	 */
+	public static <T> Class<T> getClass(T entity) {
+		@SuppressWarnings("unchecked")
+		final Class<T> type = Hibernate.getClass( entity );
+		return type;
+	}
+
+	public static void initialize(Object entity) {
+		Hibernate.initialize( entity );
+	}
+
+	public static boolean isInitialized(Object entity) {
+		return Hibernate.isInitialized( entity );
+	}
+}

Modified: search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java
===================================================================
--- search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java	2010-06-28 13:03:24 UTC (rev 19838)
+++ search/trunk/hibernate-search/src/test/java/org/hibernate/search/test/query/LuceneQueryTest.java	2010-06-28 18:44:09 UTC (rev 19839)
@@ -30,13 +30,13 @@
 import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.search.Query;
 import org.hibernate.FetchMode;
-import org.hibernate.Hibernate;
 import org.hibernate.ScrollableResults;
 import org.hibernate.Transaction;
 import org.hibernate.search.FullTextQuery;
 import org.hibernate.search.FullTextSession;
 import org.hibernate.search.Search;
 import org.hibernate.search.test.SearchTestCase;
+import org.hibernate.search.util.HibernateHelper;
 import org.hibernate.stat.Statistics;
 
 
@@ -86,7 +86,7 @@
 		assertNotNull( result );
 		assertEquals( "Query with no class filter", 2, result.size() );
 		for (Object element : result) {
-			assertTrue( Hibernate.isInitialized( element ) );
+			assertTrue( HibernateHelper.isInitialized( element ) );
 			s.delete( element );
 		}
 		s.flush();
@@ -530,7 +530,7 @@
 		assertNotNull( result );
 		assertEquals( "Query with no class filter", 2, result.size() );
 		for (Object element : result) {
-			assertTrue( Hibernate.isInitialized( element ) );
+			assertTrue( HibernateHelper.isInitialized( element ) );
 			s.delete( element );
 		}
 		for (Object element : s.createQuery( "from java.lang.Object" ).list()) s.delete( element );
@@ -558,14 +558,14 @@
 		assertNotNull( result );
 		assertEquals( "Query with no explicit criteria", 1, result.size() );
 		book = (Book) result.get( 0 );
-		assertFalse( "Association should not be inintialized", Hibernate.isInitialized( book.getAuthors() ) );
+		assertFalse( "Association should not be inintialized", HibernateHelper.isInitialized( book.getAuthors() ) );
 
 		result = s.createFullTextQuery( query ).setCriteriaQuery(
 				s.createCriteria( Book.class ).setFetchMode( "authors", FetchMode.JOIN ) ).list();
 		assertNotNull( result );
 		assertEquals( "Query with explicit criteria", 1, result.size() );
 		book = (Book) result.get( 0 );
-		assertTrue( "Association should be inintialized", Hibernate.isInitialized( book.getAuthors() ) );
+		assertTrue( "Association should be inintialized", HibernateHelper.isInitialized( book.getAuthors() ) );
 		assertEquals( 1, book.getAuthors().size() );
 
 		//cleanup



More information about the hibernate-commits mailing list