Author: epbernard
Date: 2007-11-30 21:10:49 -0500 (Fri, 30 Nov 2007)
New Revision: 14211
Modified:
search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
search/trunk/src/java/org/hibernate/search/util/DirectoryProviderHelper.java
search/trunk/src/test/org/hibernate/search/test/FSDirectoryTest.java
Log:
HSEARCH-123 create directories recursively
Modified: search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java
===================================================================
---
search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java 2007-11-29
01:39:53 UTC (rev 14210)
+++
search/trunk/src/java/org/hibernate/search/store/FSMasterDirectoryProvider.java 2007-12-01
02:10:49 UTC (rev 14211)
@@ -60,7 +60,7 @@
boolean create = !indexDir.exists();
if (create) {
log.debug( "Index directory '" + indexName + "' will be
initialized");
- indexDir.mkdir();
+ indexDir.mkdirs();
}
indexName = indexDir.getCanonicalPath();
directory = FSDirectory.getDirectory( indexName);
Modified: search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java
===================================================================
---
search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java 2007-11-29
01:39:53 UTC (rev 14210)
+++
search/trunk/src/java/org/hibernate/search/store/FSSlaveDirectoryProvider.java 2007-12-01
02:10:49 UTC (rev 14211)
@@ -62,7 +62,7 @@
boolean create = !indexDir.exists();
indexName = indexDir.getCanonicalPath();
if (create) {
- indexDir.mkdir();
+ indexDir.mkdirs();
log.debug("Initializing index directory " + indexName);
}
}
Modified: search/trunk/src/java/org/hibernate/search/util/DirectoryProviderHelper.java
===================================================================
---
search/trunk/src/java/org/hibernate/search/util/DirectoryProviderHelper.java 2007-11-29
01:39:53 UTC (rev 14210)
+++
search/trunk/src/java/org/hibernate/search/util/DirectoryProviderHelper.java 2007-12-01
02:10:49 UTC (rev 14211)
@@ -46,7 +46,7 @@
else {
File rootDir = new File(root);
if ( ! rootDir.exists() ) {
- rootDir.mkdir();
+ rootDir.mkdirs();
}
else if ( ! rootDir.isDirectory() ) {
throw new SearchException(rootPropertyName + " is not a directory");
@@ -54,7 +54,7 @@
//test it again in case mkdir failed for wrong reasons
if ( rootDir.exists() ) {
File sourceFile = new File(root, relative);
- if (! sourceFile.exists() ) sourceFile.mkdir();
+ if (! sourceFile.exists() ) sourceFile.mkdirs();
log.debug( "Get directory from root + relative");
try {
relative = sourceFile.getCanonicalPath();
@@ -77,7 +77,7 @@
if ( ! indexDir.exists() ) {
//if the base directory does not exists, create it
//we do not fear concurrent creation since mkdir does not raise exceptions
- indexDir.mkdir();
+ indexDir.mkdirs();
}
else if ( ! indexDir.isDirectory() ) {
throw new SearchException( MessageFormat.format( "Index directory is not a
directory: {0}", indexBase ) );
Modified: search/trunk/src/test/org/hibernate/search/test/FSDirectoryTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/FSDirectoryTest.java 2007-11-29
01:39:53 UTC (rev 14210)
+++ search/trunk/src/test/org/hibernate/search/test/FSDirectoryTest.java 2007-12-01
02:10:49 UTC (rev 14211)
@@ -3,6 +3,7 @@
import java.io.File;
import java.util.List;
+import java.util.Properties;
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
@@ -20,6 +21,7 @@
import org.hibernate.search.Environment;
import org.hibernate.search.event.FullTextIndexEventListener;
import org.hibernate.search.store.FSDirectoryProvider;
+import org.hibernate.search.util.DirectoryProviderHelper;
/**
* @author Gavin King
@@ -54,7 +56,7 @@
private void delete(File sub) {
if ( sub.isDirectory() ) {
- for ( File file : sub.listFiles() ) {
+ for (File file : sub.listFiles()) {
delete( file );
}
sub.delete();
@@ -64,6 +66,46 @@
}
}
+ private void recursiveDelete(File f) {
+ for (File file : f.listFiles()) {
+ if ( file.isDirectory() ) {
+ recursiveDelete( file );
+ }
+ }
+ f.delete();
+ }
+
+ public void testDirectoryProviderHelperMkdirsGetSource() throws Exception {
+ String root = "./testDir";
+ String relative = "dir1/dir2/dir3";
+
+ Properties properties = new Properties();
+ properties.put( "root", root );
+ properties.put( "relative", relative );
+
+ String rel = DirectoryProviderHelper.getSourceDirectory( "root",
"relative", "name", properties );
+
+ File f = new File( rel );
+ assertTrue( f.exists() );
+
+ recursiveDelete( new File( root ) );
+ }
+
+ public void testDirectoryProviderHelperMkdirsDetermineIndex() throws Exception {
+ String root = "./testDir/dir1/dir2";
+ String relative = "dir3";
+
+ Properties properties = new Properties();
+ properties.put( "indexBase", root );
+ properties.put( "indexName", relative );
+
+ File f = DirectoryProviderHelper.determineIndexDir( "name", properties );
+
+ assertTrue( new File( root ).exists() );
+
+ recursiveDelete( new File( "./testDir" ) );
+ }
+
public void testEventIntegration() throws Exception {
@@ -167,7 +209,7 @@
s = getSessions().openSession();
s.getTransaction().begin();
List list = s.createQuery( "from Document" ).list();
- for ( Document document : (List<Document>) list ) {
+ for (Document document : (List<Document>) list) {
s.delete( document );
}
s.getTransaction().commit();
@@ -175,7 +217,7 @@
}
protected Class[] getMappings() {
- return new Class[]{
+ return new Class[] {
Document.class
};
}
@@ -187,9 +229,9 @@
cfg.setProperty( "hibernate.search.default.directory_provider",
FSDirectoryProvider.class.getName() );
cfg.setProperty( Environment.ANALYZER_CLASS, StopAnalyzer.class.getName() );
FullTextIndexEventListener del = new FullTextIndexEventListener();
- cfg.getEventListeners().setPostDeleteEventListeners( new PostDeleteEventListener[]{del}
);
- cfg.getEventListeners().setPostUpdateEventListeners( new PostUpdateEventListener[]{del}
);
- cfg.getEventListeners().setPostInsertEventListeners( new PostInsertEventListener[]{del}
);
+ cfg.getEventListeners().setPostDeleteEventListeners( new PostDeleteEventListener[] {
del } );
+ cfg.getEventListeners().setPostUpdateEventListeners( new PostUpdateEventListener[] {
del } );
+ cfg.getEventListeners().setPostInsertEventListeners( new PostInsertEventListener[] {
del } );
}
}