diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java b/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java index 692de3e6cef..e02bb8da8c0 100644 --- a/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java +++ b/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java @@ -2,13 +2,11 @@ package com.yahoo.search.logging; -import com.fasterxml.jackson.core.JsonEncoding; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; import com.yahoo.search.Query; -import com.yahoo.slime.JsonDecoder; +import com.yahoo.slime.Cursor; import com.yahoo.slime.Slime; -import java.io.ByteArrayOutputStream; +import com.yahoo.slime.SlimeUtils; +import com.yahoo.text.Utf8; import java.io.IOException; import java.io.UncheckedIOException; import java.nio.ByteBuffer; @@ -52,37 +50,30 @@ public class LoggerEntry { } public String toString() { - return toJson(); + return serialize(); } - public String toJson() { + public String serialize() { try { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - JsonGenerator g = new JsonFactory().createGenerator(out, JsonEncoding.UTF8); - g.writeStartObject(); + Slime slime = new Slime(); + Cursor root = slime.setObject(); - g.writeNumberField("timestamp", timestamp == null ? 0 : timestamp); - g.writeStringField("query", queryString()); - g.writeStringField("blob", Base64.getEncoder().encodeToString(blob.array())); - - g.writeEndObject(); - g.close(); - return out.toString(); + root.setLong("timestamp", timestamp == null ? 0 : timestamp); + root.setString("query", queryString()); + root.setString("blob", Base64.getEncoder().encodeToString(blob.array())); + return Utf8.toString(SlimeUtils.toJsonBytes(slime)); // TODO } catch (IOException e) { throw new UncheckedIOException(e); } } - // TODO: Rename method here and above? (serialize/deserialize) - // TODO: Use Slime or Jackson for both - public static LoggerEntry fromJson(byte[] content) throws IOException { - var decoder = new JsonDecoder(); - var slime = decoder.decode(new Slime(), content); + public static LoggerEntry deserialize(String content) throws IOException { + var slime = SlimeUtils.jsonToSlime(content); var timestamp = slime.get().field("timestamp").asLong(); var query = new Query(slime.get().field("query").asString()); - var blob = slime.get().field("blob").asData(); + var blob = slime.get().field("blob").asString(); return new LoggerEntry(new Builder().timestamp(timestamp).query(query).blob(blob)); } @@ -118,6 +109,13 @@ public class LoggerEntry { return this; } + public Builder blob(String blob) { + byte[] bytes = Utf8.toBytes(blob); + this.blob = ByteBuffer.allocate(bytes.length); + this.blob.put(bytes); + return this; + } + public boolean send() { return logger.send(new LoggerEntry(this)); } |