You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2010/12/09 16:46:25 UTC

svn commit: r1044008 - in /lucene/dev/trunk: lucene/contrib/ant/src/test/org/apache/lucene/ant/ lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/quality/ lucene/contrib/misc/src/test/org/apache/lucene/index/ lucene/contrib/wordnet/src/test...

Author: shaie
Date: Thu Dec  9 15:46:23 2010
New Revision: 1044008

URL: http://svn.apache.org/viewvc?rev=1044008&view=rev
Log:
LUCENE-2804: port to trunk

Modified:
    lucene/dev/trunk/lucene/contrib/ant/src/test/org/apache/lucene/ant/IndexTaskTest.java
    lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java
    lucene/dev/trunk/lucene/contrib/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java
    lucene/dev/trunk/lucene/contrib/wordnet/src/test/org/apache/lucene/wordnet/TestWordnet.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/Directory.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/FSDirectory.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/RAMDirectory.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/Test2BTerms.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAtomicUpdate.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDoc.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestPayloads.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing2.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestDirectory.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestLockFactory.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java
    lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/core/AlternateDirectoryTest.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
    lucene/dev/trunk/solr/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java

Modified: lucene/dev/trunk/lucene/contrib/ant/src/test/org/apache/lucene/ant/IndexTaskTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/ant/src/test/org/apache/lucene/ant/IndexTaskTest.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/ant/src/test/org/apache/lucene/ant/IndexTaskTest.java (original)
+++ lucene/dev/trunk/lucene/contrib/ant/src/test/org/apache/lucene/ant/IndexTaskTest.java Thu Dec  9 15:46:23 2010
@@ -26,7 +26,7 @@ import org.apache.lucene.queryParser.Que
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Searcher;
-import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.Directory;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.types.FileSet;
 import org.apache.lucene.util.LuceneTestCase;
@@ -41,7 +41,7 @@ public class IndexTaskTest extends Lucen
 
     private Searcher searcher;
     private Analyzer analyzer;
-    private FSDirectory dir;
+    private Directory dir;
 
 
     /**
@@ -68,7 +68,7 @@ public class IndexTaskTest extends Lucen
         task.setProject(project);
         task.execute();
 
-        dir = FSDirectory.open(indexDir);
+        dir = newFSDirectory(indexDir);
         searcher = new IndexSearcher(dir, true);
         analyzer = new StopAnalyzer(TEST_VERSION_CURRENT);
     }

Modified: lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java (original)
+++ lucene/dev/trunk/lucene/contrib/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java Thu Dec  9 15:46:23 2010
@@ -23,7 +23,7 @@ import org.apache.lucene.benchmark.quali
 import org.apache.lucene.benchmark.quality.utils.SimpleQQParser;
 import org.apache.lucene.benchmark.quality.utils.SubmissionReport;
 import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.Directory;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -67,7 +67,8 @@ public class TestQualityRun extends Benc
     // validate topics & judgments match each other
     judge.validateData(qqs, logger);
     
-    IndexSearcher searcher = new IndexSearcher(FSDirectory.open(new File(getWorkDir(),"index")), true);
+    Directory dir = newFSDirectory(new File(getWorkDir(),"index"));
+    IndexSearcher searcher = new IndexSearcher(dir, true);
 
     QualityQueryParser qqParser = new SimpleQQParser("title","body");
     QualityBenchmark qrun = new QualityBenchmark(qqs, qqParser, searcher, docNameField);
@@ -131,8 +132,9 @@ public class TestQualityRun extends Benc
     for (int j = 1; j <= QualityStats.MAX_POINTS; j++) {
       assertTrue("avg p_at_"+j+" should be hurt: "+avg.getPrecisionAt(j), 1.0 > avg.getPrecisionAt(j));
     }
-
     
+    searcher.close();
+    dir.close();
   }
   
   public void testTrecTopicsReader() throws Exception {    

Modified: lucene/dev/trunk/lucene/contrib/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java (original)
+++ lucene/dev/trunk/lucene/contrib/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java Thu Dec  9 15:46:23 2010
@@ -21,7 +21,7 @@ import java.io.File;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util._TestUtil;
 
@@ -33,7 +33,7 @@ public class TestIndexSplitter extends L
     File destDir = new File(TEMP_DIR, "testfilesplitterdest");
     _TestUtil.rmDir(destDir);
     destDir.mkdirs();
-    FSDirectory fsDir = FSDirectory.open(dir);
+    Directory fsDir = newFSDirectory(dir);
 
     LogMergePolicy mergePolicy = new LogByteSizeMergePolicy();
     mergePolicy.setNoCFSRatio(1);
@@ -58,14 +58,19 @@ public class TestIndexSplitter extends L
       iw.addDocument(doc);
     }
     iw.commit();
-    assertEquals(3, iw.getReader().getSequentialSubReaders().length);
+    IndexReader iwReader = iw.getReader();
+    assertEquals(3, iwReader.getSequentialSubReaders().length);
+    iwReader.close();
     iw.close();
     // we should have 2 segments now
     IndexSplitter is = new IndexSplitter(dir);
     String splitSegName = is.infos.info(1).name;
     is.split(destDir, new String[] {splitSegName});
-    IndexReader r = IndexReader.open(FSDirectory.open(destDir), true);
+    Directory fsDirDest = newFSDirectory(destDir);
+    IndexReader r = IndexReader.open(fsDirDest, true);
     assertEquals(50, r.maxDoc());
+    r.close();
+    fsDirDest.close();
     
     // now test cmdline
     File destDir2 = new File(TEMP_DIR, "testfilesplitterdest2");
@@ -73,12 +78,17 @@ public class TestIndexSplitter extends L
     destDir2.mkdirs();
     IndexSplitter.main(new String[] {dir.getAbsolutePath(), destDir2.getAbsolutePath(), splitSegName});
     assertEquals(3, destDir2.listFiles().length);
-    r = IndexReader.open(FSDirectory.open(destDir2), true);
+    Directory fsDirDest2 = newFSDirectory(destDir2);
+    r = IndexReader.open(fsDirDest2, true);
     assertEquals(50, r.maxDoc());
+    r.close();
+    fsDirDest2.close();
     
     // now remove the copied segment from src
     IndexSplitter.main(new String[] {dir.getAbsolutePath(), "-d", splitSegName});
-    r = IndexReader.open(FSDirectory.open(dir), true);
+    r = IndexReader.open(fsDir, true);
     assertEquals(2, r.getSequentialSubReaders().length);
+    r.close();
+    fsDir.close();
   }
 }

Modified: lucene/dev/trunk/lucene/contrib/wordnet/src/test/org/apache/lucene/wordnet/TestWordnet.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/wordnet/src/test/org/apache/lucene/wordnet/TestWordnet.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/wordnet/src/test/org/apache/lucene/wordnet/TestWordnet.java (original)
+++ lucene/dev/trunk/lucene/contrib/wordnet/src/test/org/apache/lucene/wordnet/TestWordnet.java Thu Dec  9 15:46:23 2010
@@ -28,14 +28,14 @@ import org.apache.lucene.search.IndexSea
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Searcher;
 import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
 
 public class TestWordnet extends LuceneTestCase {
   private Searcher searcher;
-    
-  String storePathName = 
-    new File(TEMP_DIR,"testLuceneWordnet").getAbsolutePath();
+  private Directory dir;
+  
+  String storePathName = new File(TEMP_DIR,"testLuceneWordnet").getAbsolutePath();
   
   @Override
   public void setUp() throws Exception {
@@ -48,7 +48,8 @@ public class TestWordnet extends LuceneT
       Syns2Index.main(commandLineArgs);
     } catch (Throwable t) { throw new RuntimeException(t); }
     
-    searcher = new IndexSearcher(FSDirectory.open(new File(storePathName)), true);
+    dir = newFSDirectory(new File(storePathName));
+    searcher = new IndexSearcher(dir, true);
   }
   
   public void testExpansion() throws IOException {
@@ -72,6 +73,7 @@ public class TestWordnet extends LuceneT
   @Override
   public void tearDown() throws Exception {
     searcher.close();
+    dir.close();
     rmDir(storePathName); // delete our temporary synonym index
     super.tearDown();
   }

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/Directory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/Directory.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/Directory.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/Directory.java Thu Dec  9 15:46:23 2010
@@ -153,7 +153,7 @@ public abstract class Directory implemen
    *
    * @param lockFactory instance of {@link LockFactory}.
    */
