[hibernate-commits] Hibernate SVN: r14001 - search/trunk/src/java/org/hibernate/search/jpa/impl.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Sep 6 14:44:30 EDT 2007


Author: epbernard
Date: 2007-09-06 14:44:30 -0400 (Thu, 06 Sep 2007)
New Revision: 14001

Modified:
   search/trunk/src/java/org/hibernate/search/jpa/impl/FullTextEntityManagerImpl.java
Log:
HSEARCH-116 workaround a JBoss AS bug

Modified: search/trunk/src/java/org/hibernate/search/jpa/impl/FullTextEntityManagerImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/jpa/impl/FullTextEntityManagerImpl.java	2007-09-04 22:34:13 UTC (rev 14000)
+++ search/trunk/src/java/org/hibernate/search/jpa/impl/FullTextEntityManagerImpl.java	2007-09-06 18:44:30 UTC (rev 14001)
@@ -25,49 +25,56 @@
 
 	public FullTextEntityManagerImpl(EntityManager em) {
 		this.em = em;
-		Object delegate = em.getDelegate();
-		if ( delegate == null ) {
-			throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager (no delegate)");
-		}
-		else if ( Session.class.isAssignableFrom( delegate.getClass() ) ) {
-			ftSession = Search.createFullTextSession( (Session) delegate );
-		}
-		else if ( EntityManager.class.isAssignableFrom( delegate.getClass() ) ) {
-			//Some app servers wrap the EM twice
-			delegate = ( (EntityManager) delegate).getDelegate();
+	}
+
+	private FullTextSession getFullTextSession() {
+		if ( ftSession == null ) {
+			Object delegate = em.getDelegate();
 			if ( delegate == null ) {
 				throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager (no delegate)");
 			}
 			else if ( Session.class.isAssignableFrom( delegate.getClass() ) ) {
 				ftSession = Search.createFullTextSession( (Session) delegate );
 			}
+			else if ( EntityManager.class.isAssignableFrom( delegate.getClass() ) ) {
+				//Some app servers wrap the EM twice
+				delegate = ( (EntityManager) delegate).getDelegate();
+				if ( delegate == null ) {
+					throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager (no delegate)");
+				}
+				else if ( Session.class.isAssignableFrom( delegate.getClass() ) ) {
+					ftSession = Search.createFullTextSession( (Session) delegate );
+				}
+				else {
+					throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager: " + delegate.getClass() );
+				}
+			}
 			else {
 				throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager: " + delegate.getClass() );
 			}
 		}
-		else {
-			throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager: " + delegate.getClass() );
-		}
+		return ftSession;
 	}
 
 	public FullTextQuery createFullTextQuery(org.apache.lucene.search.Query luceneQuery, Class... entities) {
+		FullTextSession ftSession = getFullTextSession();
 		return new FullTextQueryImpl( ftSession.createFullTextQuery( luceneQuery, entities ), ftSession );
 	}
 
 	public void index(Object entity) {
-		ftSession.index( entity );
+		getFullTextSession().index( entity );
 	}
 
 	public SearchFactory getSearchFactory() {
-		return ftSession.getSearchFactory();
+		return getFullTextSession().getSearchFactory();
 	}
 
 	public void purge(Class entityType, Serializable id) {
-		ftSession.purge( entityType, id );
+		getFullTextSession().purge( entityType, id );
 	}
 
 	public void purgeAll(Class entityType) {
-		ftSession.purgeAll( entityType );
+		getFullTextSession().purgeAll( entityType );
 	}
 
 




More information about the hibernate-commits mailing list