aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com
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
parent4ece955f7e12196bb31171e9898428b9a252ed02 (diff)
Discontinue use of, and deprecate Hit.getFieldXML
Diffstat (limited to 'container-search/src/main/java/com')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/hitfield/HitField.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java21
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java17
-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
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Hit.java7
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');