diff --git a/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java b/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java index c3f8e2a4b..f5ef69e3c 100644 --- a/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java +++ b/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java @@ -3,6 +3,7 @@ package com.iluwatar.abstractdocument; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.function.Function; import java.util.stream.Stream; @@ -28,11 +29,11 @@ public abstract class AbstractDocument implements Document { @Override public Stream children(String key, Function, T> constructor) { - return Stream.of(get(key)) + Optional>> any = Stream.of(get(key)) .filter(el -> el != null) .map(el -> (List>) el) - .findAny().get().stream() - .map(constructor); + .findAny(); + return any.isPresent() ? any.get().stream().map(constructor) : Stream.empty(); } @Override diff --git a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java index 43585d853..baf872e4f 100644 --- a/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java +++ b/abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java @@ -29,7 +29,6 @@ public class AbstractDocumentTest { public void shouldPutAndGetValue() { document.put(KEY, VALUE); assertEquals(VALUE, document.get(KEY)); - System.out.println(document); } @Test @@ -45,4 +44,11 @@ public class AbstractDocumentTest { assertEquals(2, childrenStream.count()); } + @Test + public void shouldRetrieveEmptyStreamForNonExistinChildren() { + Stream children = document.children(KEY, DocumentImplementation::new); + assertNotNull(children); + assertEquals(0, children.count()); + } + }