Add utility method to convert an Optional to a Stream
Change-Id: Ibc77d9bd7fc5232af01abc9b590a62801f13d65f
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index 61b1a8e..9bc6436 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -39,6 +39,7 @@
import java.util.Collection;
import java.util.Dictionary;
import java.util.List;
+import java.util.Optional;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -583,6 +584,17 @@
return StreamSupport.stream(it.spliterator(), false);
}
+ /**
+ * Converts an optional to a stream.
+ *
+ * @param optional optional to convert
+ * @param <T> type of enclosed value
+ * @return optional as a stream
+ */
+ public static <T> Stream<T> stream(Optional<T> optional) {
+ return optional.map(Stream::of).orElse(Stream.empty());
+ }
+
// Auxiliary path visitor for recursive directory structure copying.
private static class DirectoryCopier extends SimpleFileVisitor<Path> {
private Path src;