summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/rendering
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-05-11 13:39:53 +0200
committerJon Bratseth <bratseth@oath.com>2018-05-11 13:39:53 +0200
commit70f9a444803a66468b7c36e09138e9ee59117bd6 (patch)
tree62fcfe21d6db38971f047fe8b94decbe98a8ec7c /container-search/src/main/java/com/yahoo/search/rendering
parentd94735728f8e89db373527dddfa0999de138c3dd (diff)
Iterate over fields by callback
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.java23
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java31
2 files changed, 17 insertions, 37 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 bae1185d6a9..2d69a262f15 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
@@ -185,28 +185,19 @@ public final class DefaultRenderer extends AsynchronousSectionedRenderer<Result>
private void renderHitFields(XMLWriter writer, Hit hit) {
renderSyntheticRelevanceField(writer, hit);
- for (Iterator<Map.Entry<String, Object>> it = hit.fieldIterator(); it.hasNext(); ) {
- renderField(writer, hit, it);
- }
- }
-
- private void renderField(XMLWriter writer, Hit hit, Iterator<Map.Entry<String, Object>> it) {
- renderGenericField(writer, hit, it.next());
+ hit.forEachField((name, value) -> renderField(writer, name, value));
}
- private void renderGenericField(XMLWriter writer, Hit hit, Map.Entry<String, Object> entry) {
- String fieldName = entry.getKey();
-
- // skip depending on hit type
- if (fieldName.startsWith("$")) return; // Don't render fields that start with $ // TODO: Move to should render
+ private void renderField(XMLWriter writer, String name, Object value) {
+ if (name.startsWith("$")) return;
- writeOpenFieldElement(writer, fieldName);
- renderFieldContent(writer, hit, fieldName);
+ writeOpenFieldElement(writer, name);
+ renderFieldContent(writer, value);
writeCloseFieldElement(writer);
}
- private void renderFieldContent(XMLWriter writer, Hit hit, String fieldName) {
- writer.escapedContent(asXML(hit.getField(fieldName)), false);
+ private void renderFieldContent(XMLWriter writer, Object value) {
+ writer.escapedContent(asXML(value), false);
}
private String asXML(Object value) {
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 dc72061e224..08599540cb1 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
@@ -271,25 +271,19 @@ public final class SyncDefaultRenderer extends Renderer {
private void renderHitFields(XMLWriter writer, Hit hit) {
renderSyntheticRelevanceField(writer, hit);
- for (Iterator<Map.Entry<String, Object>> it = hit.fieldIterator(); it.hasNext(); ) {
- renderField(writer, hit, it);
- }
+ hit.forEachField((name, value) -> renderField(writer, name, value));
}
- private void renderField(XMLWriter writer, Hit hit, Iterator<Map.Entry<String, Object>> it) {
- Map.Entry<String, Object> entry = it.next();
- String fieldName = entry.getKey();
-
- if ( ! shouldRenderField(hit, fieldName)) return;
- if (fieldName.startsWith("$")) return; // Don't render fields that start with $ // TODO: Move to should render
+ private void renderField(XMLWriter writer, String name, Object value) {
+ if (name.startsWith("$")) return;
- writeOpenFieldElement(writer, fieldName);
- renderFieldContent(writer, hit, fieldName);
+ writeOpenFieldElement(writer, name);
+ renderFieldContent(writer, value);
writeCloseFieldElement(writer);
}
- private void renderFieldContent(XMLWriter writer, Hit hit, String fieldName) {
- writer.escapedContent(asXML(hit.getField(fieldName)), false);
+ private void renderFieldContent(XMLWriter writer, Object value) {
+ writer.escapedContent(asXML(value), false);
}
private String asXML(Object value) {
@@ -304,10 +298,10 @@ public final class SyncDefaultRenderer extends Renderer {
}
private void renderSyntheticRelevanceField(XMLWriter writer, Hit hit) {
- final String relevancyFieldName = "relevancy";
- final Relevance relevance = hit.getRelevance();
+ String relevancyFieldName = "relevancy";
+ Relevance relevance = hit.getRelevance();
- if (shouldRenderField(hit, relevancyFieldName) && relevance != null) {
+ if (relevance != null) {
renderSimpleField(writer, relevancyFieldName, relevance);
}
}
@@ -332,11 +326,6 @@ public final class SyncDefaultRenderer extends Renderer {
writer.closeStartTag();
}
- private boolean shouldRenderField(Hit hit, String relevancyFieldName) {
- // skip depending on hit type
- return true;
- }
-
private void renderHitAttributes(XMLWriter writer, Hit hit) {
writer.attribute(TYPE, hit.types().stream().collect(Collectors.joining(" ")));
if (hit.getRelevance() != null) {