summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-05-19 21:51:00 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-05-19 21:51:00 +0200
commitd468c1aff08b6d13763df9bbdfda958ec723bb75 (patch)
treefae114bfbf33773e5012523abbecd9c3501b06d2 /container-search
parent2dd947c284dafb307522747c0b9c07092fabdca3 (diff)
Prepare for raw fields to be presented as base64 encoded in summary.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/abi-spec.json12
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/Base64DataField.java25
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java18
5 files changed, 57 insertions, 1 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index 74ed9d33f04..b577660c1b9 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -201,6 +201,18 @@
],
"fields": []
},
+ "com.yahoo.prelude.hitfield.RawBase64": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>(byte[])",
+ "public java.lang.String toString()"
+ ],
+ "fields": []
+ },
"com.yahoo.prelude.hitfield.RawData": {
"superClass": "java.lang.Object",
"interfaces": [],
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/Base64DataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Base64DataField.java
new file mode 100644
index 00000000000..d51bdc0fad1
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/Base64DataField.java
@@ -0,0 +1,25 @@
+package com.yahoo.prelude.fastsearch;
+
+import com.yahoo.data.access.Inspector;
+import com.yahoo.data.access.simple.Value;
+import com.yahoo.prelude.hitfield.RawBase64;
+
+/**
+ * Represents a binary field that is presented as base64
+ * @author baldersheim
+ */
+public class Base64DataField extends DocsumField {
+ public Base64DataField(String name) {
+ super(name);
+ }
+
+ @Override
+ public String toString() {
+ return "field " + getName() + " type raw";
+ }
+
+ @Override
+ public Object convert(Inspector value) {
+ return new RawBase64(value.asData(Value.empty().asData()));
+ }
+}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java
index de07839e3e3..af7d98311f6 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DataField.java
@@ -23,7 +23,7 @@ public class DataField extends DocsumField {
super(name);
}
- private Object convert(byte[] value) {
+ private RawData convert(byte[] value) {
return new RawData(value);
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
index ef892585d21..70ffc71495a 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumField.java
@@ -51,6 +51,7 @@ public abstract class DocsumField {
fieldFactory.put("double", DoubleField.class);
fieldFactory.put("string", StringField.class);
fieldFactory.put("data", DataField.class);
+ fieldFactory.put("raw", Base64DataField.class);
fieldFactory.put("longstring", LongstringField.class);
fieldFactory.put("longdata", LongdataField.class);
fieldFactory.put("jsonstring", StructDataField.class);
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java
new file mode 100644
index 00000000000..134d0bc902a
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/RawBase64.java
@@ -0,0 +1,18 @@
+package com.yahoo.prelude.hitfield;
+
+import java.util.Base64;
+
+/**
+ * @author baldersheim
+ */
+public class RawBase64 {
+ private final byte[] content;
+ public RawBase64(byte[] content) {
+ this.content = content;
+ }
+
+ @Override
+ public String toString() {
+ return Base64.getEncoder().encodeToString(content);
+ }
+}