Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 36897 invoked from network); 7 Jan 2008 21:16:13 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 7 Jan 2008 21:16:13 -0000 Received: (qmail 44845 invoked by uid 500); 7 Jan 2008 21:16:02 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 44827 invoked by uid 500); 7 Jan 2008 21:16:02 -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 44816 invoked by uid 99); 7 Jan 2008 21:16:02 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Jan 2008 13:16:02 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Jan 2008 21:15:57 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B3CC51A9897; Mon, 7 Jan 2008 13:15:49 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r609780 - in /lucene/java/trunk: CHANGES.txt src/java/org/apache/lucene/index/SegmentTermEnum.java src/test/org/apache/lucene/index/TestSegmentTermEnum.java Date: Mon, 07 Jan 2008 21:15:49 -0000 To: java-commits@lucene.apache.org From: mikemccand@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080107211549.B3CC51A9897@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mikemccand Date: Mon Jan 7 13:15:48 2008 New Revision: 609780 URL: http://svn.apache.org/viewvc?rev=609780&view=rev Log: LUCENE-508: make sure SegmentTermEnum.prev() is accurate (= last term) after next() returns false Modified: lucene/java/trunk/CHANGES.txt lucene/java/trunk/src/java/org/apache/lucene/index/SegmentTermEnum.java lucene/java/trunk/src/test/org/apache/lucene/index/TestSegmentTermEnum.java Modified: lucene/java/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=609780&r1=609779&r2=609780&view=diff ============================================================================== --- lucene/java/trunk/CHANGES.txt (original) +++ lucene/java/trunk/CHANGES.txt Mon Jan 7 13:15:48 2008 @@ -213,7 +213,11 @@ 28. LUCENE-749: ChainedFilter behavior fixed when logic of first filter is ANDNOT. (Antonio Bruno via Doron Cohen) - + +29. LUCENE-508: Make sure SegmentTermEnum.prev() is accurate (= last + term) after next() returns false. (Steven Tamm via Mike + McCandless) + New features Modified: lucene/java/trunk/src/java/org/apache/lucene/index/SegmentTermEnum.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/SegmentTermEnum.java?rev=609780&r1=609779&r2=609780&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/index/SegmentTermEnum.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/index/SegmentTermEnum.java Mon Jan 7 13:15:48 2008 @@ -114,6 +114,7 @@ /** Increments the enumeration to the next element. True if one exists.*/ public final boolean next() throws IOException { if (position++ >= size - 1) { + prevBuffer.set(termBuffer); termBuffer.reset(); return false; } Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestSegmentTermEnum.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestSegmentTermEnum.java?rev=609780&r1=609779&r2=609780&view=diff ============================================================================== --- lucene/java/trunk/src/test/org/apache/lucene/index/TestSegmentTermEnum.java (original) +++ lucene/java/trunk/src/test/org/apache/lucene/index/TestSegmentTermEnum.java Mon Jan 7 13:15:48 2008 @@ -30,6 +30,7 @@ import org.apache.lucene.index.TermEnum; import org.apache.lucene.store.Directory; import org.apache.lucene.store.RAMDirectory; +import org.apache.lucene.store.MockRAMDirectory; /** * @author goller @@ -64,6 +65,23 @@ // verify document frequency of terms in an optimized index verifyDocFreq(); + } + + public void testPrevTermAtEnd() throws IOException + { + Directory dir = new MockRAMDirectory(); + IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), true); + addDoc(writer, "aaa bbb"); + writer.close(); + IndexReader reader = IndexReader.open(dir); + SegmentTermEnum termEnum = (SegmentTermEnum) reader.terms(); + assertTrue(termEnum.next()); + assertEquals("aaa", termEnum.term().text()); + assertTrue(termEnum.next()); + assertEquals("aaa", termEnum.prev().text()); + assertEquals("bbb", termEnum.term().text()); + assertFalse(termEnum.next()); + assertEquals("bbb", termEnum.prev().text()); } private void verifyDocFreq()