diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-05-11 13:39:53 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-05-11 13:39:53 +0200 |
commit | 70f9a444803a66468b7c36e09138e9ee59117bd6 (patch) | |
tree | 62fcfe21d6db38971f047fe8b94decbe98a8ec7c /container-search/src/main/java/com/yahoo/search/rendering | |
parent | d94735728f8e89db373527dddfa0999de138c3dd (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.java | 23 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/SyncDefaultRenderer.java | 31 |
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) { |