diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2022-10-27 17:07:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-27 17:07:38 +0200 |
commit | d92a557986032c9fdf98f0ee76263b6baa5d7635 (patch) | |
tree | cea23c41ba61dfff45ca1ac3e0a91512421ddc8c /vespajlib | |
parent | 5436fcb54be30fc9b2eb2457332307fb1d631042 (diff) | |
parent | 170f6d98a806b77827538697171d70a180278972 (diff) |
Merge pull request #24615 from vespa-engine/hakonhall/coresapihandler
Add some String utils in SlimeUtils
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/io/IOUtils.java | 2 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java | 88 |
2 files changed, 36 insertions, 54 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/io/IOUtils.java b/vespajlib/src/main/java/com/yahoo/io/IOUtils.java index 81e1306b29e..699ac22d278 100644 --- a/vespajlib/src/main/java/com/yahoo/io/IOUtils.java +++ b/vespajlib/src/main/java/com/yahoo/io/IOUtils.java @@ -413,7 +413,7 @@ public abstract class IOUtils { /** Read an input stream completely into a string */ public static String readAll(InputStream stream, Charset charset) throws IOException { - return readAll(new InputStreamReader(stream, charset)); + return new String(stream.readAllBytes(), charset); } /** Convenience method for closing a list of readers. Does nothing if the given reader list is null. */ diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java index c36b001d056..c2e11be34be 100644 --- a/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java +++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeUtils.java @@ -3,6 +3,7 @@ package com.yahoo.slime; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.time.Instant; @@ -16,6 +17,8 @@ import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.StreamSupport; +import static com.yahoo.yolean.Exceptions.uncheck; + /** * Extra utilities/operations on slime trees. * @@ -31,34 +34,16 @@ public class SlimeUtils { } - private static void setObjectEntry(Inspector from, String name, Cursor to) { + public static void setObjectEntry(Inspector from, String name, Cursor to) { switch (from.type()) { - case NIX: - to.setNix(name); - break; - case BOOL: - to.setBool(name, from.asBool()); - break; - case LONG: - to.setLong(name, from.asLong()); - break; - case DOUBLE: - to.setDouble(name, from.asDouble()); - break; - case STRING: - to.setString(name, from.asString()); - break; - case DATA: - to.setData(name, from.asData()); - break; - case ARRAY: - Cursor array = to.setArray(name); - copyArray(from, array); - break; - case OBJECT: - Cursor object = to.setObject(name); - copyObject(from, object); - break; + case NIX -> to.setNix(name); + case BOOL -> to.setBool(name, from.asBool()); + case LONG -> to.setLong(name, from.asLong()); + case DOUBLE -> to.setDouble(name, from.asDouble()); + case STRING -> to.setString(name, from.asString()); + case DATA -> to.setData(name, from.asData()); + case ARRAY -> copyArray(from, to.setArray(name)); + case OBJECT -> copyObject(from, to.setObject(name)); } } @@ -71,32 +56,14 @@ public class SlimeUtils { private static void addValue(Inspector from, Cursor to) { switch (from.type()) { - case NIX: - to.addNix(); - break; - case BOOL: - to.addBool(from.asBool()); - break; - case LONG: - to.addLong(from.asLong()); - break; - case DOUBLE: - to.addDouble(from.asDouble()); - break; - case STRING: - to.addString(from.asString()); - break; - case DATA: - to.addData(from.asData()); - break; - case ARRAY: - Cursor array = to.addArray(); - copyArray(from, array); - break; - case OBJECT: - Cursor object = to.addObject(); - copyObject(from, object); - break; + case NIX -> to.addNix(); + case BOOL -> to.addBool(from.asBool()); + case LONG -> to.addLong(from.asLong()); + case DOUBLE -> to.addDouble(from.asDouble()); + case STRING -> to.addString(from.asString()); + case DATA -> to.addData(from.asData()); + case ARRAY -> copyArray(from, to.addArray()); + case OBJECT -> copyObject(from, to.addObject()); } } @@ -115,6 +82,21 @@ public class SlimeUtils { return baos.toByteArray(); } + public static String toJson(Slime slime) { + return toJson(slime.get()); + } + + public static String toJson(Inspector inspector) { + return toJson(inspector, true); + } + + public static String toJson(Inspector inspector, boolean compact) { + var outputStream = new ByteArrayOutputStream(); + var jsonFormat = new JsonFormat(compact ? 0 : 2); + uncheck(() -> jsonFormat.encode(outputStream, inspector)); + return outputStream.toString(StandardCharsets.UTF_8); + } + public static Slime jsonToSlime(byte[] json) { Slime slime = new Slime(); new JsonDecoder().decode(slime, json); |