diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-06-21 10:49:45 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-06-21 10:51:37 +0200 |
commit | f114987a1a83b2f3c23270bd2c74ba642a35af11 (patch) | |
tree | c0287088f52119641af9c9167d9c8fdcb0435c70 /vespajlib | |
parent | 9a89544b1b33b0a0ef11c2d8e9be37b9b45145cf (diff) |
Move helper methods to SlimeUtils
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java index 144a9a585f6..4a53d70ff38 100644 --- a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java +++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java @@ -4,8 +4,13 @@ package com.yahoo.slime; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.time.Instant; import java.util.Iterator; import java.util.Optional; +import java.util.OptionalDouble; +import java.util.OptionalInt; +import java.util.OptionalLong; import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Stream; @@ -57,7 +62,7 @@ public class SlimeUtils { } } - private static void copyArray(Inspector from, final Cursor to) { + private static void copyArray(Inspector from, Cursor to) { from.traverse((ArrayTraverser) (i, inspector) -> addValue(inspector, to)); } @@ -124,15 +129,32 @@ public class SlimeUtils { return slime; } + public static Instant instant(Inspector field) { + return Instant.ofEpochMilli(field.asLong()); + } + public static Optional<String> optionalString(Inspector inspector) { return Optional.of(inspector.asString()).filter(s -> !s.isEmpty()); } - public static Optional<Long> optionalLong(Inspector inspector) { - if (inspector.type() == Type.LONG) { - return Optional.of(inspector.asLong()); - } - return Optional.empty(); + public static OptionalLong optionalLong(Inspector field) { + return field.valid() ? OptionalLong.of(field.asLong()) : OptionalLong.empty(); + } + + public static OptionalInt optionalInteger(Inspector field) { + return field.valid() ? OptionalInt.of((int) field.asLong()) : OptionalInt.empty(); + } + + public static OptionalDouble optionalDouble(Inspector field) { + return field.valid() ? OptionalDouble.of(field.asDouble()) : OptionalDouble.empty(); + } + + public static Optional<Instant> optionalInstant(Inspector field) { + return optionalLong(field).stream().mapToObj(Instant::ofEpochMilli).findFirst(); + } + + public static Optional<Duration> optionalDuration(Inspector field) { + return optionalLong(field).stream().mapToObj(Duration::ofMillis).findFirst(); } public static Iterator<Inspector> entriesIterator(Inspector inspector) { @@ -146,8 +168,9 @@ public class SlimeUtils { /** 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); + return StreamSupport.stream(Spliterators.spliteratorUnknownSize(entriesIterator(inspector), + characteristics), + false); } + } |