aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/slime
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2020-05-13 13:23:54 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2020-05-13 13:23:54 +0200
commitbc9ef59674aba48a793c3efc18983cccf21bb651 (patch)
treef18e1b805f8736d99ca074b63fbe00f5e93defaa /vespajlib/src/main/java/com/yahoo/slime
parent41d4cea790f4779b2b64565b98664c18a13032f1 (diff)
Add method to convert Slime array to Stream
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/slime')
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java
index 2ed7331a60c..5084e6554cb 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java
@@ -4,7 +4,12 @@ package com.yahoo.slime;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.Iterator;
import java.util.Optional;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
/**
* Extra utilities/operations on slime trees.
@@ -118,4 +123,20 @@ public class SlimeUtils {
public static Optional<String> optionalString(Inspector inspector) {
return Optional.of(inspector.asString()).filter(s -> !s.isEmpty());
}
+
+ public static Iterator<Inspector> entriesIterator(Inspector inspector) {
+ return new Iterator<>() {
+ private int current = 0;
+ @Override public boolean hasNext() { return current < inspector.entries(); }
+ @Override public Inspector next() { return inspector.entry(current++); }
+ };
+ }
+
+ /** Returns stream of entries for given inspector. If the inspector is not an array, empty stream is returned */
+ public static Stream<Inspector> entriesStream(Inspector inspector) {
+ int characteristics = Spliterator.NONNULL | Spliterator.SIZED | Spliterator.ORDERED;
+ return StreamSupport.stream(
+ Spliterators.spliteratorUnknownSize(entriesIterator(inspector), characteristics),
+ false);
+ }
}