summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
diff options
context:
space:
mode:
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.java44
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));
}