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 | |
parent | 4ece955f7e12196bb31171e9898428b9a252ed02 (diff) |
Discontinue use of, and deprecate Hit.getFieldXML
Diffstat (limited to 'container-search/src/main/java/com')
6 files changed, 68 insertions, 19 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java b/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java index 79d871d8c74..f6619a32a2b 100644 --- a/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java +++ b/container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java @@ -391,6 +391,7 @@ public class HitField { return bareContent.toString(); } + @Override public String toString() { return getContent(); } diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java index ba7388a11a0..f06b97b1a5a 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java @@ -5,10 +5,14 @@ import com.yahoo.concurrent.CopyOnWriteHashMap; import com.yahoo.io.ByteWriter; import com.yahoo.net.URI; import com.yahoo.prelude.fastsearch.FastHit; +import com.yahoo.prelude.hitfield.HitField; +import com.yahoo.prelude.hitfield.JSONString; +import com.yahoo.prelude.hitfield.XMLString; import com.yahoo.search.Result; import com.yahoo.search.grouping.result.HitRenderer; import com.yahoo.search.result.*; import com.yahoo.text.Utf8String; +import com.yahoo.text.XML; import com.yahoo.text.XMLWriter; import java.io.IOException; @@ -263,11 +267,18 @@ public class DefaultTemplateSet extends UserTemplate<XMLWriter> { } protected void renderFieldContent(Context context, Hit hit, String name, XMLWriter writer) { - String xmlval = hit.getFieldXML(name); - if (xmlval == null) { - xmlval = "(null)"; - } - writer.escapedContent(xmlval,false); + writer.escapedContent(asXML(hit.getField(name)), 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 renderSimpleField(String fieldName, Object fieldValue, XMLWriter writer) { diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java index 4e3b53f4523..2d04097cf9b 100644 --- a/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java @@ -2,6 +2,9 @@ package com.yahoo.prelude.templates; import com.yahoo.container.ConfigHack; +import com.yahoo.prelude.hitfield.HitField; +import com.yahoo.prelude.hitfield.JSONString; +import com.yahoo.prelude.hitfield.XMLString; import com.yahoo.prelude.templates.FormattingOptions.SubtypeFieldWithPrefix; import com.yahoo.search.Result; import com.yahoo.search.pagetemplates.model.Renderer; @@ -9,6 +12,8 @@ import com.yahoo.search.pagetemplates.model.Source; import com.yahoo.search.pagetemplates.result.SectionHitGroup; import com.yahoo.search.result.Hit; import com.yahoo.search.result.HitGroup; +import com.yahoo.search.result.StructuredData; +import com.yahoo.text.XML; import com.yahoo.text.XMLWriter; import java.io.IOException; @@ -328,9 +333,19 @@ public class TiledTemplateSet extends DefaultTemplateSet { } else { writer.openTag(name); } - writer.escapedContent(hit.getFieldXML(name),false).closeTag(); + writer.escapedContent(asXML(hit.getField(name)),false).closeTag(); } + 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'); + } public String toString() { return "tiled result template"; } 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) { diff --git a/container-search/src/main/java/com/yahoo/search/result/Hit.java b/container-search/src/main/java/com/yahoo/search/result/Hit.java index 0d8f575b1f6..1716396a081 100644 --- a/container-search/src/main/java/com/yahoo/search/result/Hit.java +++ b/container-search/src/main/java/com/yahoo/search/result/Hit.java @@ -647,13 +647,14 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi } } - // TODO: Deprecate /** * Returns a field of this hit XML escaped and without token * delimiters. * + * @deprecated do not use * @return a field of this hit, or null if the property is not set */ + @Deprecated // TODO: Remove on Vespa 7 public String getFieldXML(String key) { Object p = getField(key); @@ -661,9 +662,7 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi return null; } else if (p instanceof HitField) { return ((HitField)p).quotedContent(false); - } else if (p instanceof StructuredData) { - return p.toString(); - } else if (p instanceof XMLString || p instanceof JSONString) { + } else if (p instanceof StructuredData || p instanceof XMLString || p instanceof JSONString) { return p.toString(); } else { return XML.xmlEscape(p.toString(), false, '\u001f'); |