You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by ka...@apache.org on 2009/01/08 10:28:42 UTC
svn commit: r732661 - in /lucene/java/trunk/contrib: CHANGES.txt
instantiated/src/java/org/apache/lucene/store/instantiated/InstantiatedIndexReader.java
instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java
Author: kalle
Date: Thu Jan 8 01:28:42 2009
New Revision: 732661
URL: http://svn.apache.org/viewvc?rev=732661&view=rev
Log:
LUCENE-1510
InstantiatedIndexReader#norms methods throws NullPointerException on empty index.
Modified:
lucene/java/trunk/contrib/CHANGES.txt
lucene/java/trunk/contrib/instantiated/src/java/org/apache/lucene/store/instantiated/InstantiatedIndexReader.java
lucene/java/trunk/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java
Modified: lucene/java/trunk/contrib/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/CHANGES.txt?rev=732661&r1=732660&r2=732661&view=diff
==============================================================================
--- lucene/java/trunk/contrib/CHANGES.txt (original)
+++ lucene/java/trunk/contrib/CHANGES.txt Thu Jan 8 01:28:42 2009
@@ -19,6 +19,9 @@
same way IndexWriter does. Parts of InstantiatedIndex was not Serializable.
(Karl Wettin)
+ 3. LUCENE-1510: InstantiatedIndexReader#norms methods throws NullPointerException on empty index.
+ (Karl Wettin, Robert Newson)
+
New features
1. LUCENE-1470: Added TrieRangeQuery, a much faster implementation of
Modified: lucene/java/trunk/contrib/instantiated/src/java/org/apache/lucene/store/instantiated/InstantiatedIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/instantiated/src/java/org/apache/lucene/store/instantiated/InstantiatedIndexReader.java?rev=732661&r1=732660&r2=732661&view=diff
==============================================================================
--- lucene/java/trunk/contrib/instantiated/src/java/org/apache/lucene/store/instantiated/InstantiatedIndexReader.java (original)
+++ lucene/java/trunk/contrib/instantiated/src/java/org/apache/lucene/store/instantiated/InstantiatedIndexReader.java Thu Jan 8 01:28:42 2009
@@ -280,6 +280,9 @@
*/
public byte[] norms(String field) throws IOException {
byte[] norms = getIndex().getNormsByFieldNameAndDocumentNumber().get(field);
+ if (norms == null) {
+ return new byte[0]; // todo a static final zero length attribute?
+ }
if (updatedNormsByFieldNameAndDocumentNumber != null) {
norms = norms.clone();
List<NormUpdate> updated = updatedNormsByFieldNameAndDocumentNumber.get(field);
@@ -294,6 +297,9 @@
public void norms(String field, byte[] bytes, int offset) throws IOException {
byte[] norms = getIndex().getNormsByFieldNameAndDocumentNumber().get(field);
+ if (norms == null) {
+ return;
+ }
System.arraycopy(norms, 0, bytes, offset, norms.length);
}
Modified: lucene/java/trunk/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java?rev=732661&r1=732660&r2=732661&view=diff
==============================================================================
--- lucene/java/trunk/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java (original)
+++ lucene/java/trunk/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestEmptyIndex.java Thu Jan 8 01:28:42 2009
@@ -17,16 +17,19 @@
package org.apache.lucene.store.instantiated;
import junit.framework.TestCase;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.TopDocCollector;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
-import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TopDocCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
+import java.util.Arrays;
+import java.io.IOException;
+
public class TestEmptyIndex extends TestCase {
public void testSearch() throws Exception {
@@ -47,6 +50,38 @@
}
+ public void testNorms() throws Exception {
+
+ InstantiatedIndex ii = new InstantiatedIndex();
+ IndexReader r = new InstantiatedIndexReader(ii);
+ testNorms(r);
+ r.close();
+ ii.close();
+
+ // make sure a Directory acts the same
+
+ Directory d = new RAMDirectory();
+ new IndexWriter(d, null, true, IndexWriter.MaxFieldLength.UNLIMITED).close();
+ r = IndexReader.open(d);
+ testNorms(r);
+ r.close();
+ d.close();
+
+ }
+
+ private void testNorms(IndexReader r) throws IOException {
+ byte[] norms;
+ norms = r.norms("foo");
+ assertNotNull(norms);
+ assertEquals(0, norms.length);
+ norms = new byte[10];
+ Arrays.fill(norms, (byte)10);
+ r.norms("foo", norms, 10);
+ for (byte b : norms) {
+ assertEquals((byte)10, b);
+ }
+ }
+
public void testTermEnum() throws Exception {
InstantiatedIndex ii = new InstantiatedIndex();