merged from trunk @62336
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/branches/data-access/streams/2.0@67188 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
83641cc478
commit
b42309a2f9
2
pom.xml
2
pom.xml
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
<groupId>org.gcube.data.access</groupId>
|
<groupId>org.gcube.data.access</groupId>
|
||||||
<artifactId>streams</artifactId>
|
<artifactId>streams</artifactId>
|
||||||
<version>2.0.0-SNAPSHOT</version>
|
<version>2.0.1-SNAPSHOT</version>
|
||||||
|
|
||||||
|
|
||||||
<name>Stream Library</name>
|
<name>Stream Library</name>
|
||||||
|
|
|
@ -25,9 +25,18 @@ public abstract class LookAheadStream<E> implements Stream<E> {
|
||||||
|
|
||||||
private FaultHandler handler = new RethrowHandler();
|
private FaultHandler handler = new RethrowHandler();
|
||||||
|
|
||||||
|
private static class NullOr<T> {
|
||||||
|
T element;
|
||||||
|
NullOr(T element) {
|
||||||
|
this.element=element;
|
||||||
|
}
|
||||||
|
T value() {
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
}
|
||||||
// iteration state
|
// iteration state
|
||||||
protected Boolean hasNext;
|
protected Boolean hasNext;
|
||||||
protected E element;
|
protected NullOr<E> element;
|
||||||
private RuntimeException failure;
|
private RuntimeException failure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,7 +72,7 @@ public abstract class LookAheadStream<E> implements Stream<E> {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.element = delegateNext();
|
this.element = new NullOr<E>(delegateNext());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (RuntimeException failure) {
|
catch (RuntimeException failure) {
|
||||||
|
@ -113,7 +122,7 @@ public abstract class LookAheadStream<E> implements Stream<E> {
|
||||||
else
|
else
|
||||||
throw new NoSuchElementException();
|
throw new NoSuchElementException();
|
||||||
|
|
||||||
return element;
|
return element.value();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,8 +116,7 @@ public class Utils {
|
||||||
//consume
|
//consume
|
||||||
while (stream.hasNext())
|
while (stream.hasNext())
|
||||||
try {
|
try {
|
||||||
if (stream.next()==null)
|
stream.next();
|
||||||
throw new AssertionError("hasNext() returns true but next() returns null");
|
|
||||||
}
|
}
|
||||||
catch(RuntimeException e) {
|
catch(RuntimeException e) {
|
||||||
//ignore exceptions for this test
|
//ignore exceptions for this test
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class RsStreamTest {
|
||||||
@Test
|
@Test
|
||||||
public void resultsetsMakeValidStreams() throws Exception {
|
public void resultsetsMakeValidStreams() throws Exception {
|
||||||
|
|
||||||
final List<String> elements = asList("1","2","3");
|
final List<String> elements = asList("1",null,"3");
|
||||||
|
|
||||||
StreamProvider provider = new StreamProvider() {
|
StreamProvider provider = new StreamProvider() {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue