summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-06-21 10:49:45 +0200
committerMartin Polden <mpolden@mpolden.no>2021-06-21 10:51:37 +0200
commitf114987a1a83b2f3c23270bd2c74ba642a35af11 (patch)
treec0287088f52119641af9c9167d9c8fdcb0435c70 /vespajlib
parent9a89544b1b33b0a0ef11c2d8e9be37b9b45145cf (diff)
Move helper methods to SlimeUtils
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java41
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);
}
+
}