aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/rendering
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-04-30 23:08:26 +0200
committerJon Bratseth <bratseth@oath.com>2018-04-30 23:08:26 +0200
commit1006840e666864f35bf00e21732d3f99e8609793 (patch)
treedd2c1aa756edf806391f17197be65260656a7c80 /container-search/src/main/java/com/yahoo/search/rendering
parent4ece955f7e12196bb31171e9898428b9a252ed02 (diff)
Discontinue use of, and deprecate Hit.getFieldXML
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/rendering')
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java20
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java21
2 files changed, 32 insertions, 9 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java
index 7859358fe50..b49ff0f7482 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java
@@ -7,6 +7,9 @@ import com.yahoo.io.ByteWriter;
import com.yahoo.net.URI;
import com.yahoo.prelude.fastsearch.FastHit;
import com.yahoo.prelude.fastsearch.GroupingListHit;
+import com.yahoo.prelude.hitfield.HitField;
+import com.yahoo.prelude.hitfield.JSONString;
+import com.yahoo.prelude.hitfield.XMLString;
import com.yahoo.prelude.templates.UserTemplate;
import com.yahoo.processing.rendering.AsynchronousSectionedRenderer;
import com.yahoo.processing.response.Data;
@@ -17,6 +20,7 @@ import com.yahoo.search.grouping.result.HitRenderer;
import com.yahoo.search.query.context.QueryContext;
import com.yahoo.search.result.*;
import com.yahoo.text.Utf8String;
+import com.yahoo.text.XML;
import com.yahoo.text.XMLWriter;
import com.yahoo.yolean.trace.TraceNode;
import com.yahoo.yolean.trace.TraceVisitor;
@@ -201,10 +205,18 @@ public final class DefaultRenderer extends AsynchronousSectionedRenderer<Result>
}
private void renderFieldContent(XMLWriter writer, Hit hit, String fieldName) {
- String xmlval = hit.getFieldXML(fieldName);
- if (xmlval == null)
- xmlval = "(null)";
- writer.escapedContent(xmlval, false);
+ writer.escapedContent(asXML(hit.getField(fieldName)), false);
+ }
+
+ private String asXML(Object value) {
+ if (value == null)
+ return "(null)";
+ else if (value instanceof HitField)
+ return ((HitField)value).quotedContent(false);
+ else if (value instanceof StructuredData || value instanceof XMLString || value instanceof JSONString)
+ return value.toString();
+ else
+ return XML.xmlEscape(value.toString(), false, '\u001f');
}
private void renderSyntheticRelevanceField(XMLWriter writer, Hit hit) {
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java
index 6613211a91e..a4fe077fce2 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java
@@ -7,6 +7,9 @@ import com.yahoo.log.LogLevel;
import com.yahoo.net.URI;
import com.yahoo.prelude.fastsearch.FastHit;
import com.yahoo.prelude.fastsearch.GroupingListHit;
+import com.yahoo.prelude.hitfield.HitField;
+import com.yahoo.prelude.hitfield.JSONString;
+import com.yahoo.prelude.hitfield.XMLString;
import com.yahoo.prelude.templates.Context;
import com.yahoo.prelude.templates.DefaultTemplateSet;
import com.yahoo.prelude.templates.MapContext;
@@ -17,6 +20,7 @@ import com.yahoo.search.grouping.result.HitRenderer;
import com.yahoo.search.query.context.QueryContext;
import com.yahoo.search.result.*;
import com.yahoo.text.Utf8String;
+import com.yahoo.text.XML;
import com.yahoo.text.XMLWriter;
import com.yahoo.yolean.trace.TraceNode;
import com.yahoo.yolean.trace.TraceVisitor;
@@ -284,11 +288,18 @@ public final class SyncDefaultRenderer extends Renderer {
}
private void renderFieldContent(XMLWriter writer, Hit hit, String fieldName) {
- String xmlval = hit.getFieldXML(fieldName);
- if (xmlval == null) {
- xmlval = "(null)";
- }
- writer.escapedContent(xmlval, false);
+ writer.escapedContent(asXML(hit.getField(fieldName)), false);
+ }
+
+ private String asXML(Object value) {
+ if (value == null)
+ return "(null)";
+ else if (value instanceof HitField)
+ return ((HitField)value).quotedContent(false);
+ else if (value instanceof StructuredData || value instanceof XMLString || value instanceof JSONString)
+ return value.toString();
+ else
+ return XML.xmlEscape(value.toString(), false, '\u001f');
}
private void renderSyntheticRelevanceField(XMLWriter writer, Hit hit) {