-  public void setLockFactory(LockFactory lockFactory) {
+  public void setLockFactory(LockFactory lockFactory) throws IOException {
     assert lockFactory != null;
     this.lockFactory = lockFactory;
     lockFactory.setLockPrefix(this.getLockID());

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/FSDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/FSDirectory.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/FSDirectory.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/FSDirectory.java Thu Dec  9 15:46:23 2010
@@ -156,20 +156,6 @@ public abstract class FSDirectory extend
       throw new NoSuchDirectoryException("file '" + directory + "' exists but is not a directory");
 
     setLockFactory(lockFactory);
-    
-    // for filesystem based LockFactory, delete the lockPrefix, if the locks are placed
-    // in index dir. If no index dir is given, set ourselves
-    if (lockFactory instanceof FSLockFactory) {
-      final FSLockFactory lf = (FSLockFactory) lockFactory;
-      final File dir = lf.getLockDir();
-      // if the lock factory has no lockDir set, use the this directory as lockDir
-      if (dir == null) {
-        lf.setLockDir(directory);
-        lf.setLockPrefix(null);
-      } else if (dir.getCanonicalPath().equals(directory.getCanonicalPath())) {
-        lf.setLockPrefix(null);
-      }
-    }
   }
 
   /** Creates an FSDirectory instance, trying to pick the
@@ -209,6 +195,26 @@ public abstract class FSDirectory extend
     }
   }
 
+  @Override
+  public void setLockFactory(LockFactory lockFactory) throws IOException {
+    super.setLockFactory(lockFactory);
+
+    // for filesystem based LockFactory, delete the lockPrefix, if the locks are placed
+    // in index dir. If no index dir is given, set ourselves
+    if (lockFactory instanceof FSLockFactory) {
+      final FSLockFactory lf = (FSLockFactory) lockFactory;
+      final File dir = lf.getLockDir();
+      // if the lock factory has no lockDir set, use the this directory as lockDir
+      if (dir == null) {
+        lf.setLockDir(directory);
+        lf.setLockPrefix(null);
+      } else if (dir.getCanonicalPath().equals(directory.getCanonicalPath())) {
+        lf.setLockPrefix(null);
+      }
+    }
+
+  }
+  
   /** Lists all files (not subdirectories) in the
    *  directory.  This method never returns null (throws
    *  {@link IOException} instead).

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/RAMDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/RAMDirectory.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/RAMDirectory.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/store/RAMDirectory.java Thu Dec  9 15:46:23 2010
@@ -48,7 +48,11 @@ public class RAMDirectory extends Direct
 
   /** Constructs an empty {@link Directory}. */
   public RAMDirectory() {
-    setLockFactory(new SingleInstanceLockFactory());
+    try {
+      setLockFactory(new SingleInstanceLockFactory());
+    } catch (IOException e) {
+      // Cannot happen
+    }
   }
 
   /**

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/Test2BTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/Test2BTerms.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/Test2BTerms.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/Test2BTerms.java Thu Dec  9 15:46:23 2010
@@ -58,6 +58,7 @@ public class Test2BTerms extends LuceneT
       bytes.length = TOKEN_LEN;
     }
     
+    @Override
     public boolean incrementToken() {
       if (tokenCount >= tokensPerDoc) {
         return false;
@@ -67,6 +68,7 @@ public class Test2BTerms extends LuceneT
       return true;
     }
 
+    @Override
     public void reset() {
       tokenCount = 0;
     }
@@ -131,7 +133,7 @@ public class Test2BTerms extends LuceneT
 
     int TERMS_PER_DOC = 1000000;
 
-    Directory dir = FSDirectory.open(_TestUtil.getTempDir("2BTerms"));
+    Directory dir = newFSDirectory(_TestUtil.getTempDir("2BTerms"));
     IndexWriter w = new IndexWriter(
         dir,
         new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAtomicUpdate.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAtomicUpdate.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAtomicUpdate.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAtomicUpdate.java Thu Dec  9 15:46:23 2010
@@ -195,7 +195,7 @@ public class TestAtomicUpdate extends Lu
 
     // Second in an FSDirectory:
     File dirPath = _TestUtil.getTempDir("lucene.test.atomic");
-    directory = FSDirectory.open(dirPath);
+    directory = newFSDirectory(dirPath);
     runTest(directory);
     directory.close();
     _TestUtil.rmDir(dirPath);

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Thu Dec  9 15:46:23 2010
@@ -45,7 +45,6 @@ import org.apache.lucene.search.ScoreDoc
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.NumericRangeQuery;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util._TestUtil;
 import org.apache.lucene.util.BytesRef;
@@ -152,7 +151,7 @@ public class TestBackwardsCompatibility 
       unzip(getDataFile("unsupported." + unsupportedNames[i] + ".zip"), unsupportedNames[i]);
 
       String fullPath = fullDir(unsupportedNames[i]);
-      Directory dir = FSDirectory.open(new File(fullPath));
+      Directory dir = newFSDirectory(new File(fullPath));
 
       IndexReader reader = null;
       IndexWriter writer = null;
@@ -212,7 +211,7 @@ public class TestBackwardsCompatibility 
       unzip(getDataFile("index." + oldNames[i] + ".zip"), oldNames[i]);
 
       String fullPath = fullDir(oldNames[i]);
-      Directory dir = FSDirectory.open(new File(fullPath));
+      Directory dir = newFSDirectory(new File(fullPath));
 
       IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(
           TEST_VERSION_CURRENT, new MockAnalyzer()));
@@ -230,7 +229,7 @@ public class TestBackwardsCompatibility 
     for (String name : oldNames) {
       unzip(getDataFile("index." + name + ".zip"), name);
       String fullPath = fullDir(name);
-      Directory dir = FSDirectory.open(new File(fullPath));
+      Directory dir = newFSDirectory(new File(fullPath));
 
       Directory targetDir = newDirectory();
       IndexWriter w = new IndexWriter(targetDir, newIndexWriterConfig(
@@ -250,7 +249,7 @@ public class TestBackwardsCompatibility 
     for (String name : oldNames) {
       unzip(getDataFile("index." + name + ".zip"), name);
       String fullPath = fullDir(name);
-      Directory dir = FSDirectory.open(new File(fullPath));
+      Directory dir = newFSDirectory(new File(fullPath));
       IndexReader reader = IndexReader.open(dir);
       
       Directory targetDir = newDirectory();
@@ -307,7 +306,7 @@ public class TestBackwardsCompatibility 
 
     dirName = fullDir(dirName);
 
-    Directory dir = FSDirectory.open(new File(dirName));
+    Directory dir = newFSDirectory(new File(dirName));
     IndexSearcher searcher = new IndexSearcher(dir, true);
     IndexReader reader = searcher.getIndexReader();
 
@@ -372,7 +371,7 @@ public class TestBackwardsCompatibility 
     String origDirName = dirName;
     dirName = fullDir(dirName);
 
-    Directory dir = FSDirectory.open(new File(dirName));
+    Directory dir = newFSDirectory(new File(dirName));
     // open writer
     IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.APPEND));
     // add 10 docs
@@ -437,7 +436,7 @@ public class TestBackwardsCompatibility 
 
     dirName = fullDir(dirName);
 
-    Directory dir = FSDirectory.open(new File(dirName));
+    Directory dir = newFSDirectory(new File(dirName));
 
     // make sure searching sees right # hits
     IndexSearcher searcher = new IndexSearcher(dir, true);
@@ -486,7 +485,7 @@ public class TestBackwardsCompatibility 
 
     dirName = fullDir(dirName);
 
-    Directory dir = FSDirectory.open(new File(dirName));
+    Directory dir = newFSDirectory(new File(dirName));
     IndexWriterConfig conf = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(10);
     ((LogMergePolicy) conf.getMergePolicy()).setUseCompoundFile(doCFS);
     ((LogMergePolicy) conf.getMergePolicy()).setUseCompoundDocStore(doCFS);
@@ -525,7 +524,7 @@ public class TestBackwardsCompatibility 
     rmDir(outputDir);
 
     try {
-      Directory dir = FSDirectory.open(new File(fullDir(outputDir)));
+      Directory dir = newFSDirectory(new File(fullDir(outputDir)));
 
       LogMergePolicy mergePolicy = newLogMergePolicy(true, 10);
       mergePolicy.setNoCFSRatio(1); // This test expects all of its segments to be in CFS
@@ -658,7 +657,7 @@ public class TestBackwardsCompatibility 
     for(int i=0;i<oldNames.length;i++) {
       unzip(getDataFile("index." + oldNames[i] + ".zip"), oldNames[i]);
       String fullPath = fullDir(oldNames[i]);
-      Directory dir = FSDirectory.open(new File(fullPath));
+      Directory dir = newFSDirectory(new File(fullPath));
       IndexReader r = IndexReader.open(dir);
       TermsEnum terms = MultiFields.getFields(r).terms("content").iterator();
       BytesRef t = terms.next();
@@ -704,7 +703,7 @@ public class TestBackwardsCompatibility 
       
       unzip(getDataFile("index." + oldNames[i] + ".zip"), oldNames[i]);
       String fullPath = fullDir(oldNames[i]);
-      Directory dir = FSDirectory.open(new File(fullPath));
+      Directory dir = newFSDirectory(new File(fullPath));
       IndexSearcher searcher = new IndexSearcher(dir, true);
       
       for (int id=10; id<15; id++) {

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDoc.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDoc.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDoc.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDoc.java Thu Dec  9 15:46:23 2010
@@ -33,8 +33,8 @@ import org.apache.lucene.analysis.MockAn
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.index.codecs.CodecProvider;
 
@@ -47,12 +47,10 @@ public class TestDoc extends LuceneTestC
         TestRunner.run (new TestSuite(TestDoc.class));
     }
 
-
     private File workDir;
     private File indexDir;
     private LinkedList<File> files;
 
-
     /** Set the test case. This test case needs
      *  a few text files created in the current working directory.
      */
@@ -65,7 +63,7 @@ public class TestDoc extends LuceneTestC
         indexDir = new File(workDir, "testIndex");
         indexDir.mkdirs();
 
-        Directory directory = FSDirectory.open(indexDir);
+        Directory directory = newFSDirectory(indexDir);
         directory.close();
 
         files = new LinkedList<File>();
@@ -110,7 +108,7 @@ public class TestDoc extends LuceneTestC
       StringWriter sw = new StringWriter();
       PrintWriter out = new PrintWriter(sw, true);
       
-      Directory directory = FSDirectory.open(indexDir);
+      Directory directory = newFSDirectory(indexDir);
       IndexWriter writer = new IndexWriter(
           directory,
           newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).
@@ -144,7 +142,7 @@ public class TestDoc extends LuceneTestC
       sw = new StringWriter();
       out = new PrintWriter(sw, true);
 
-      directory = FSDirectory.open(indexDir);
+      directory = newFSDirectory(indexDir);
       writer = new IndexWriter(
           directory,
           newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).
@@ -233,7 +231,7 @@ public class TestDoc extends LuceneTestC
 
           DocsAndPositionsEnum positions = tis.docsAndPositions(reader.getDeletedDocs(), null);
 
-          while (positions.nextDoc() != positions.NO_MORE_DOCS) {
+          while (positions.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
             out.print(" doc=" + positions.docID());
             out.print(" TF=" + positions.freq());
             out.print(" pos=");

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldsReader.java Thu Dec  9 15:46:23 2010
@@ -33,7 +33,6 @@ import org.apache.lucene.index.IndexWrit
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.BufferedIndexInput;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.util.LuceneTestCase;
@@ -160,7 +159,6 @@ public class TestFieldsReader extends Lu
     assertTrue(dir != null);
     assertTrue(fieldInfos != null);
     FieldsReader reader = new FieldsReader(dir, TEST_SEGMENT_NAME, fieldInfos);
-    assertTrue(reader != null);
     assertTrue(reader.size() == 1);
     Set<String> loadFieldNames = new HashSet<String>();
     loadFieldNames.add(DocHelper.TEXT_FIELD_1_KEY);
@@ -174,6 +172,7 @@ public class TestFieldsReader extends Lu
 
     // Use LATENT instead of LAZY
     SetBasedFieldSelector fieldSelector = new SetBasedFieldSelector(loadFieldNames, lazyFieldNames) {
+        @Override
         public FieldSelectorResult accept(String fieldName) {
           final FieldSelectorResult result = super.accept(fieldName);
           if (result == FieldSelectorResult.LAZY_LOAD) {
@@ -290,7 +289,7 @@ public class TestFieldsReader extends Lu
     String userName = System.getProperty("user.name");
     File file = new File(TEMP_DIR, "lazyDir" + userName);
     _TestUtil.rmDir(file);
-    FSDirectory tmpDir = FSDirectory.open(file);
+    Directory tmpDir = newFSDirectory(file);
     assertTrue(tmpDir != null);
 
     IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE);
@@ -345,6 +344,7 @@ public class TestFieldsReader extends Lu
       reader.close();
 
     }
+    tmpDir.close();
     if (VERBOSE) {
       System.out.println("Average Non-lazy time (should be very close to zero): " + regularTime / length + " ms for " + length + " reads");
       System.out.println("Average Lazy Time (should be greater than zero): " + lazyTime / length + " ms for " + length + " reads");
@@ -388,9 +388,10 @@ public class TestFieldsReader extends Lu
 
   public static class FaultyFSDirectory extends Directory {
 
-    FSDirectory fsDir;
+    Directory fsDir;
+    
     public FaultyFSDirectory(File dir) throws IOException {
-      fsDir = FSDirectory.open(dir);
+      fsDir = newFSDirectory(dir);
       lockFactory = fsDir.getLockFactory();
     }
     @Override

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReader.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReader.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReader.java Thu Dec  9 15:46:23 2010
@@ -39,13 +39,13 @@ import org.apache.lucene.document.SetBas
 import org.apache.lucene.index.IndexReader.FieldOption;
 import org.apache.lucene.index.codecs.CodecProvider;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.FieldCache;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.store.NoSuchDirectoryException;
@@ -306,15 +306,14 @@ public class TestIndexReader extends Luc
                                      IndexReader reader,
                                      Term term,
                                      int expected)
-    throws IOException
-    {
+    throws IOException {
         DocsEnum tdocs = MultiFields.getTermDocsEnum(reader,
                                                      MultiFields.getDeletedDocs(reader),
                                                      term.field(),
                                                      new BytesRef(term.text()));
         int count = 0;
         if (tdocs != null) {
-          while(tdocs.nextDoc()!= tdocs.NO_MORE_DOCS) {
+          while(tdocs.nextDoc()!= DocIdSetIterator.NO_MORE_DOCS) {
             count++;
           }
         }
@@ -524,19 +523,16 @@ public class TestIndexReader extends Luc
     // Make sure you can set norms & commit even if a reader
     // is open against the index:
     public void testWritingNorms() throws IOException {
-        File indexDir = new File(TEMP_DIR, "lucenetestnormwriter");
-        Directory dir = FSDirectory.open(indexDir);
-        IndexWriter writer;
-        IndexReader reader;
+        Directory dir = newDirectory();
         Term searchTerm = new Term("content", "aaa");
 
         //  add 1 documents with term : aaa
-        writer  = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
+        IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
         addDoc(writer, searchTerm.text());
         writer.close();
 
         //  now open reader & set norm for doc 0
-        reader = IndexReader.open(dir, false);
+        IndexReader reader = IndexReader.open(dir, false);
         reader.setNorm(0, "content", (float) 2.0);
 
         // we should be holding the write lock now:
@@ -561,8 +557,6 @@ public class TestIndexReader extends Luc
 
         reader2.close();
         dir.close();
-
-        rmDir(indexDir);
     }
 
 
@@ -707,7 +701,7 @@ public class TestIndexReader extends Luc
   public void testFilesOpenClose() throws IOException {
         // Create initial data set
         File dirFile = _TestUtil.getTempDir("TestIndexReader.testFilesOpenClose");
-        Directory dir = FSDirectory.open(dirFile);
+        Directory dir = newFSDirectory(dirFile);
         IndexWriter writer  = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()));
         addDoc(writer, "test");
         writer.close();
@@ -715,7 +709,7 @@ public class TestIndexReader extends Luc
 
         // Try to erase the data - this ensures that the writer closed all files
         _TestUtil.rmDir(dirFile);
-        dir = FSDirectory.open(dirFile);
+        dir = newFSDirectory(dirFile);
 
         // Now create the data set again, just as before
         writer  = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE));
@@ -724,7 +718,7 @@ public class TestIndexReader extends Luc
         dir.close();
 
         // Now open existing directory and test that reader closes all files
-        dir = FSDirectory.open(dirFile);
+        dir = newFSDirectory(dirFile);
         IndexReader reader1 = IndexReader.open(dir, false);
         reader1.close();
         dir.close();
@@ -1131,7 +1125,7 @@ public class TestIndexReader extends Luc
 
     public void testOpenReaderAfterDelete() throws IOException {
       File dirFile = new File(TEMP_DIR, "deletetest");
-      Directory dir = FSDirectory.open(dirFile);
+      Directory dir = newFSDirectory(dirFile);
       try {
         IndexReader.open(dir, false);
         fail("expected FileNotFoundException");
@@ -1313,19 +1307,11 @@ public class TestIndexReader extends Luc
         writer.addDocument(doc);
     }
     
-    private void addDoc(IndexWriter writer, String value) throws IOException
-    {
+    private void addDoc(IndexWriter writer, String value) throws IOException {
         Document doc = new Document();
         doc.add(newField("content", value, Field.Store.NO, Field.Index.ANALYZED));
         writer.addDocument(doc);
     }
-    private void rmDir(File dir) {
-        File[] files = dir.listFiles();
-        for (int i = 0; i < files.length; i++) {
-            files[i].delete();
-        }
-        dir.delete();
-    }
 
     public static void assertIndexEquals(IndexReader index1, IndexReader index2) throws IOException {
       assertEquals("IndexReaders have different values for numDocs.", index1.numDocs(), index2.numDocs());
@@ -1404,8 +1390,8 @@ public class TestIndexReader extends Luc
           DocsAndPositionsEnum tp1 = enum1.docsAndPositions(delDocs, null);
           DocsAndPositionsEnum tp2 = enum2.docsAndPositions(delDocs, null);
 
-          while(tp1.nextDoc() != DocsEnum.NO_MORE_DOCS) {
-            assertTrue(tp2.nextDoc() != DocsEnum.NO_MORE_DOCS);
+          while(tp1.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
+            assertTrue(tp2.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
             assertEquals("Different doc id in postinglist of term " + enum1.term() + ".", tp1.docID(), tp2.docID());
             assertEquals("Different term frequence in postinglist of term " + enum1.term() + ".", tp1.freq(), tp2.freq());
             for (int i = 0; i < tp1.freq(); i++) {
@@ -1590,7 +1576,7 @@ public class TestIndexReader extends Luc
   // IndexReader on a non-existent directory, you get a
   // good exception
   public void testNoDir() throws Throwable {
-    Directory dir = FSDirectory.open(_TestUtil.getTempDir("doesnotexist"));
+    Directory dir = newFSDirectory(_TestUtil.getTempDir("doesnotexist"));
     try {
       IndexReader.open(dir, true);
       fail("did not hit expected exception");

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderCloneNorms.java Thu Dec  9 15:46:23 2010
@@ -17,7 +17,6 @@ package org.apache.lucene.index;
  * limitations under the License.
  */
 
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Random;
@@ -34,7 +33,6 @@ import org.apache.lucene.index.SegmentRe
 import org.apache.lucene.search.DefaultSimilarity;
 import org.apache.lucene.search.Similarity;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.LuceneTestCase;
 
 /**
@@ -79,8 +77,7 @@ public class TestIndexReaderCloneNorms e
    */
   public void testNorms() throws IOException {
     // test with a single index: index1
-    File indexDir1 = new File(TEMP_DIR, "lucenetestindex1");
-    Directory dir1 = FSDirectory.open(indexDir1);
+    Directory dir1 = newDirectory();
     IndexWriter.unlock(dir1);
 
     norms = new ArrayList<Float>();
@@ -98,15 +95,13 @@ public class TestIndexReaderCloneNorms e
     modifiedNorms = new ArrayList<Float>();
     numDocNorms = 0;
 
-    File indexDir2 = new File(TEMP_DIR, "lucenetestindex2");
-    Directory dir2 = FSDirectory.open(indexDir2);
+    Directory dir2 = newDirectory();
 
     createIndex(random, dir2);
     doTestNorms(random, dir2);
 
     // add index1 and index2 to a third index: index3
-    File indexDir3 = new File(TEMP_DIR, "lucenetestindex3");
-    Directory dir3 = FSDirectory.open(indexDir3);
+    Directory dir3 = newDirectory();
 
     createIndex(random, dir3);
     IndexWriter iw = new IndexWriter(
@@ -163,6 +158,9 @@ public class TestIndexReaderCloneNorms e
     modifyNormsForF1(irc3);
     verifyIndex(irc3);
     irc3.flush();
+    
+    ir.close();
+    irc.close();
     irc3.close();
   }
   

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexReaderReopen.java Thu Dec  9 15:46:23 2010
@@ -40,7 +40,6 @@ import org.apache.lucene.search.IndexSea
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.BitVector;
@@ -149,12 +148,12 @@ public class TestIndexReaderReopen exten
   // in each iteration verify the work of previous iteration. 
   // try this once with reopen once recreate, on both RAMDir and FSDir.
   public void testCommitReopenFS () throws IOException {
-    Directory dir = FSDirectory.open(indexDir);
+    Directory dir = newFSDirectory(indexDir);
     doTestReopenWithCommit(random, dir, true);
     dir.close();
   }
   public void testCommitRecreateFS () throws IOException {
-    Directory dir = FSDirectory.open(indexDir);
+    Directory dir = newFSDirectory(indexDir);
     doTestReopenWithCommit(random, dir, false);
     dir.close();
   }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java Thu Dec  9 15:46:23 2010
@@ -48,6 +48,7 @@ import org.apache.lucene.document.Field.
 import org.apache.lucene.document.Field.Store;
 import org.apache.lucene.document.Field.TermVector;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.PhraseQuery;
@@ -57,7 +58,6 @@ import org.apache.lucene.search.TermQuer
 import org.apache.lucene.search.spans.SpanTermQuery;
 import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.store.Lock;
 import org.apache.lucene.store.LockFactory;
@@ -319,34 +319,30 @@ public class TestIndexWriter extends Luc
     // reader holds it open (this fails pre lock-less
     // commits on windows):
     public void testCreateWithReader() throws IOException {
-        File indexDir = _TestUtil.getTempDir("lucenetestindexwriter");
-
-        try {
-          Directory dir = FSDirectory.open(indexDir);
+      Directory dir = newDirectory();
 
-          // add one document & close writer
-          IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer()));
-          addDoc(writer);
-          writer.close();
+      // add one document & close writer
+      IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer()));
+      addDoc(writer);
+      writer.close();
 
-          // now open reader:
-          IndexReader reader = IndexReader.open(dir, true);
-          assertEquals("should be one document", reader.numDocs(), 1);
+      // now open reader:
+      IndexReader reader = IndexReader.open(dir, true);
+      assertEquals("should be one document", reader.numDocs(), 1);
 
-          // now open index for create:
-          writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE));
-          assertEquals("should be zero documents", writer.maxDoc(), 0);
-          addDoc(writer);
-          writer.close();
+      // now open index for create:
+      writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE));
+      assertEquals("should be zero documents", writer.maxDoc(), 0);
+      addDoc(writer);
+      writer.close();
 
-          assertEquals("should be one document", reader.numDocs(), 1);
-          IndexReader reader2 = IndexReader.open(dir, true);
-          assertEquals("should be one document", reader2.numDocs(), 1);
-          reader.close();
-          reader2.close();
-        } finally {
-          rmDir(indexDir);
-        }
+      assertEquals("should be one document", reader.numDocs(), 1);
+      IndexReader reader2 = IndexReader.open(dir, true);
+      assertEquals("should be one document", reader2.numDocs(), 1);
+      reader.close();
+      reader2.close();
+      
+      dir.close();
     }
 
     public void testChangesAfterClose() throws IOException {
@@ -943,16 +939,6 @@ public class TestIndexWriter extends Luc
       dir.close();
     }
 
-    private void rmDir(File dir) {
-        File[] files = dir.listFiles();
-        if (files != null) {
-          for (int i = 0; i < files.length; i++) {
-            files[i].delete();
-          }
-        }
-        dir.delete();
-    }
-  
   /**
    * Test that no NullPointerException will be raised,
    * when adding one document with a single, empty field
@@ -1727,7 +1713,7 @@ public class TestIndexWriter extends Luc
                                                                 "field",
                                                                 new BytesRef("a"));
 
-    assertTrue(tps.nextDoc() != DocsEnum.NO_MORE_DOCS);
+    assertTrue(tps.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
     assertEquals(1, tps.freq());
     assertEquals(0, tps.nextPosition());
     w.close();
@@ -1967,11 +1953,9 @@ public class TestIndexWriter extends Luc
   // create=true does not remove non-index files
   
   public void testOtherFiles() throws Throwable {
-    File indexDir = new File(TEMP_DIR, "otherfiles");
-    Directory dir = FSDirectory.open(indexDir);
+    Directory dir = newDirectory();
     try {
       // Create my own random file:
-
       IndexOutput out = dir.createOutput("myrandomfile");
       out.writeByte((byte) 42);
       out.close();
@@ -1981,7 +1965,6 @@ public class TestIndexWriter extends Luc
       assertTrue(dir.fileExists("myrandomfile"));
     } finally {
       dir.close();
-      _TestUtil.rmDir(indexDir);
     }
   }
 
@@ -2191,12 +2174,12 @@ public class TestIndexWriter extends Luc
 
 
     // test that the terms were indexed.
-    assertTrue(MultiFields.getTermDocsEnum(ir, null, "binary", new BytesRef("doc1field1")).nextDoc() != DocsEnum.NO_MORE_DOCS);
-    assertTrue(MultiFields.getTermDocsEnum(ir, null, "binary", new BytesRef("doc2field1")).nextDoc() != DocsEnum.NO_MORE_DOCS);
-    assertTrue(MultiFields.getTermDocsEnum(ir, null, "binary", new BytesRef("doc3field1")).nextDoc() != DocsEnum.NO_MORE_DOCS);
-    assertTrue(MultiFields.getTermDocsEnum(ir, null, "string", new BytesRef("doc1field2")).nextDoc() != DocsEnum.NO_MORE_DOCS);
-    assertTrue(MultiFields.getTermDocsEnum(ir, null, "string", new BytesRef("doc2field2")).nextDoc() != DocsEnum.NO_MORE_DOCS);
-    assertTrue(MultiFields.getTermDocsEnum(ir, null, "string", new BytesRef("doc3field2")).nextDoc() != DocsEnum.NO_MORE_DOCS);
+    assertTrue(MultiFields.getTermDocsEnum(ir, null, "binary", new BytesRef("doc1field1")).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
+    assertTrue(MultiFields.getTermDocsEnum(ir, null, "binary", new BytesRef("doc2field1")).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
+    assertTrue(MultiFields.getTermDocsEnum(ir, null, "binary", new BytesRef("doc3field1")).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
+    assertTrue(MultiFields.getTermDocsEnum(ir, null, "string", new BytesRef("doc1field2")).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
+    assertTrue(MultiFields.getTermDocsEnum(ir, null, "string", new BytesRef("doc2field2")).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
+    assertTrue(MultiFields.getTermDocsEnum(ir, null, "string", new BytesRef("doc3field2")).nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
 
     ir.close();
     dir.close();
@@ -2467,7 +2450,7 @@ public class TestIndexWriter extends Luc
     while(t.next() != null) {
       final DocsEnum docs = t.docs(null, null);
       assertEquals(0, docs.nextDoc());
-      assertEquals(DocsEnum.NO_MORE_DOCS, docs.nextDoc());
+      assertEquals(DocIdSetIterator.NO_MORE_DOCS, docs.nextDoc());
       count++;
     }
     assertEquals(300, count);
@@ -2581,6 +2564,7 @@ public class TestIndexWriter extends Luc
     public FlushCountingIndexWriter(Directory dir, IndexWriterConfig iwc) throws IOException {
       super(dir, iwc);
     }
+    @Override
     public void doAfterFlush() {
       flushCount++;
     }
@@ -2642,8 +2626,9 @@ public class TestIndexWriter extends Luc
     // Tests that if FSDir is opened w/ a NoLockFactory (or SingleInstanceLF),
     // then IndexWriter ctor succeeds. Previously (LUCENE-2386) it failed 
     // when listAll() was called in IndexFileDeleter.
-    FSDirectory dir = FSDirectory.open(new File(TEMP_DIR, "emptyFSDirNoLock"), NoLockFactory.getNoLockFactory());
+    Directory dir = newFSDirectory(new File(TEMP_DIR, "emptyFSDirNoLock"), NoLockFactory.getNoLockFactory());
     new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer())).close();
+    dir.close();
   }
 
   public void testEmptyDirRollback() throws Exception {
@@ -2691,28 +2676,23 @@ public class TestIndexWriter extends Luc
   }
 
   public void testNoSegmentFile() throws IOException {
-    File tempDir = _TestUtil.getTempDir("noSegmentFile");
-    try {
-      Directory dir = FSDirectory.open(tempDir);
-      dir.setLockFactory(NoLockFactory.getNoLockFactory());
-      IndexWriter w = new IndexWriter(dir, newIndexWriterConfig( 
-          TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(2));
-
-      Document doc = new Document();
-      doc.add(newField("c", "val", Store.YES, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS));
-      w.addDocument(doc);
-      w.addDocument(doc);
-      IndexWriter w2 = new IndexWriter(dir, newIndexWriterConfig( 
-          TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(2)
-          .setOpenMode(OpenMode.CREATE));
-
-      w2.close();
-      // If we don't do that, the test fails on Windows
-      w.rollback();
-      dir.close();
-    } finally {
-      _TestUtil.rmDir(tempDir);
-    }
+    Directory dir = newDirectory();
+    dir.setLockFactory(NoLockFactory.getNoLockFactory());
+    IndexWriter w = new IndexWriter(dir, newIndexWriterConfig( 
+        TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(2));
+    
+    Document doc = new Document();
+    doc.add(newField("c", "val", Store.YES, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS));
+    w.addDocument(doc);
+    w.addDocument(doc);
+    IndexWriter w2 = new IndexWriter(dir, newIndexWriterConfig( 
+        TEST_VERSION_CURRENT, new MockAnalyzer()).setMaxBufferedDocs(2)
+        .setOpenMode(OpenMode.CREATE));
+    
+    w2.close();
+    // If we don't do that, the test fails on Windows
+    w.rollback();
+    dir.close();
   }
 
   public void testFutureCommit() throws Exception {

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexWriterLockRelease.java Thu Dec  9 15:46:23 2010
@@ -24,7 +24,7 @@ import org.apache.lucene.util.LuceneTest
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.Directory;
 
 /**
  * This tests the patch for issue #LUCENE-715 (IndexWriter does not
@@ -73,20 +73,16 @@ public class TestIndexWriterLockRelease 
     }
 
     public void testIndexWriterLockRelease() throws IOException {
-        FSDirectory dir = FSDirectory.open(this.__test_dir);
+      Directory dir = newFSDirectory(this.__test_dir);
+      try {
+        new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.APPEND));
+      } catch (FileNotFoundException e) {
         try {
-          new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT,
-              new MockAnalyzer())
-          .setOpenMode(OpenMode.APPEND));
-        } catch (FileNotFoundException e) {
-            try {
-              new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT,
-                  new MockAnalyzer())
-              .setOpenMode(OpenMode.APPEND));
-            } catch (FileNotFoundException e1) {
-            }
-        } finally {
-          dir.close();
+          new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.APPEND));
+        } catch (FileNotFoundException e1) {
         }
+      } finally {
+        dir.close();
+      }
     }
 }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestPayloads.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestPayloads.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestPayloads.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestPayloads.java Thu Dec  9 15:46:23 2010
@@ -17,7 +17,6 @@ package org.apache.lucene.index;
  * limitations under the License.
  */
 
-import java.io.File;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.UnsupportedEncodingException;
@@ -36,15 +35,14 @@ import org.apache.lucene.analysis.tokena
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.UnicodeUtil;
 import org.apache.lucene.util._TestUtil;
 
-
 public class TestPayloads extends LuceneTestCase {
     
     // Simple tests to test the Payload class
@@ -154,16 +152,9 @@ public class TestPayloads extends Lucene
 
     // Tests if payloads are correctly stored and loaded using both RamDirectory and FSDirectory
     public void testPayloadsEncoding() throws Exception {
-        // first perform the test using a RAMDirectory
         Directory dir = newDirectory();
         performTest(dir);
         dir.close();
-        // now use a FSDirectory and repeat same test
-        File dirName = _TestUtil.getTempDir("test_payloads");
-        dir = FSDirectory.open(dirName);
-        performTest(dir);
-       _TestUtil.rmDir(dirName);
-        dir.close();
     }
     
     // builds an index with payloads in the given Directory and performs
@@ -236,7 +227,7 @@ public class TestPayloads extends Lucene
                                                     new BytesRef(terms[i].text()));
         }
         
-        while (tps[0].nextDoc() != DocsEnum.NO_MORE_DOCS) {
+        while (tps[0].nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
             for (int i = 1; i < numTerms; i++) {
                 tps[i].nextDoc();
             }
@@ -521,7 +512,7 @@ public class TestPayloads extends Lucene
         while (terms.next() != null) {
           String termText = terms.term().utf8ToString();
           tp = terms.docsAndPositions(delDocs, tp);
-          while(tp.nextDoc() != DocsEnum.NO_MORE_DOCS) {
+          while(tp.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
             int freq = tp.freq();
             for (int i = 0; i < freq; i++) {
               tp.nextPosition();

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestSnapshotDeletionPolicy.java Thu Dec  9 15:46:23 2010
@@ -83,18 +83,9 @@ public class TestSnapshotDeletionPolicy 
   
   @Test
   public void testSnapshotDeletionPolicy() throws Exception {
-    File dir = _TestUtil.getTempDir(INDEX_PATH);
-    try {
-      Directory fsDir = FSDirectory.open(dir);
-      runTest(random, fsDir);
-      fsDir.close();
-    } finally {
-      _TestUtil.rmDir(dir);
-    }
-
-    Directory dir2 = newDirectory();
-    runTest(random, dir2);
-    dir2.close();
+    Directory fsDir = newDirectory();
+    runTest(random, fsDir);
+    fsDir.close();
   }
 
   private void runTest(Random random, Directory dir) throws Exception {

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing.java Thu Dec  9 15:46:23 2010
@@ -163,17 +163,8 @@ public class TestStressIndexing extends 
     FSDirectory.
   */
   public void testStressIndexAndSearching() throws Exception {
-    // With ConcurrentMergeScheduler, in RAMDir
     Directory directory = newDirectory();
     runStressTest(directory, new ConcurrentMergeScheduler());
     directory.close();
-
-    // With ConcurrentMergeScheduler, in FSDir
-    File dirPath = _TestUtil.getTempDir("lucene.test.stress");
-    directory = FSDirectory.open(dirPath);
-    runStressTest(directory, new ConcurrentMergeScheduler());
-    directory.close();
-
-    _TestUtil.rmDir(dirPath);
   }
 }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing2.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing2.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing2.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestStressIndexing2.java Thu Dec  9 15:46:23 2010
@@ -74,7 +74,6 @@ public class TestStressIndexing2 extends
   
   public void testRandom() throws Throwable {
     Directory dir1 = newDirectory();
-    // dir1 = FSDirectory.open("foofoofoo");
     Directory dir2 = newDirectory();
     // mergeFactor=2; maxBufferedDocs=2; Map docs = indexRandom(1, 3, 2, dir1);
     int maxThreadStates = 1+random.nextInt(10);

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java Thu Dec  9 15:46:23 2010
@@ -141,12 +141,5 @@ public class TestThreadedOptimize extend
     runTest(random, directory, new SerialMergeScheduler());
     runTest(random, directory, new ConcurrentMergeScheduler());
     directory.close();
-
-    File dirName = new File(TEMP_DIR, "luceneTestThreadedOptimize");
-    directory = FSDirectory.open(dirName);
-    runTest(random, directory, new SerialMergeScheduler());
-    runTest(random, directory, new ConcurrentMergeScheduler());
-    directory.close();
-    _TestUtil.rmDir(dirName);
   }
 }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java Thu Dec  9 15:46:23 2010
@@ -502,7 +502,7 @@ public class MockDirectoryWrapper extend
   }
 
   @Override
-  public synchronized void setLockFactory(LockFactory lockFactory) {
+  public synchronized void setLockFactory(LockFactory lockFactory) throws IOException {
     maybeYield();
     delegate.setLockFactory(lockFactory);
   }

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestDirectory.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestDirectory.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestDirectory.java Thu Dec  9 15:46:23 2010
@@ -27,20 +27,14 @@ import java.util.Arrays;
 public class TestDirectory extends LuceneTestCase {
 
   public void testDetectClose() throws Throwable {
-    Directory dir = new RAMDirectory();
-    dir.close();
-    try {
-      dir.createOutput("test");
-      fail("did not hit expected exception");
-    } catch (AlreadyClosedException ace) {
-    }
-
-    dir = FSDirectory.open(TEMP_DIR);
-    dir.close();
-    try {
-      dir.createOutput("test");
-      fail("did not hit expected exception");
-    } catch (AlreadyClosedException ace) {
+    Directory[] dirs = new Directory[] { new RAMDirectory(), new SimpleFSDirectory(TEMP_DIR), new NIOFSDirectory(TEMP_DIR) };
+    for (Directory dir : dirs) {
+      dir.close();
+      try {
+        dir.createOutput("test");
+        fail("did not hit expected exception");
+      } catch (AlreadyClosedException ace) {
+      }
     }
   }
 
@@ -140,7 +134,7 @@ public class TestDirectory extends Lucen
 
   // LUCENE-1468
   public void testFSDirectoryFilter() throws IOException {
-    checkDirectoryFilter(FSDirectory.open(new File(TEMP_DIR,"test")));
+    checkDirectoryFilter(newFSDirectory(new File(TEMP_DIR,"test")));
   }
 
   // LUCENE-1468

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestLockFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestLockFactory.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestLockFactory.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestLockFactory.java Thu Dec  9 15:46:23 2010
@@ -145,15 +145,15 @@ public class TestLockFactory extends Luc
     }
 
     public void _testStressLocks(LockFactory lockFactory, File indexDir) throws Exception {
-        FSDirectory fs1 = FSDirectory.open(indexDir, lockFactory);
+        Directory dir = newFSDirectory(indexDir, lockFactory);
 
         // First create a 1 doc index:
-        IndexWriter w = new IndexWriter(fs1, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE));
+        IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE));
         addDoc(w);
         w.close();
 
-        WriterThread writer = new WriterThread(100, fs1);
-        SearcherThread searcher = new SearcherThread(100, fs1);
+        WriterThread writer = new WriterThread(100, dir);
+        SearcherThread searcher = new SearcherThread(100, dir);
         writer.start();
         searcher.start();
 
@@ -164,6 +164,7 @@ public class TestLockFactory extends Luc
         assertTrue("IndexWriter hit unexpected exceptions", !writer.hitException);
         assertTrue("IndexSearcher hit unexpected exceptions", !searcher.hitException);
 
+        dir.close();
         // Cleanup
         _TestUtil.rmDir(indexDir);
     }
@@ -234,9 +235,9 @@ public class TestLockFactory extends Luc
 
       File fdir1 = _TestUtil.getTempDir("TestLockFactory.8");
       File fdir2 = _TestUtil.getTempDir("TestLockFactory.8.Lockdir");
-      Directory dir1 = FSDirectory.open(fdir1, new NativeFSLockFactory(fdir1));
+      Directory dir1 = newFSDirectory(fdir1, new NativeFSLockFactory(fdir1));
       // same directory, but locks are stored somewhere else. The prefix of the lock factory should != null
-      Directory dir2 = FSDirectory.open(fdir1, new NativeFSLockFactory(fdir2));
+      Directory dir2 = newFSDirectory(fdir1, new NativeFSLockFactory(fdir2));
 
       String prefix1 = dir1.getLockFactory().getLockPrefix();
       assertNull("Lock prefix for lockDir same as directory should be null", prefix1);
@@ -244,6 +245,8 @@ public class TestLockFactory extends Luc
       String prefix2 = dir2.getLockFactory().getLockPrefix();
       assertNotNull("Lock prefix for lockDir outside of directory should be not null", prefix2);
 
+      dir1.close();
+      dir2.close();
       _TestUtil.rmDir(fdir1);
       _TestUtil.rmDir(fdir2);
     }
@@ -254,12 +257,13 @@ public class TestLockFactory extends Luc
 
       // Make sure we get null prefix:
       File dirName = _TestUtil.getTempDir("TestLockFactory.10");
-      Directory dir = FSDirectory.open(dirName);
+      Directory dir = newFSDirectory(dirName);
 
       String prefix = dir.getLockFactory().getLockPrefix();
 
       assertTrue("Default lock prefix should be null", null == prefix);
 
+      dir.close();
       _TestUtil.rmDir(dirName);
     }
 

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java Thu Dec  9 15:46:23 2010
@@ -51,7 +51,7 @@ public class TestRAMDirectory extends Lu
     super.setUp();
     indexDir = new File(TEMP_DIR, "RAMDirIndex");
     
-    Directory dir = FSDirectory.open(indexDir);
+    Directory dir = newFSDirectory(indexDir);
     IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(
         TEST_VERSION_CURRENT, new MockAnalyzer()).setOpenMode(OpenMode.CREATE));
     // add some documents
@@ -68,7 +68,7 @@ public class TestRAMDirectory extends Lu
   
   public void testRAMDirectory () throws IOException {
     
-    Directory dir = FSDirectory.open(indexDir);
+    Directory dir = newFSDirectory(indexDir);
     MockDirectoryWrapper ramDir = new MockDirectoryWrapper(random, new RAMDirectory(dir));
     
     // close the underlaying directory
@@ -100,7 +100,7 @@ public class TestRAMDirectory extends Lu
   
   public void testRAMDirectorySize() throws IOException, InterruptedException {
       
-    Directory dir = FSDirectory.open(indexDir);
+    Directory dir = newFSDirectory(indexDir);
     final MockDirectoryWrapper ramDir = new MockDirectoryWrapper(random, new RAMDirectory(dir));
     dir.close();
     

Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java Thu Dec  9 15:46:23 2010
@@ -51,6 +51,8 @@ import org.apache.lucene.search.BooleanQ
 import org.apache.lucene.search.FieldCache;
 import org.apache.lucene.search.FieldCache.CacheEntry;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.LockFactory;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
 import org.junit.*;
@@ -356,7 +358,17 @@ public abstract class LuceneTestCase ext
       for (MockDirectoryWrapper d : stores.keySet()) {
         if (d.isOpen()) {
           StackTraceElement elements[] = stores.get(d);
-          StackTraceElement element = (elements.length > 1) ? elements[1] : null;
+          // Look for the first class that is not LuceneTestCase that requested
+          // a Directory. The first two items are of Thread's, so skipping over
+          // them.
+          StackTraceElement element = null;
+          for (int i = 2; i < elements.length; i++) {
+            StackTraceElement ste = elements[i];
+            if (ste.getClassName().indexOf("LuceneTestCase") == -1) {
+              element = ste;
+              break;
+            }
+          }
           fail("directory of test was not closed, opened from: " + element);
         }
       }
@@ -705,7 +717,7 @@ public abstract class LuceneTestCase ext
   }
 
   /**
-   * Returns a new Dictionary instance. Use this when the test does not
+   * Returns a new Directory instance. Use this when the test does not
    * care about the specific Directory implementation (most tests).
    * <p>
    * The Directory is wrapped with {@link MockDirectoryWrapper}.
@@ -719,15 +731,14 @@ public abstract class LuceneTestCase ext
   }
   
   public static MockDirectoryWrapper newDirectory(Random r) throws IOException {
-    StackTraceElement[] stack = new Exception().getStackTrace();
     Directory impl = newDirectoryImpl(r, TEST_DIRECTORY);
     MockDirectoryWrapper dir = new MockDirectoryWrapper(r, impl);
-    stores.put(dir, stack);
+    stores.put(dir, Thread.currentThread().getStackTrace());
     return dir;
   }
   
   /**
-   * Returns a new Dictionary instance, with contents copied from the
+   * Returns a new Directory instance, with contents copied from the
    * provided directory. See {@link #newDirectory()} for more
    * information.
    */
@@ -735,14 +746,46 @@ public abstract class LuceneTestCase ext
     return newDirectory(random, d);
   }
   
+  /** Returns a new FSDirectory instance over the given file, which must be a folder. */
+  public static MockDirectoryWrapper newFSDirectory(File f) throws IOException {
+    return newFSDirectory(f, null);
+  }
+  
+  /** Returns a new FSDirectory instance over the given file, which must be a folder. */
+  public static MockDirectoryWrapper newFSDirectory(File f, LockFactory lf) throws IOException {
+    String fsdirClass = TEST_DIRECTORY;
+    if (fsdirClass.equals("random")) {
+      fsdirClass = FS_DIRECTORIES[random.nextInt(FS_DIRECTORIES.length)];
+    }
+    
+    if (fsdirClass.indexOf(".") == -1) {// if not fully qualified, assume .store
+      fsdirClass = "org.apache.lucene.store." + fsdirClass;
+    }
+    
+    Class<? extends FSDirectory> clazz;
+    try {
+      try {
+        clazz = Class.forName(fsdirClass).asSubclass(FSDirectory.class);
+      } catch (ClassCastException e) {
+        // TEST_DIRECTORY is not a sub-class of FSDirectory, so draw one at random
+        fsdirClass = FS_DIRECTORIES[random.nextInt(FS_DIRECTORIES.length)];
+        clazz = Class.forName(fsdirClass).asSubclass(FSDirectory.class);
+      }
+      MockDirectoryWrapper dir = new MockDirectoryWrapper(random, newFSDirectoryImpl(clazz, f, lf));
+      stores.put(dir, Thread.currentThread().getStackTrace());
+      return dir;
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    }
+  }
+  
   public static MockDirectoryWrapper newDirectory(Random r, Directory d) throws IOException {
-    StackTraceElement[] stack = new Exception().getStackTrace();
     Directory impl = newDirectoryImpl(r, TEST_DIRECTORY);
     for (String file : d.listAll()) {
      d.copy(impl, file, file);
     }
     MockDirectoryWrapper dir = new MockDirectoryWrapper(r, impl);
-    stores.put(dir, stack);
+    stores.put(dir, Thread.currentThread().getStackTrace());
     return dir;
   }
   
@@ -818,12 +861,16 @@ public abstract class LuceneTestCase ext
     }
   }
 
-  private static String CORE_DIRECTORIES[] = {
-    "RAMDirectory",
+  private static final String FS_DIRECTORIES[] = {
     "SimpleFSDirectory",
     "NIOFSDirectory",
     "MMapDirectory"
   };
+
+  private static final String CORE_DIRECTORIES[] = {
+    "RAMDirectory",
+    FS_DIRECTORIES[0], FS_DIRECTORIES[1], FS_DIRECTORIES[2]
+  };
   
   public static String randomDirectory(Random random) {
     if (random.nextInt(10) == 0) {
@@ -832,6 +879,23 @@ public abstract class LuceneTestCase ext
       return "RAMDirectory";
     }
   }
+
+  private static Directory newFSDirectoryImpl(
+      Class<? extends FSDirectory> clazz, File file, LockFactory lockFactory)
+      throws IOException {
+    try {
+      // Assuming every FSDirectory has a ctor(File), but not all may take a
+      // LockFactory too, so setting it afterwards.
+      Constructor<? extends FSDirectory> ctor = clazz.getConstructor(File.class);
+      FSDirectory d = ctor.newInstance(file);
+      if (lockFactory != null) {
+        d.setLockFactory(lockFactory);
+      }
+      return d;
+    } catch (Exception e) {
+      return FSDirectory.open(file);
+    }
+  }
   
   static Directory newDirectoryImpl(Random random, String clazzName) {
     if (clazzName.equals("random"))
@@ -840,27 +904,22 @@ public abstract class LuceneTestCase ext
       clazzName = "org.apache.lucene.store." + clazzName;
     try {
       final Class<? extends Directory> clazz = Class.forName(clazzName).asSubclass(Directory.class);
-      try {
-        // try empty ctor
-        return clazz.newInstance();
-      } catch (Exception e) {
+      // If it is a FSDirectory type, try its ctor(File)
+      if (FSDirectory.class.isAssignableFrom(clazz)) {
         final File tmpFile = File.createTempFile("test", "tmp", TEMP_DIR);
         tmpFile.delete();
         tmpFile.mkdir();
-        try {
-          Constructor<? extends Directory> ctor = clazz.getConstructor(File.class);
-          return ctor.newInstance(tmpFile);
-        } catch (Exception e2) {
-          // try .open(File)
-          Method method = clazz.getMethod("open", new Class[] { File.class });
-          return (Directory) method.invoke(null, tmpFile);
-        }
+        return newFSDirectoryImpl(clazz.asSubclass(FSDirectory.class), tmpFile, null);
       }
+
+      // try empty ctor
+      return clazz.newInstance();
     } catch (Exception e) {
       throw new RuntimeException(e);
     } 
   }
   
+
   public String getName() {
     return this.name;
   }
@@ -869,6 +928,7 @@ public abstract class LuceneTestCase ext
    * if a real file is needed. To get a stream, code should prefer
    * {@link Class#getResourceAsStream} using {@code this.getClass()}.
    */
+  
   protected File getDataFile(String name) throws IOException {
     try {
       return new File(this.getClass().getResource(name).toURI());
@@ -1014,17 +1074,20 @@ public abstract class LuceneTestCase ext
       Collections.shuffle(knownCodecs, random);
     }
 
+    @Override
     public synchronized void register(Codec codec) {
       if (!codec.name.equals("PreFlex"))
         knownCodecs.add(codec);
       super.register(codec);
     }
 
+    @Override
     public synchronized void unregister(Codec codec) {
       knownCodecs.remove(codec);
       super.unregister(codec);
     }
 
+    @Override
     public synchronized String getFieldCodec(String name) {
       Codec codec = previousMappings.get(name);
       if (codec == null) {
@@ -1034,6 +1097,7 @@ public abstract class LuceneTestCase ext
       return codec.name;
     }
     
+    @Override
     public String toString() {
       return "RandomCodecProvider: " + previousMappings.toString();
     }

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/core/AlternateDirectoryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/core/AlternateDirectoryTest.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/core/AlternateDirectoryTest.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/core/AlternateDirectoryTest.java Thu Dec  9 15:46:23 2010
@@ -42,14 +42,20 @@ public class AlternateDirectoryTest exte
     assertQ(req("q","*:*","qt","standard"));
     assertTrue(TestFSDirectoryFactory.openCalled);
     assertTrue(TestIndexReaderFactory.newReaderCalled);
+    TestFSDirectoryFactory.dir.close();
   }
 
   static public class TestFSDirectoryFactory extends DirectoryFactory {
     public static volatile boolean openCalled = false;
-
-    public FSDirectory open(String path) throws IOException {
+    public static volatile Directory dir;
+    
+    public Directory open(String path) throws IOException {
       openCalled = true;
-      return FSDirectory.open(new File(path));
+      // need to close the directory, or otherwise the test fails.
+      if (dir != null) {
+        dir.close();
+      }
+      return dir = newFSDirectory(new File(path));
     }
 
   }

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/core/TestArbitraryIndexDir.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/core/TestArbitraryIndexDir.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/core/TestArbitraryIndexDir.java Thu Dec  9 15:46:23 2010
@@ -97,7 +97,7 @@ public class TestArbitraryIndexDir exten
     }
 
     //add a doc in the new index dir
-    Directory dir = FSDirectory.open(newDir);
+    Directory dir = newFSDirectory(newDir);
     IndexWriter iw = new IndexWriter(
         dir,
         new IndexWriterConfig(Version.LUCENE_40, new StandardAnalyzer(Version.LUCENE_40)).
@@ -117,6 +117,7 @@ public class TestArbitraryIndexDir exten
         req("id:2"),
         "*[count(//doc)=1]"
     );
+    dir.close();
     newDir.delete();
   }
 }

Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java?rev=1044008&r1=1044007&r2=1044008&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java Thu Dec  9 15:46:23 2010
@@ -30,6 +30,7 @@ import org.apache.lucene.search.spell.Sp
 import org.apache.lucene.search.spell.StringDistance;
 import org.apache.lucene.search.spell.SuggestWord;
 import org.apache.lucene.search.spell.SuggestWordFrequencyComparator;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.util.NamedList;
@@ -284,8 +285,9 @@ public class IndexBasedSpellCheckerTest 
     File indexDir = new File(TEMP_DIR, "spellingIdx" + new Date().getTime());
     //create a standalone index
     File altIndexDir = new File(TEMP_DIR, "alternateIdx" + new Date().getTime());
+    Directory dir = newFSDirectory(altIndexDir);
     IndexWriter iw = new IndexWriter(
-        FSDirectory.open(altIndexDir),
+        dir,
         new IndexWriterConfig(TEST_VERSION_CURRENT, new WhitespaceAnalyzer(TEST_VERSION_CURRENT)).
             setMaxFieldLength(IndexWriterConfig.UNLIMITED_FIELD_LENGTH)
     );
@@ -296,6 +298,7 @@ public class IndexBasedSpellCheckerTest 
     }
     iw.optimize();
     iw.close();
+    dir.close();
     indexDir.mkdirs();
     spellchecker.add(AbstractLuceneSpellChecker.INDEX_DIR, indexDir.getAbsolutePath());
     spellchecker.add(AbstractLuceneSpellChecker.LOCATION, altIndexDir.getAbsolutePath());