diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2020-05-13 13:23:54 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2020-05-13 13:23:54 +0200 |
commit | bc9ef59674aba48a793c3efc18983cccf21bb651 (patch) | |
tree | f18e1b805f8736d99ca074b63fbe00f5e93defaa /vespajlib/src/main/java/com/yahoo/slime | |
parent | 41d4cea790f4779b2b64565b98664c18a13032f1 (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.java | 21 |
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); + } } |