From f3110de1306659b6cd70a318a1070a28fefc680e Mon Sep 17 00:00:00 2001 From: qza Date: Thu, 2 Jun 2016 07:32:48 +0200 Subject: [PATCH] #355 handle case when there are no child elements for the given key --- .../com/iluwatar/abstractdocument/AbstractDocument.java | 7 ++++--- .../iluwatar/abstractdocument/AbstractDocumentTest.java | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) 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()); + } + }