You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/08/19 10:45:25 UTC

svn commit: r1374710 - /lucene/dev/branches/lucene3312/lucene/core/src/java/org/apache/lucene/util/FilterIterator.java

Author: uschindler
Date: Sun Aug 19 08:45:25 2012
New Revision: 1374710

URL: http://svn.apache.org/viewvc?rev=1374710&view=rev
Log:
LUCENE-3312: Small refctoring and final field

Modified:
    lucene/dev/branches/lucene3312/lucene/core/src/java/org/apache/lucene/util/FilterIterator.java

Modified: lucene/dev/branches/lucene3312/lucene/core/src/java/org/apache/lucene/util/FilterIterator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/lucene/core/src/java/org/apache/lucene/util/FilterIterator.java?rev=1374710&r1=1374709&r2=1374710&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/lucene/core/src/java/org/apache/lucene/util/FilterIterator.java (original)
+++ lucene/dev/branches/lucene3312/lucene/core/src/java/org/apache/lucene/util/FilterIterator.java Sun Aug 19 08:45:25 2012
@@ -22,41 +22,40 @@ import java.util.NoSuchElementException;
 
 public abstract class FilterIterator<T> implements Iterator<T> {
   
-  private Iterator<T> iterator;
+  private final Iterator<T> iterator;
   private T next = null;
   private boolean nextIsSet = false;
   
-  protected abstract boolean predicateFunction(T field);
+  protected abstract boolean predicateFunction(T object);
   
   public FilterIterator(Iterator<T> baseIterator) {
     this.iterator = baseIterator;
   }
   
-  public boolean hasNext() {
-    if (nextIsSet) {
-      return true;
-    } else {
-      return setNext();
-    }
+  public final boolean hasNext() {
+    return nextIsSet || setNext();
   }
   
-  public T next() {
-    if (!nextIsSet) {
-      if (!setNext()) {
-        throw new NoSuchElementException();
-      }
+  public final T next() {
+    if (!hasNext()) {
+      throw new NoSuchElementException();
+    }
+    assert nextIsSet;
+    try {
+      return next;
+    } finally {
+      nextIsSet = false;
+      next = null;
     }
-    nextIsSet = false;
-    return next;
   }
   
-  public void remove() {
+  public final void remove() {
     throw new UnsupportedOperationException();
   }
   
   private boolean setNext() {
     while (iterator.hasNext()) {
-      T object = iterator.next();
+      final T object = iterator.next();
       if (predicateFunction(object)) {
         next = object;
         nextIsSet = true;