summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-10-05 12:22:19 +0200
committerHarald Musum <musum@yahooinc.com>2022-10-05 12:22:19 +0200
commit6c26f5a1ad176569a7e3c95be35318d41f69ac14 (patch)
tree8fd7615610336fce60125eca30e5ed0eb364ad40 /container-search
parent5481b852bfa87af50d55d5063567cf8621170151 (diff)
Add a fromJson method to LoggerEntry (use when reading spooler files)
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java20
1 files changed, 18 insertions, 2 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 44eec6e64a0..692de3e6cef 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
@@ -6,7 +6,8 @@ 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.Slime;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
@@ -73,6 +74,19 @@ public class LoggerEntry {
}
}
+ // 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);
+
+ var timestamp = slime.get().field("timestamp").asLong();
+ var query = new Query(slime.get().field("query").asString());
+ var blob = slime.get().field("blob").asData();
+
+ return new LoggerEntry(new Builder().timestamp(timestamp).query(query).blob(blob));
+ }
+
public static class Builder {
private final Logger logger;
@@ -81,6 +95,9 @@ public class LoggerEntry {
private Query query;
private ByteBuffer blob;
+ // For testing
+ public Builder() { this(entry -> false); }
+
public Builder(Logger logger) {
this.logger = logger;
}
@@ -107,5 +124,4 @@ public class LoggerEntry {
}
-
}