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