lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Volodymyr Bychkoviak <vbychkov...@i-hypergrid.com>
Subject MultiReader.isCurrent() wrong behavior
Date Wed, 30 Aug 2006 15:16:44 GMT
if MultiReader is constructed from array of subreaders (using publis 
constructor) then calling isCurrent() method will throw 
NullPointerException.

Testcase is attached below:
//-begin -----TestMultiReaderIsCurrent.java ----------
package org.apache.lucene.index;

import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;

import junit.framework.TestCase;

public class TestMultiReaderIsCurrent extends TestCase {

  private Directory dir1 = new RAMDirectory();

  private Directory dir2 = new RAMDirectory();

  public void testIsCurrent() throws IOException {
    addDocument(dir1, "test1", true);
    addDocument(dir2, "test2", true);

    IndexReader ir1 = IndexReader.open(dir1);
    IndexReader ir2 = IndexReader.open(dir2);

    IndexReader mr = new MultiReader(new IndexReader[] {ir1, ir2});

    assertTrue("should be true", ir1.isCurrent());
    assertTrue("should be true", ir2.isCurrent());

    try {
      assertTrue("should be true", mr.isCurrent());
    } catch (RuntimeException e) {
      fail("no exception should be thrown: " + e.toString());
    }

    addDocument(dir1, "test3", false);

    assertFalse("should be false", ir1.isCurrent());
    assertTrue("should be true", ir2.isCurrent());

    try {
      assertFalse("should false", mr.isCurrent());
    } catch (RuntimeException e) {
      fail("no exception should be thrown: " + e.toString());
    }
  }

  private void addDocument(Directory dir12, String string, boolean 
create) throws IOException {
    IndexWriter iw = new IndexWriter(dir12, new StandardAnalyzer(), create);
    Document document = new Document();
    document.add(new Field("data", string, Store.YES, Index.TOKENIZED));
    iw.addDocument(document);
    iw.close();
  }

}
//-end -----TestMultiReaderIsCurrent.java ----------

-- 
regards,
Volodymyr Bychkoviak


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message