From: <hib...@li...> - 2006-07-02 01:41:48
|
Author: epbernard Date: 2006-07-01 21:41:42 -0400 (Sat, 01 Jul 2006) New Revision: 10078 Added: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/RAMDirectoryProvider.java Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/DirectoryProviderFactory.java trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/FSDirectoryProvider.java Log: ANN-386 add support for RAMProvider fix equals and hashCode methods for *DirectoryProvider minor generics enhancements Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/DirectoryProviderFactory.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/DirectoryProviderFactory.java 2006-07-01 17:18:12 UTC (rev 10077) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/DirectoryProviderFactory.java 2006-07-02 01:41:42 UTC (rev 10078) @@ -30,14 +30,14 @@ * @author Sylvain Vieujot */ public class DirectoryProviderFactory { - public List<DirectoryProvider> providers = new ArrayList<DirectoryProvider>(); + public List<DirectoryProvider<?>> providers = new ArrayList<DirectoryProvider<?>>(); private static String LUCENE_PREFIX = "hibernate.lucene."; private static String LUCENE_DEFAULT = LUCENE_PREFIX + "default."; private static String DEFAULT_DIRECTORY_PROVIDER = FSDirectoryProvider.class.getName(); - public DirectoryProvider createDirectoryProvider(Class<?> entity, Configuration cfg) { + public DirectoryProvider<?> createDirectoryProvider(Class<?> entity, Configuration cfg) { //get properties Properties indexProps = getDirectoryProperties( cfg, entity ); @@ -46,7 +46,7 @@ if ( StringHelper.isEmpty( className ) ) { className = DEFAULT_DIRECTORY_PROVIDER; } - DirectoryProvider provider = null; + DirectoryProvider<?> provider = null; try { Class<DirectoryProvider> directoryClass = ReflectHelper.classForName( className, DirectoryProviderFactory.class @@ -54,7 +54,7 @@ provider = directoryClass.newInstance(); } catch (Exception e) { - throw new HibernateException( "Unable to instanciate directory provider: " + className ); + throw new HibernateException( "Unable to instanciate directory provider: " + className, e ); } provider.initialize( entity, cfg, indexProps ); int index = providers.indexOf( provider ); Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/FSDirectoryProvider.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/FSDirectoryProvider.java 2006-07-01 17:18:12 UTC (rev 10077) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/FSDirectoryProvider.java 2006-07-02 01:41:42 UTC (rev 10078) @@ -8,10 +8,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.lucene.store.Directory; +import org.apache.lucene.analysis.standard.StandardAnalyzer; +import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.FSDirectory; -import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; @@ -23,11 +22,12 @@ * @author Emmanuel Bernard * @author Sylvain Vieujot */ -public class FSDirectoryProvider implements DirectoryProvider { +public class FSDirectoryProvider implements DirectoryProvider<FSDirectory> { private FSDirectory directory; private static Log log = LogFactory.getLog( FSDirectoryProvider.class ); + private String indexName; - public void initialize(Class entity, Configuration cfg, Properties properties) { + public void initialize(Class entity, @SuppressWarnings("unused") Configuration cfg, Properties properties) { String indexBase = properties.getProperty( "indexBase", "." ); File indexDir = new File( indexBase ); @@ -45,7 +45,8 @@ try { boolean create = !file.exists(); - directory = FSDirectory.getDirectory( file.getCanonicalPath(), create ); + indexName = file.getCanonicalPath(); + directory = FSDirectory.getDirectory( indexName, create ); if (create) { IndexWriter iw = new IndexWriter(directory, new StandardAnalyzer(), create ); iw.close(); @@ -57,7 +58,25 @@ } - public Directory getDirectory() { + public FSDirectory getDirectory() { return directory; } + + @Override + public boolean equals(Object obj) { + // this code is actually broken since the value change after initialize call + // but from a practical POV this is fine since we only call this method + // after initialize call + if (obj == this) return true; + if (obj == null || ! (obj instanceof FSDirectoryProvider) ) return false; + return indexName.equals( ( (FSDirectoryProvider) obj).indexName ); + } + + @Override + public int hashCode() { + // this code is actually broken since the value change after initialize call + // but from a practical POV this is fine since we only call this method + // after initialize call + return indexName.hashCode(); + } } Added: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/RAMDirectoryProvider.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/RAMDirectoryProvider.java 2006-07-01 17:18:12 UTC (rev 10077) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/store/RAMDirectoryProvider.java 2006-07-02 01:41:42 UTC (rev 10078) @@ -0,0 +1,47 @@ +//$Id: $ +package org.hibernate.lucene.store; + +import java.util.Properties; + +import org.apache.lucene.store.RAMDirectory; +import org.hibernate.cfg.Configuration; + +/** + * Use a Lucene RAMDirectory + * + * @author Emmanuel Bernard + * @author Sylvain Vieujot + */ +public class RAMDirectoryProvider implements DirectoryProvider<RAMDirectory> { + + private RAMDirectory directory; + private String indexName; + + public void initialize(Class entity, Configuration cfg, Properties properties) { + indexName = DirectoryProviderFactory.getTypeName( entity ); + directory = new RAMDirectory(); + } + + public RAMDirectory getDirectory() { + return directory; + } + + @Override + public boolean equals(Object obj) { + // this code is actually broken since the value change after initialize call + // but from a practical POV this is fine since we only call this method + // after initialize call + if (obj == this) return true; + if (obj == null || ! (obj instanceof RAMDirectoryProvider) ) return false; + return indexName.equals( ( (RAMDirectoryProvider) obj).indexName ); + } + + @Override + public int hashCode() { + // this code is actually broken since the value change after initialize call + // but from a practical POV this is fine since we only call this method + // after initialize call + return indexName.hashCode(); + } + +} |