diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-04-30 23:08:26 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-04-30 23:08:26 +0200 |
commit | 1006840e666864f35bf00e21732d3f99e8609793 (patch) | |
tree | dd2c1aa756edf806391f17197be65260656a7c80 /container-search/src/main/java/com/yahoo/search/rendering | |
parent | 4ece955f7e12196bb31171e9898428b9a252ed02 (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.java | 20 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java | 21 |
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) { |