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;
}
Show replies by date