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() {