|
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();
+ }
+
+}
|