From hibernate-commits at lists.jboss.org Thu Aug 14 02:17:05 2008 Content-Type: multipart/mixed; boundary="===============5435077578668394138==" MIME-Version: 1.0 From: hibernate-commits at lists.jboss.org To: hibernate-commits at lists.jboss.org Subject: [hibernate-commits] Hibernate SVN: r15058 - in search/trunk/src: java/org/hibernate/search/bridge and 2 other directories. Date: Thu, 14 Aug 2008 02:17:05 -0400 Message-ID: --===============5435077578668394138== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Author: navssurtani Date: 2008-08-14 02:17:05 -0400 (Thu, 14 Aug 2008) New Revision: 15058 Modified: search/trunk/src/java/org/hibernate/search/annotations/Indexed.java search/trunk/src/java/org/hibernate/search/annotations/ProvidedId.java 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/SearchTestCase.java Log: navssurtani finished to-do in DocumentBuilder Modified: search/trunk/src/java/org/hibernate/search/annotations/Indexed.ja= va =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- search/trunk/src/java/org/hibernate/search/annotations/Indexed.java 200= 8-08-13 18:17:51 UTC (rev 15057) +++ search/trunk/src/java/org/hibernate/search/annotations/Indexed.java 200= 8-08-14 06:17:05 UTC (rev 15058) @@ -1,11 +1,7 @@ //$Id$ package org.hibernate.search.annotations; = -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; +import java.lang.annotation.*; = @Retention( RetentionPolicy.RUNTIME ) @Target( ElementType.TYPE ) Modified: search/trunk/src/java/org/hibernate/search/annotations/ProvidedId= .java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- search/trunk/src/java/org/hibernate/search/annotations/ProvidedId.java = 2008-08-13 18:17:51 UTC (rev 15057) +++ search/trunk/src/java/org/hibernate/search/annotations/ProvidedId.java = 2008-08-14 06:17:05 UTC (rev 15058) @@ -8,6 +8,8 @@ import java.lang.annotation.Target; = import org.hibernate.search.bridge.StringBridge; +import org.hibernate.search.bridge.TwoWayFieldBridge; +import org.hibernate.search.bridge.TwoWayString2FieldBridgeAdaptor; = /** * Objects whose identifier is provided externally and not part of the obj= ect state @@ -17,12 +19,12 @@ * * @author Navin Surtani (nsurtan= i(a)redhat.com) */ -(a)Retention( RetentionPolicy.RUNTIME ) -(a)Target( ElementType.TYPE ) +(a)Retention(RetentionPolicy.RUNTIME) +(a)Target(ElementType.TYPE) @Documented public @interface ProvidedId { = - String name() default "providedId"; + String name() default "providedId"; = - Class bridge() default StringBridge.class; + ClassBridge bridgeImpl() default @ClassBridge(impl =3D org.hibernate.se= arch.bridge.builtin.StringBridge.class); } Modified: search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.j= ava =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java 20= 08-08-13 18:17:51 UTC (rev 15057) +++ search/trunk/src/java/org/hibernate/search/bridge/BridgeFactory.java 20= 08-08-14 06:17:05 UTC (rev 15058) @@ -35,203 +35,213 @@ = /** * This factory is responsible for creating and initializing build-in and = custom FieldBridges. - * = + * * @author Emmanuel Bernard * @author John Griffin */ public class BridgeFactory { - private static Map builtInBridges =3D new HashMap(); + private static Map builtInBridges =3D new HashMap<= String, FieldBridge>(); = - private BridgeFactory() { - } + private BridgeFactory() { + } = - public static final TwoWayFieldBridge DOUBLE =3D new TwoWayString2FieldBr= idgeAdaptor( new DoubleBridge() ); + public static final TwoWayFieldBridge DOUBLE =3D new TwoWayString2Field= BridgeAdaptor(new DoubleBridge()); = - public static final TwoWayFieldBridge FLOAT =3D new TwoWayString2FieldBri= dgeAdaptor( new FloatBridge() ); + public static final TwoWayFieldBridge FLOAT =3D new TwoWayString2FieldB= ridgeAdaptor(new FloatBridge()); = - public static final TwoWayFieldBridge SHORT =3D new TwoWayString2FieldBri= dgeAdaptor( new ShortBridge() ); + public static final TwoWayFieldBridge SHORT =3D new TwoWayString2FieldB= ridgeAdaptor(new ShortBridge()); = - public static final TwoWayFieldBridge INTEGER =3D new TwoWayString2FieldB= ridgeAdaptor( new IntegerBridge() ); + public static final TwoWayFieldBridge INTEGER =3D new TwoWayString2Fiel= dBridgeAdaptor(new IntegerBridge()); = - public static final TwoWayFieldBridge LONG =3D new TwoWayString2FieldBrid= geAdaptor( new LongBridge() ); + public static final TwoWayFieldBridge LONG =3D new TwoWayString2FieldBr= idgeAdaptor(new LongBridge()); = - public static final TwoWayFieldBridge BIG_INTEGER =3D new TwoWayString2Fi= eldBridgeAdaptor( new BigIntegerBridge() ); + public static final TwoWayFieldBridge BIG_INTEGER =3D new TwoWayString2= FieldBridgeAdaptor(new BigIntegerBridge()); = - public static final TwoWayFieldBridge BIG_DECIMAL =3D new TwoWayString2Fi= eldBridgeAdaptor( new BigDecimalBridge() ); + public static final TwoWayFieldBridge BIG_DECIMAL =3D new TwoWayString2= FieldBridgeAdaptor(new BigDecimalBridge()); = - public static final TwoWayFieldBridge STRING =3D new TwoWayString2FieldBr= idgeAdaptor( new StringBridge() ); + public static final TwoWayFieldBridge STRING =3D new TwoWayString2Field= BridgeAdaptor(new StringBridge()); = - public static final TwoWayFieldBridge BOOLEAN =3D new TwoWayString2FieldB= ridgeAdaptor( new BooleanBridge() ); + public static final TwoWayFieldBridge BOOLEAN =3D new TwoWayString2Fiel= dBridgeAdaptor(new BooleanBridge()); = - public static final TwoWayFieldBridge CLAZZ =3D new TwoWayString2FieldBri= dgeAdaptor( new org.hibernate.search.bridge.builtin.ClassBridge() ); + public static final TwoWayFieldBridge CLAZZ =3D new TwoWayString2FieldB= ridgeAdaptor(new org.hibernate.search.bridge.builtin.ClassBridge()); = - public static final TwoWayFieldBridge Url =3D new TwoWayString2FieldBridg= eAdaptor( new UrlBridge() ); + public static final TwoWayFieldBridge Url =3D new TwoWayString2FieldBri= dgeAdaptor(new UrlBridge()); = - public static final TwoWayFieldBridge Uri =3D new TwoWayString2FieldBridg= eAdaptor( new UriBridge() ); + public static final TwoWayFieldBridge Uri =3D new TwoWayString2FieldBri= dgeAdaptor(new UriBridge()); = - public static final FieldBridge DATE_YEAR =3D new TwoWayString2FieldBridg= eAdaptor( DateBridge.DATE_YEAR ); - public static final FieldBridge DATE_MONTH =3D new TwoWayString2FieldBrid= geAdaptor( DateBridge.DATE_MONTH ); - public static final FieldBridge DATE_DAY =3D new TwoWayString2FieldBridge= Adaptor( DateBridge.DATE_DAY ); - public static final FieldBridge DATE_HOUR =3D new TwoWayString2FieldBridg= eAdaptor( DateBridge.DATE_HOUR ); - public static final FieldBridge DATE_MINUTE =3D new TwoWayString2FieldBri= dgeAdaptor( DateBridge.DATE_MINUTE ); - public static final FieldBridge DATE_SECOND =3D new TwoWayString2FieldBri= dgeAdaptor( DateBridge.DATE_SECOND ); - public static final TwoWayFieldBridge DATE_MILLISECOND =3D - new TwoWayString2FieldBridgeAdaptor( DateBridge.DATE_MILLISECOND ); + public static final FieldBridge DATE_YEAR =3D new TwoWayString2FieldBri= dgeAdaptor(DateBridge.DATE_YEAR); + public static final FieldBridge DATE_MONTH =3D new TwoWayString2FieldBr= idgeAdaptor(DateBridge.DATE_MONTH); + public static final FieldBridge DATE_DAY =3D new TwoWayString2FieldBrid= geAdaptor(DateBridge.DATE_DAY); + public static final FieldBridge DATE_HOUR =3D new TwoWayString2FieldBri= dgeAdaptor(DateBridge.DATE_HOUR); + public static final FieldBridge DATE_MINUTE =3D new TwoWayString2FieldB= ridgeAdaptor(DateBridge.DATE_MINUTE); + public static final FieldBridge DATE_SECOND =3D new TwoWayString2FieldB= ridgeAdaptor(DateBridge.DATE_SECOND); + public static final TwoWayFieldBridge DATE_MILLISECOND =3D + new TwoWayString2FieldBridgeAdaptor(DateBridge.DATE_MILLISECOND= ); = - static { - builtInBridges.put( Double.class.getName(), DOUBLE ); - builtInBridges.put( double.class.getName(), DOUBLE ); - builtInBridges.put( Float.class.getName(), FLOAT ); - builtInBridges.put( float.class.getName(), FLOAT ); - builtInBridges.put( Short.class.getName(), SHORT ); - builtInBridges.put( short.class.getName(), SHORT ); - builtInBridges.put( Integer.class.getName(), INTEGER ); - builtInBridges.put( int.class.getName(), INTEGER ); - builtInBridges.put( Long.class.getName(), LONG ); - builtInBridges.put( long.class.getName(), LONG ); - builtInBridges.put( BigInteger.class.getName(), BIG_INTEGER ); - builtInBridges.put( BigDecimal.class.getName(), BIG_DECIMAL ); - builtInBridges.put( String.class.getName(), STRING ); - builtInBridges.put( Boolean.class.getName(), BOOLEAN ); - builtInBridges.put( boolean.class.getName(), BOOLEAN ); - builtInBridges.put( Class.class.getName(), CLAZZ ); - builtInBridges.put( URL.class.getName(), Url ); - builtInBridges.put( URI.class.getName(), Uri ); + static { + builtInBridges.put(Double.class.getName(), DOUBLE); + builtInBridges.put(double.class.getName(), DOUBLE); + builtInBridges.put(Float.class.getName(), FLOAT); + builtInBridges.put(float.class.getName(), FLOAT); + builtInBridges.put(Short.class.getName(), SHORT); + builtInBridges.put(short.class.getName(), SHORT); + builtInBridges.put(Integer.class.getName(), INTEGER); + builtInBridges.put(int.class.getName(), INTEGER); + builtInBridges.put(Long.class.getName(), LONG); + builtInBridges.put(long.class.getName(), LONG); + builtInBridges.put(BigInteger.class.getName(), BIG_INTEGER); + builtInBridges.put(BigDecimal.class.getName(), BIG_DECIMAL); + builtInBridges.put(String.class.getName(), STRING); + builtInBridges.put(Boolean.class.getName(), BOOLEAN); + builtInBridges.put(boolean.class.getName(), BOOLEAN); + builtInBridges.put(Class.class.getName(), CLAZZ); + builtInBridges.put(URL.class.getName(), Url); + builtInBridges.put(URI.class.getName(), Uri); = - builtInBridges.put( Date.class.getName(), DATE_MILLISECOND ); - } - = - /** - * This extracts and instantiates the implementation class from a ClassBr= idge - * annotation. - * - * @param cb the ClassBridge - * @return FieldBridge - */ - public static FieldBridge extractType(ClassBridge cb) - { - FieldBridge bridge =3D null; + builtInBridges.put(Date.class.getName(), DATE_MILLISECOND); + } = - if ( cb !=3D null ) { - Class impl =3D cb.impl(); - //TODO better error information ( see guessType() ) - if (impl !=3D null) { - try { - Object instance =3D impl.newInstance(); - if ( FieldBridge.class.isAssignableFrom( impl ) ) { - bridge =3D (FieldBridge) instance; - } - else if ( org.hibernate.search.bridge.TwoWayStringBridge.class.isAssi= gnableFrom( impl ) ) { - bridge =3D new TwoWayString2FieldBridgeAdaptor( - (org.hibernate.search.bridge.TwoWayStringBridge) instance ); - } - else if ( org.hibernate.search.bridge.StringBridge.class.isAssignable= From( impl ) ) { - bridge =3D new String2FieldBridgeAdaptor( (org.hibernate.search.brid= ge.StringBridge) instance ); - } - else { - throw new SearchException("@ClassBridge implementation implements no= ne of the field bridge interfaces: " - + impl ); - } - if ( cb.params().length > 0 && ParameterizedBridge.class.isAssignable= From( impl ) ) { - Map params =3D new HashMap( cb.params().length ); - for ( Parameter param : cb.params() ) { - params.put( param.name(), param.value() ); - } - ( (ParameterizedBridge) instance ).setParameterValues( params ); - } - } - catch (Exception e) { - throw new HibernateException( "Unable to instantiate FieldBridge for = " + ClassBridge.class.getName(), e ); - } - } - } - if ( bridge =3D=3D null ) throw new SearchException( "Unable to guess Fi= eldBridge for " + ClassBridge.class.getName() ); + /** + * This extracts and instantiates the implementation class from a Class= Bridge + * annotation. + * + * @param cb the ClassBridge + * @return FieldBridge + */ + public static FieldBridge extractType(ClassBridge cb) { + FieldBridge bridge =3D null; = - return bridge; - } + if (cb !=3D null) { + Class impl =3D cb.impl(); + //TODO better error information ( see guessType() ) + if (impl !=3D null) { + try { + Object instance =3D impl.newInstance(); + if (FieldBridge.class.isAssignableFrom(impl)) { + bridge =3D (FieldBridge) instance; + } + else if (org.hibernate.search.bridge.TwoWayStringBridge.cla= ss.isAssignableFrom(impl)) { + bridge =3D new TwoWayString2FieldBridgeAdaptor( + (org.hibernate.search.bridge.TwoWayStringBridge)= instance); + } + else if (org.hibernate.search.bridge.StringBridge.class.isA= ssignableFrom(impl)) { + bridge =3D new String2FieldBridgeAdaptor((org.hibernate.= search.bridge.StringBridge) instance); + } + else { + throw new SearchException("@ClassBridge implementation i= mplements none of the field bridge interfaces: " + + impl); + } + if (cb.params().length > 0 && ParameterizedBridge.class.isA= ssignableFrom(impl)) { + Map params =3D new HashMap(cb.params().length); + for (Parameter param : cb.params()) { + params.put(param.name(), param.value()); + } + ((ParameterizedBridge) instance).setParameterValues(para= ms); + } + } + catch (Exception e) { + throw new HibernateException("Unable to instantiate FieldBr= idge for " + ClassBridge.class.getName(), e); + } + } + } + if (bridge =3D=3D null) throw new SearchException("Unable to guess F= ieldBridge for " + ClassBridge.class.getName()); = - public static FieldBridge guessType(Field field, XMember member, Reflecti= onManager reflectionManager) { - FieldBridge bridge; - org.hibernate.search.annotations.FieldBridge bridgeAnn; - //@Field bridge has priority over @FieldBridge - if ( field !=3D null && void.class !=3D field.bridge().impl() ) { - bridgeAnn =3D field.bridge(); - } - else { - bridgeAnn =3D member.getAnnotation( org.hibernate.search.annotations.Fi= eldBridge.class ); - } - if ( bridgeAnn !=3D null ) { - Class impl =3D bridgeAnn.impl(); - if (impl =3D=3D void.class) - throw new SearchException("@FieldBridge with no implementation class d= efined in: " + member.getName() ); - try { - Object instance =3D impl.newInstance(); - if ( FieldBridge.class.isAssignableFrom( impl ) ) { - bridge =3D (FieldBridge) instance; - } - else if ( org.hibernate.search.bridge.TwoWayStringBridge.class.isAssig= nableFrom( impl ) ) { - bridge =3D new TwoWayString2FieldBridgeAdaptor( - (org.hibernate.search.bridge.TwoWayStringBridge) instance ); - } - else if ( org.hibernate.search.bridge.StringBridge.class.isAssignableF= rom( impl ) ) { - bridge =3D new String2FieldBridgeAdaptor( (org.hibernate.search.bridg= e.StringBridge) instance ); - } - else { - throw new SearchException("@FieldBridge implementation implements non= e of the field bridge interfaces: " - + impl + " in " + member.getName() ); - } - if ( bridgeAnn.params().length > 0 && ParameterizedBridge.class.isAssi= gnableFrom( impl ) ) { - Map params =3D new HashMap( bridgeAnn.params().length ); - for ( Parameter param : bridgeAnn.params() ) { - params.put( param.name(), param.value() ); - } - ( (ParameterizedBridge) instance ).setParameterValues( params ); - } + return bridge; + } = - } - catch (Exception e) { - //TODO add classname - throw new HibernateException( "Unable to instanciate FieldBridge for "= + member.getName(), e ); - } - } - else if ( member.isAnnotationPresent( org.hibernate.search.annotations.D= ateBridge.class ) ) { - Resolution resolution =3D - member.getAnnotation( org.hibernate.search.annotations.DateBridge.cla= ss ).resolution(); - bridge =3D getDateField( resolution ); - } - else { - //find in built-ins - XClass returnType =3D member.getType(); - bridge =3D builtInBridges.get( returnType.getName() ); - if ( bridge =3D=3D null && returnType.isEnum() ) { - bridge =3D new TwoWayString2FieldBridgeAdaptor( - new EnumBridge( (Class) reflectionManager.toClass( r= eturnType ) ) - ); - } - } - //TODO add classname - if ( bridge =3D=3D null ) throw new SearchException( "Unable to guess Fi= eldBridge for " + member.getName() ); - return bridge; - } + public static TwoWayFieldBridge extractTwoWayType(ClassBridge cb) { + FieldBridge fb =3D extractType(cb); + if (fb instanceof TwoWayFieldBridge) { + return (TwoWayFieldBridge) fb; + } + else { + throw new HibernateException("ClassBridge passed in is not an ins= tance of " + TwoWayFieldBridge.class.getSimpleName()); + } + } = - public static FieldBridge getDateField(Resolution resolution) { - switch (resolution) { - case YEAR: - return DATE_YEAR; - case MONTH: - return DATE_MONTH; - case DAY: - return DATE_DAY; - case HOUR: - return DATE_HOUR; - case MINUTE: - return DATE_MINUTE; - case SECOND: - return DATE_SECOND; - case MILLISECOND: - return DATE_MILLISECOND; - default: - throw new AssertionFailure( "Unknown Resolution: " + resolution ); - } - } + public static FieldBridge guessType(Field field, XMember member, Reflec= tionManager reflectionManager) { + FieldBridge bridge; + org.hibernate.search.annotations.FieldBridge bridgeAnn; + //@Field bridge has priority over @FieldBridge + if (field !=3D null && void.class !=3D field.bridge().impl()) { + bridgeAnn =3D field.bridge(); + } + else { + bridgeAnn =3D member.getAnnotation(org.hibernate.search.annotatio= ns.FieldBridge.class); + } + if (bridgeAnn !=3D null) { + Class impl =3D bridgeAnn.impl(); + if (impl =3D=3D void.class) { + throw new SearchException("@FieldBridge with no implementation= class defined in: " + member.getName()); + } + try { + Object instance =3D impl.newInstance(); + if (FieldBridge.class.isAssignableFrom(impl)) { + bridge =3D (FieldBridge) instance; + } + else if (org.hibernate.search.bridge.TwoWayStringBridge.class.= isAssignableFrom(impl)) { + bridge =3D new TwoWayString2FieldBridgeAdaptor( + (org.hibernate.search.bridge.TwoWayStringBridge) in= stance); + } + else if (org.hibernate.search.bridge.StringBridge.class.isAssi= gnableFrom(impl)) { + bridge =3D new String2FieldBridgeAdaptor((org.hibernate.sea= rch.bridge.StringBridge) instance); + } + else { + throw new SearchException("@FieldBridge implementation impl= ements none of the field bridge interfaces: " + + impl + " in " + member.getName()); + } + if (bridgeAnn.params().length > 0 && ParameterizedBridge.class= .isAssignableFrom(impl)) { + Map params =3D new HashMap(bridgeAnn.params().length); + for (Parameter param : bridgeAnn.params()) { + params.put(param.name(), param.value()); + } + ((ParameterizedBridge) instance).setParameterValues(params); + } + + } + catch (Exception e) { + //TODO add classname + throw new HibernateException("Unable to instanciate FieldBridg= e for " + member.getName(), e); + } + } + else if (member.isAnnotationPresent(org.hibernate.search.annotations= .DateBridge.class)) { + Resolution resolution =3D + member.getAnnotation(org.hibernate.search.annotations.Dat= eBridge.class).resolution(); + bridge =3D getDateField(resolution); + } + else { + //find in built-ins + XClass returnType =3D member.getType(); + bridge =3D builtInBridges.get(returnType.getName()); + if (bridge =3D=3D null && returnType.isEnum()) { + bridge =3D new TwoWayString2FieldBridgeAdaptor( + new EnumBridge((Class) reflectionManag= er.toClass(returnType)) + ); + } + } + //TODO add classname + if (bridge =3D=3D null) throw new SearchException("Unable to guess F= ieldBridge for " + member.getName()); + return bridge; + } + + public static FieldBridge getDateField(Resolution resolution) { + switch (resolution) { + case YEAR: + return DATE_YEAR; + case MONTH: + return DATE_MONTH; + case DAY: + return DATE_DAY; + case HOUR: + return DATE_HOUR; + case MINUTE: + return DATE_MINUTE; + case SECOND: + return DATE_SECOND; + case MILLISECOND: + return DATE_MILLISECOND; + default: + throw new AssertionFailure("Unknown Resolution: " + resolution= ); + } + } } Modified: search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder= .java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java = 2008-08-13 18:17:51 UTC (rev 15057) +++ search/trunk/src/java/org/hibernate/search/engine/DocumentBuilder.java = 2008-08-14 06:17:05 UTC (rev 15058) @@ -118,22 +118,14 @@ ProvidedId provided =3D clazz.getAnnotation( org.hibernate.search.annot= ations.ProvidedId.class ); if ( provided =3D=3D null ) throw new SearchException( "No document id = in: " + clazz.getName() ); = - //TODO navssurtani use something similar to BridgeFactory.extractType(C= lassBridge) - idBridge =3D getProvidedIdBridge(); + idBridge =3D BridgeFactory.extractTwoWayType(provided.bridgeImpl(= )); idKeywordName =3D provided.name(); - - } //if composite id, use of (a, b) in ((1,2)TwoWayString2FieldBridgeAdapto= r, (3,4)) fails on most database //a TwoWayString2FieldBridgeAdaptor is never a composite id safeFromTupleId =3D TwoWayString2FieldBridgeAdaptor.class.isAssignableFr= om( idBridge.getClass() ); } = - private TwoWayFieldBridge getProvidedIdBridge() { - return new TwoWayString2FieldBridgeAdaptor( new StringBridge() ); - } - - private Analyzer getAnalyzer(XAnnotatedElement annotatedElement, InitCont= ext context) { org.hibernate.search.annotations.Analyzer analyzerAnn =3D annotatedElement.getAnnotation( org.hibernate.search.annotations.Analy= zer.class ); Modified: search/trunk/src/test/org/hibernate/search/test/SearchTestCase.ja= va =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- search/trunk/src/test/org/hibernate/search/test/SearchTestCase.java 200= 8-08-13 18:17:51 UTC (rev 15057) +++ search/trunk/src/test/org/hibernate/search/test/SearchTestCase.java 200= 8-08-14 06:17:05 UTC (rev 15058) @@ -36,7 +36,7 @@ } = protected void setUp() throws Exception { - //super.setUp(); //we need a fresh session factory each time for index s= et up +// super.setUp(); //we need a fresh session factory each time for index s= et up buildSessionFactory( getMappings(), getAnnotatedPackages(), getXmlFiles(= ) ); } = --===============5435077578668394138==--