You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by ca...@apache.org on 2011/09/01 09:57:36 UTC

svn commit: r1163930 - in /incubator/jena/Jena2/ARQ/trunk: src-test/org/openjena/atlas/iterator/TestIter.java src/org/openjena/atlas/iterator/Iter.java

Author: castagna
Date: Thu Sep  1 07:57:36 2011
New Revision: 1163930

URL: http://svn.apache.org/viewvc?rev=1163930&view=rev
Log:
JENA-107 - Patch applied. Thanks Stephen.

Modified:
    incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/iterator/TestIter.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/iterator/Iter.java

Modified: incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/iterator/TestIter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/iterator/TestIter.java?rev=1163930&r1=1163929&r2=1163930&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/iterator/TestIter.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/iterator/TestIter.java Thu Sep  1 07:57:36 2011
@@ -23,6 +23,7 @@ public class TestIter
     List<String> data0 = new ArrayList<String>() ;
     List<String> data1 = Arrays.asList("a") ;
     List<String> data2 = Arrays.asList("x","y","z") ;
+    List<String> data3 = Arrays.asList(null, "x", null, null, null, "y", "z", null);
  
     @Test
     public void append_1()
@@ -213,6 +214,40 @@ public class TestIter
         List<String> data = Arrays.asList( "11", "AA", "BB", "CC") ;
         assertEquals(-1, Iter.firstIndex(data, filter)) ;
     }
+    
+    @Test
+    public void filter_01()
+    {
+        test(Iter.removeNulls(data3), "x", "y", "z");
+    }
+    
+    @Test
+    public void filter_02()
+    {
+        Iterator<String> it = Iter.filter(data3, new Filter<String>()
+        {
+            public boolean accept(String item)
+            {
+                return "x".equals(item) || "z".equals(item) ;
+            }
+        });
+        
+        test(it, "x", "z");
+    }
+    
+    @Test
+    public void filter_03()
+    {
+        Iterator<String> it = Iter.filter(data3, new Filter<String>()
+        {
+            public boolean accept(String item)
+            {
+                return (null == item) || "x".equals(item) ;
+            }
+        });
+        
+        test(it, null, "x", null, null, null, null);
+    }
 }
 
 /*

Modified: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/iterator/Iter.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/iterator/Iter.java?rev=1163930&r1=1163929&r2=1163930&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/iterator/Iter.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/iterator/Iter.java Thu Sep  1 07:57:36 2011
@@ -141,13 +141,14 @@ public class Iter<T> implements Iterable
         final Iterator<T> iter = new Iterator<T>(){
             
             boolean finished = false ; 
+            boolean slotOccupied = false ;
             T slot ;
             
             public boolean hasNext()
             {
                 if ( finished )
                     return false ; 
-                while ( slot == null )
+                while ( ! slotOccupied )
                 {
                     if ( ! stream.hasNext() )
                     { 
@@ -158,19 +159,19 @@ public class Iter<T> implements Iterable
                     if ( filter.accept(nextItem) )
                     { 
                         slot = nextItem ;
+                        slotOccupied = true;
                         break ;
                     }
                 }
-                return slot != null ;
+                return slotOccupied ;
             }
     
             public T next()
             {
                 if ( hasNext() )
                 {
-                    T returnValue = slot ;
-                    slot = null ;
-                    return returnValue ;
+                    slotOccupied = false ;
+                    return slot ;
                 }
                 throw new NoSuchElementException("filter.next") ;
             }