[hibernate-commits] Hibernate SVN: r15065 - in search/trunk/src: java/org/hibernate/search/engine and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Aug 14 10:20:40 EDT 2008


Author: epbernard
Date: 2008-08-14 10:20:39 -0400 (Thu, 14 Aug 2008)
New Revision: 15065

Modified:
   search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java
   search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
   search/trunk/src/test/org/hibernate/search/test/id/providedId/JBossCachePerson.java
   search/trunk/src/test/org/hibernate/search/test/id/providedId/ProvidedIdTest.java
Log:
Apply Navin's work and fix ProvidedIdTest using native Lucene query

Modified: search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java	2008-08-14 14:03:09 UTC (rev 15064)
+++ search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java	2008-08-14 14:20:39 UTC (rev 15065)
@@ -234,4 +234,14 @@
 				throw new AssertionFailure( "Unknown Resolution: " + resolution );
 		}
 	}
+
+	public static TwoWayFieldBridge extractTwoWayType(ClassBridge classBridge) {
+		FieldBridge fb = extractType( classBridge );
+		if ( fb instanceof TwoWayFieldBridge ) {
+			return ( TwoWayFieldBridge ) fb;
+		}
+		else {
+			throw new SearchException( "ClassBridge passed in is not an instance of " + TwoWayFieldBridge.class.getSimpleName() );
+		}
+	}
 }

Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java	2008-08-14 14:03:09 UTC (rev 15064)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java	2008-08-14 14:20:39 UTC (rev 15065)
@@ -118,7 +118,7 @@
 			ProvidedId provided = clazz.getAnnotation( org.hibernate.search.annotations.ProvidedId.class );
 			if ( provided == null ) throw new SearchException( "No document id in: " + clazz.getName() );
 
-         idBridge = BridgeFactory.extractTwoWayType(provided.bridgeImpl());
+			idBridge = BridgeFactory.extractTwoWayType(provided.bridgeImpl());
 			idKeywordName = provided.name();
 		}
 		//if composite id, use of (a, b) in ((1,2)TwoWayString2FieldBridgeAdaptor, (3,4)) fails on most database

Modified: search/trunk/src/test/org/hibernate/search/test/id/providedId/JBossCachePerson.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/id/providedId/JBossCachePerson.java	2008-08-14 14:03:09 UTC (rev 15064)
+++ search/trunk/src/test/org/hibernate/search/test/id/providedId/JBossCachePerson.java	2008-08-14 14:20:39 UTC (rev 15065)
@@ -1,6 +1,7 @@
 package org.hibernate.search.test.id.providedId;
 
 import org.hibernate.search.annotations.*;
+import org.hibernate.search.bridge.builtin.LongBridge;
 
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -12,7 +13,7 @@
  @author Navin Surtani (<a href="mailto:nsurtani at redhat.com">nsurtani at redhat.com</a>)
  */
 @Entity
- at ProvidedId
+ at ProvidedId(bridgeImpl = @ClassBridge(impl = LongBridge.class))
 @Indexed
 public class JBossCachePerson implements Serializable
 {

Modified: search/trunk/src/test/org/hibernate/search/test/id/providedId/ProvidedIdTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/id/providedId/ProvidedIdTest.java	2008-08-14 14:03:09 UTC (rev 15064)
+++ search/trunk/src/test/org/hibernate/search/test/id/providedId/ProvidedIdTest.java	2008-08-14 14:20:39 UTC (rev 15065)
@@ -6,12 +6,15 @@
 import org.apache.lucene.queryParser.ParseException;
 import org.apache.lucene.queryParser.QueryParser;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Hits;
 
 import org.hibernate.Session;
 import org.hibernate.Transaction;
 import org.hibernate.search.FullTextQuery;
 import org.hibernate.search.FullTextSession;
 import org.hibernate.search.Search;
+import org.hibernate.search.store.DirectoryProvider;
 import org.hibernate.search.test.SearchTestCase;
 
 /**
@@ -25,7 +28,7 @@
 		};
 	}
 
-	public void testProvidedId() throws ParseException {
+	public void testProvidedId() throws Exception {
 
 		JBossCachePerson person1 = new JBossCachePerson();
 		person1.setName( "Big Goat" );
@@ -50,15 +53,18 @@
 		QueryParser parser = new QueryParser( "name", new StandardAnalyzer() );
 		Query luceneQuery = parser.parse( "Goat" );
 
-		FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, JBossCachePerson.class );
+		//we cannot use FTQuery because @ProvidedId does not provide the getter id and Hibernate Hsearch Query extension
+		//needs it. So we use plain Lucene 
 
-
-		List results = fullTextQuery.list();
-
+		//we know there is only one DP
+		DirectoryProvider provider = fullTextSession.getSearchFactory().getDirectoryProviders( JBossCachePerson.class )[0];
+		IndexSearcher searcher =  new IndexSearcher( provider.getDirectory() );
+		Hits hits = searcher.search( luceneQuery );
+		searcher.close();
 		transaction.commit();
 		session.close();
 
-		assertEquals( 2, results.size() );
+		assertEquals( 2, hits.length() );
 	}
 
 




More information about the hibernate-commits mailing list