Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 51070 invoked from network); 8 Jan 2009 09:29:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 Jan 2009 09:29:04 -0000 Received: (qmail 61072 invoked by uid 500); 8 Jan 2009 09:29:04 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 60976 invoked by uid 500); 8 Jan 2009 09:29:04 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 60967 invoked by uid 99); 8 Jan 2009 09:29:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Jan 2009 01:29:04 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Jan 2009 09:29:03 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 04DBC238895D; Thu, 8 Jan 2009 01:28:43 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Thu, 08 Jan 2009 09:28:42 -0000 To: java-commits@lucene.apache.org From: kalle@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090108092843.04DBC238895D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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();