[hibernate-commits] Hibernate SVN: r14283 - 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
Wed Jan 16 08:24:08 EST 2008


Author: epbernard
Date: 2008-01-16 08:24:08 -0500 (Wed, 16 Jan 2008)
New Revision: 14283

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/bridge/BridgeTest.java
   search/trunk/src/test/org/hibernate/search/test/bridge/Cloud.java
Log:
HSEARCH-149 EnumType failed on string to object

Modified: search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java	2008-01-16 01:02:22 UTC (rev 14282)
+++ search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java	2008-01-16 13:24:08 UTC (rev 14283)
@@ -28,6 +28,7 @@
 import org.hibernate.search.util.BinderHelper;
 import org.hibernate.annotations.common.reflection.XClass;
 import org.hibernate.annotations.common.reflection.XMember;
+import org.hibernate.annotations.common.reflection.ReflectionManager;
 
 /**
  * @author Emmanuel Bernard
@@ -124,7 +125,7 @@
 		return bridge;
 	}
 
-	public static FieldBridge guessType(Field field, XMember member) {
+	public static FieldBridge guessType(Field field, XMember member, ReflectionManager reflectionManager) {
 		FieldBridge bridge = null;
 		org.hibernate.search.annotations.FieldBridge bridgeAnn;
 		//@Field bridge has priority over @FieldBridge
@@ -172,7 +173,7 @@
 			bridge = builtInBridges.get( returnType.getName() );
 			if ( bridge == null && returnType.isEnum() ) {
 				bridge = new TwoWayString2FieldBridgeAdaptor(
-						new EnumBridge( (Class<? extends Enum>) returnType.getClass() )
+						new EnumBridge( (Class<? extends Enum>) reflectionManager.toClass( returnType ) )
 				);
 			}
 		}

Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java	2008-01-16 01:02:22 UTC (rev 14282)
+++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java	2008-01-16 13:24:08 UTC (rev 14283)
@@ -184,7 +184,7 @@
 							+ idKeywordName + " and " + BinderHelper.getAttributeName( member, documentIdAnn.name() ) );
 				}
 				idKeywordName = prefix + BinderHelper.getAttributeName( member, documentIdAnn.name() );
-				FieldBridge fieldBridge = BridgeFactory.guessType( null, member );
+				FieldBridge fieldBridge = BridgeFactory.guessType( null, member, reflectionManager );
 				if ( fieldBridge instanceof TwoWayFieldBridge ) {
 					idBridge = (TwoWayFieldBridge) fieldBridge;
 				}
@@ -204,7 +204,7 @@
 				propertiesMetadata.fieldNames.add( fieldName );
 				propertiesMetadata.fieldStore.add( getStore( Store.YES ) );
 				propertiesMetadata.fieldIndex.add( getIndex( Index.UN_TOKENIZED ) );
-				propertiesMetadata.fieldBridges.add( BridgeFactory.guessType( null, member ) );
+				propertiesMetadata.fieldBridges.add( BridgeFactory.guessType( null, member, reflectionManager ) );
 				// Field > property > entity analyzer
 				Analyzer analyzer = null; //no field analyzer
 				if ( analyzer == null ) analyzer = getAnalyzer( member );
@@ -322,7 +322,7 @@
 		propertiesMetadata.fieldNames.add( fieldName );
 		propertiesMetadata.fieldStore.add( getStore( fieldAnn.store() ) );
 		propertiesMetadata.fieldIndex.add( getIndex( fieldAnn.index() ) );
-		propertiesMetadata.fieldBridges.add( BridgeFactory.guessType( fieldAnn, member ) );
+		propertiesMetadata.fieldBridges.add( BridgeFactory.guessType( fieldAnn, member, reflectionManager ) );
 		// Field > property > entity analyzer
 		Analyzer analyzer = getAnalyzer( fieldAnn.analyzer() );
 		if ( analyzer == null ) analyzer = getAnalyzer( member );

Modified: search/trunk/src/test/org/hibernate/search/test/bridge/BridgeTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/bridge/BridgeTest.java	2008-01-16 01:02:22 UTC (rev 14282)
+++ search/trunk/src/test/org/hibernate/search/test/bridge/BridgeTest.java	2008-01-16 13:24:08 UTC (rev 14283)
@@ -59,7 +59,11 @@
         result = session.createFullTextQuery(query).list();
         assertEquals( "null elements should not be stored", 0, result.size() ); //the query is dumb because restrictive
 
-        s.delete( s.get( Cloud.class, cloud.getId() ) );
+		query = parser.parse("type:dog");
+        result = session.createFullTextQuery(query).setProjection( "type" ).list();
+        assertEquals( "Enum projection works", 1, result.size() ); //the query is dumb because restrictive
+
+		s.delete( s.get( Cloud.class, cloud.getId() ) );
         tx.commit();
         s.close();
 

Modified: search/trunk/src/test/org/hibernate/search/test/bridge/Cloud.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/bridge/Cloud.java	2008-01-16 01:02:22 UTC (rev 14282)
+++ search/trunk/src/test/org/hibernate/search/test/bridge/Cloud.java	2008-01-16 13:24:08 UTC (rev 14283)
@@ -236,7 +236,7 @@
         this.dateMillisecond = dateMillisecond;
     }
 
-	@Field(index = Index.TOKENIZED )
+	@Field(index = Index.TOKENIZED, store = Store.YES)
 	public CloudType getType() {
 		return type;
 	}




More information about the hibernate-commits mailing list