diff --git a/pom.xml b/pom.xml index 81fede3..259a8df 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ org.gcube.data.access streams - 2.0.0-SNAPSHOT + 2.0.1-SNAPSHOT Stream Library diff --git a/src/main/java/org/gcube/data/streams/LookAheadStream.java b/src/main/java/org/gcube/data/streams/LookAheadStream.java index 532f4b0..a1fc3ea 100644 --- a/src/main/java/org/gcube/data/streams/LookAheadStream.java +++ b/src/main/java/org/gcube/data/streams/LookAheadStream.java @@ -25,9 +25,18 @@ public abstract class LookAheadStream implements Stream { private FaultHandler handler = new RethrowHandler(); + private static class NullOr { + T element; + NullOr(T element) { + this.element=element; + } + T value() { + return element; + } + } // iteration state protected Boolean hasNext; - protected E element; + protected NullOr element; private RuntimeException failure; /** @@ -63,7 +72,7 @@ public abstract class LookAheadStream implements Stream { return false; try { - this.element = delegateNext(); + this.element = new NullOr(delegateNext()); return true; } catch (RuntimeException failure) { @@ -113,7 +122,7 @@ public abstract class LookAheadStream implements Stream { else throw new NoSuchElementException(); - return element; + return element.value(); } diff --git a/src/main/java/org/gcube/data/streams/test/Utils.java b/src/main/java/org/gcube/data/streams/test/Utils.java index 2cf3e66..3cb48e3 100644 --- a/src/main/java/org/gcube/data/streams/test/Utils.java +++ b/src/main/java/org/gcube/data/streams/test/Utils.java @@ -116,8 +116,7 @@ public class Utils { //consume while (stream.hasNext()) try { - if (stream.next()==null) - throw new AssertionError("hasNext() returns true but next() returns null"); + stream.next(); } catch(RuntimeException e) { //ignore exceptions for this test diff --git a/src/test/java/org/gcube/data/streams/RsStreamTest.java b/src/test/java/org/gcube/data/streams/RsStreamTest.java index 44ee762..a826bc9 100644 --- a/src/test/java/org/gcube/data/streams/RsStreamTest.java +++ b/src/test/java/org/gcube/data/streams/RsStreamTest.java @@ -25,7 +25,7 @@ public class RsStreamTest { @Test public void resultsetsMakeValidStreams() throws Exception { - final List elements = asList("1","2","3"); + final List elements = asList("1",null,"3"); StreamProvider provider = new StreamProvider() {