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") ;
}