aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/DefaultTemplateSet.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/Template.java3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/TemplateSet.java3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/TiledTemplateSet.java3
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/templates/UserTemplate.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/pagetemplates/result/PageTemplatesXmlRenderer.java334
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/DefaultRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Templating.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java32
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml70
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml51
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml47
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java47
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml28
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml87
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java37
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml167
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml123
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml4
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml4
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java23
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml4
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java21
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml2
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java23
-rw-r--r--container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml119
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/result/test/DefaultErrorHitTestCase.java41
32 files changed, 779 insertions, 514 deletions
diff --git a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java
index 7907bb27a6d..63cce619333 100644
--- a/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java
+++ b/container-core/src/main/java/com/yahoo/processing/rendering/AsynchronousSectionedRenderer.java
@@ -218,7 +218,7 @@ public abstract class AsynchronousSectionedRenderer<RESPONSE extends Response> e
public final ListenableFuture<Boolean> renderBeforeHandover(OutputStream stream, RESPONSE response,
Execution execution, Request request) {
beforeHandoverMode = true;
- if (!isInitialized) throw new IllegalStateException("render() invoked before init().");
+ if ( ! isInitialized) throw new IllegalStateException("render() invoked before init().");
return startRender(stream, response, execution, request);
}
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 7fc82ba4622..4d6406fe00d 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
@@ -197,7 +197,6 @@ public class DefaultTemplateSet extends UserTemplate<XMLWriter> {
}
}
-
/**
* Renders a hit group.
*/
diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java
index d5de6fa597e..cac06011679 100644
--- a/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java
+++ b/container-search/src/main/java/com/yahoo/prelude/templates/PageTemplateSet.java
@@ -18,7 +18,7 @@ import java.io.Writer;
*/
@SuppressWarnings("deprecation")
// TODO: Remove on Vespa 7
-@Deprecated
+@Deprecated // OK
public class PageTemplateSet extends TiledTemplateSet {
public PageTemplateSet() {
diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java b/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java
index 8439dd105a8..467cd615ebd 100644
--- a/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java
+++ b/container-search/src/main/java/com/yahoo/prelude/templates/SearchRendererAdaptor.java
@@ -24,7 +24,8 @@ import java.util.Iterator;
* @deprecated do not use
*/
@SuppressWarnings({ "rawtypes", "deprecation", "unchecked" })
-@Deprecated // TODO: Remove on Vespa 7
+@Deprecated // OK (But wait for deprecated handlers in vespaclient-container-plugin to be removed)
+// TODO: Remove on Vespa 7
public final class SearchRendererAdaptor extends Renderer {
private final LogExceptionUserTemplateDelegator templates;
diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/Template.java b/container-search/src/main/java/com/yahoo/prelude/templates/Template.java
index 3d00be9d05b..761eb1db562 100644
--- a/container-search/src/main/java/com/yahoo/prelude/templates/Template.java
+++ b/container-search/src/main/java/com/yahoo/prelude/templates/Template.java
@@ -13,7 +13,8 @@ import java.io.Writer;
* @deprecated use a Renderer instead
*/
@SuppressWarnings("deprecation")
-@Deprecated // TODO: Remove on Vespa 7
+@Deprecated // OK (But wait for deprecated handlers in vespaclient-container-plugin to be removed)
+// TODO: Remove on Vespa 7
public abstract class Template<T extends Writer> {
/**
diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/TemplateSet.java b/container-search/src/main/java/com/yahoo/prelude/templates/TemplateSet.java
index 98c7af6b9ce..65a5b4cacfd 100644
--- a/container-search/src/main/java/com/yahoo/prelude/templates/TemplateSet.java
+++ b/container-search/src/main/java/com/yahoo/prelude/templates/TemplateSet.java
@@ -21,7 +21,8 @@ import java.io.Writer;
* @deprecated use a renderer instead
*/
@SuppressWarnings("deprecation")
-@Deprecated // TODO: Remove on Vespa 7
+@Deprecated // OK (But wait for deprecated handlers in vespaclient-container-plugin to be removed)
+// TODO: Remove on Vespa 7
public class TemplateSet<T extends Writer> extends UserTemplate<T> {
private static final String queryContextTemplateName = "queryContext";
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 91bc33e3e2a..115e9cd44a1 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
@@ -73,7 +73,8 @@ import java.util.stream.Collectors;
* @deprecated use a Renderer instead
*/
@SuppressWarnings("deprecation")
-@Deprecated // TODO: Remove on Vespa 7
+// TODO: Remove on Vespa 7
+@Deprecated // OK
public class TiledTemplateSet extends DefaultTemplateSet {
private FormattingOptions hitOptionsForProvider;
diff --git a/container-search/src/main/java/com/yahoo/prelude/templates/UserTemplate.java b/container-search/src/main/java/com/yahoo/prelude/templates/UserTemplate.java
index ac1583b0577..bcdf3311c1f 100644
--- a/container-search/src/main/java/com/yahoo/prelude/templates/UserTemplate.java
+++ b/container-search/src/main/java/com/yahoo/prelude/templates/UserTemplate.java
@@ -24,7 +24,8 @@ import java.util.logging.Logger;
* @author Steinar Knutsen
*/
@SuppressWarnings("deprecation")
-@Deprecated // TODO: Remove on Vespa 7
+@Deprecated // OK (But wait for deprecated handlers in vespaclient-container-plugin to be removed)
+// TODO: Remove on Vespa 7
public abstract class UserTemplate<T extends Writer> extends GenericTemplateSet {
// &amp;
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/result/PageTemplatesXmlRenderer.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/result/PageTemplatesXmlRenderer.java
new file mode 100644
index 00000000000..b7d7188e77e
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/result/PageTemplatesXmlRenderer.java
@@ -0,0 +1,334 @@
+package com.yahoo.search.pagetemplates.result;
+
+import com.yahoo.io.ByteWriter;
+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.processing.rendering.AsynchronousSectionedRenderer;
+import com.yahoo.processing.response.Data;
+import com.yahoo.processing.response.DataList;
+import com.yahoo.search.Query;
+import com.yahoo.search.Result;
+import com.yahoo.search.pagetemplates.model.Renderer;
+import com.yahoo.search.pagetemplates.model.Source;
+import com.yahoo.search.query.context.QueryContext;
+import com.yahoo.search.result.Coverage;
+import com.yahoo.search.result.DefaultErrorHit;
+import com.yahoo.search.result.ErrorHit;
+import com.yahoo.search.result.ErrorMessage;
+import com.yahoo.search.result.Hit;
+import com.yahoo.search.result.HitGroup;
+import com.yahoo.search.result.StructuredData;
+import com.yahoo.text.Utf8String;
+import com.yahoo.text.XML;
+import com.yahoo.text.XMLWriter;
+import com.yahoo.yolean.trace.TraceNode;
+
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
+
+public class PageTemplatesXmlRenderer extends AsynchronousSectionedRenderer<Result> {
+
+ public static final String DEFAULT_MIMETYPE = "text/xml";
+ public static final String DEFAULT_ENCODING = "utf-8";
+
+ private static final Utf8String GROUP = new Utf8String("group");
+ private static final Utf8String HIT = new Utf8String("hit");
+ private static final Utf8String ERROR = new Utf8String("error");
+ private static final Utf8String CODE = new Utf8String("code");
+ private static final Utf8String COVERAGE_DOCS = new Utf8String("coverage-docs");
+ private static final Utf8String COVERAGE_NODES = new Utf8String("coverage-nodes");
+ private static final Utf8String COVERAGE_FULL = new Utf8String("coverage-full");
+ private static final Utf8String COVERAGE = new Utf8String("coverage");
+ private static final Utf8String RESULTS_FULL = new Utf8String("results-full");
+ private static final Utf8String RESULTS = new Utf8String("results");
+ private static final Utf8String TYPE = new Utf8String("type");
+ private static final Utf8String RELEVANCE = new Utf8String("relevance");
+ private static final Utf8String SOURCE = new Utf8String("source");
+
+ private XMLWriter writer;
+
+ public PageTemplatesXmlRenderer() {
+ this(null);
+ }
+
+ /**
+ * Creates a json renderer using a custom executor.
+ * Using a custom executor is useful for tests to avoid creating new threads for each renderer registry.
+ */
+ public PageTemplatesXmlRenderer(Executor executor) {
+ super(executor);
+ }
+
+ @Override
+ public void init() {
+ super.init();
+ writer = null;
+ }
+
+ @Override
+ public String getEncoding() {
+ if (getResult() == null
+ || getResult().getQuery() == null
+ || getResult().getQuery().getModel().getEncoding() == null) {
+ return DEFAULT_ENCODING;
+ } else {
+ return getResult().getQuery().getModel().getEncoding();
+ }
+ }
+
+ @Override
+ public String getMimeType() {
+ return DEFAULT_MIMETYPE;
+ }
+
+ private XMLWriter wrapWriter(Writer writer) {
+ return XMLWriter.from(writer, 10, -1);
+ }
+
+ private void header(XMLWriter writer, Result result) {
+ writer.xmlHeader(getRequestedEncoding(result.getQuery()));
+ writer.openTag("page").attribute("version", "1.0")
+ .attribute("layout", result.hits().getField("layout"));
+ renderCoverageAttributes(result.getCoverage(false), writer);
+ writer.closeStartTag();
+ renderSectionContent(writer, result.hits());
+ }
+
+ private static void renderCoverageAttributes(Coverage coverage, XMLWriter writer) {
+ if (coverage == null) return;
+ writer.attribute(COVERAGE_DOCS,coverage.getDocs());
+ writer.attribute(COVERAGE_NODES,coverage.getNodes());
+ writer.attribute(COVERAGE_FULL,coverage.getFull());
+ writer.attribute(COVERAGE,coverage.getResultPercentage());
+ writer.attribute(RESULTS_FULL,coverage.getFullResultSets());
+ writer.attribute(RESULTS,coverage.getResultSets());
+ }
+
+ public void error(XMLWriter writer, Result result) {
+ ErrorMessage error = result.hits().getError();
+ writer.openTag(ERROR).attribute(CODE,error.getCode()).content(error.getMessage(),false).closeTag();
+ }
+
+ private void queryContext(XMLWriter writer, Query owner) {
+ if (owner.getTraceLevel()!=0) {
+ XMLWriter xmlWriter=XMLWriter.from(writer);
+ xmlWriter.openTag("meta").attribute("type", QueryContext.ID);
+ TraceNode traceRoot = owner.getModel().getExecution().trace().traceNode().root();
+ traceRoot.accept(new com.yahoo.search.rendering.DefaultRenderer.RenderingVisitor(xmlWriter, owner.getStartTime()));
+ xmlWriter.closeTag();
+ }
+ }
+
+ private void renderSingularHit(XMLWriter writer, Hit hit) {
+ if ( ! hit.isMeta() && ! writer.isIn("content"))
+ writer.openTag("content");
+
+ writer.openTag(HIT);
+ renderHitAttributes(hit,writer);
+ writer.closeStartTag();
+ renderField(writer, "id", hit.getId());
+ hit.forEachField((name, value) -> renderField(writer, name, value));
+ writer.closeTag();
+ }
+
+ /** Writes a hit's default attributes like 'type', 'source', 'relevance'. */
+ private void renderHitAttributes(Hit hit, XMLWriter writer) {
+ writer.attribute(TYPE, hit.types().stream().collect(Collectors.joining(" ")));
+ if (hit.getRelevance() != null)
+ writer.attribute(RELEVANCE, hit.getRelevance().toString());
+ writer.attribute(SOURCE, hit.getSource());
+ }
+
+ private void renderField(XMLWriter writer, String name, Object value) {
+ writer.openTag(name);
+ renderFieldContent(writer, value);
+ writer.closeTag();
+ }
+
+ private void renderFieldContent(XMLWriter writer, Object value) {
+ writer.escapedContent(asXML(value), 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 renderHitAttributes(XMLWriter writer, Hit hit) {
+ writer.attribute(TYPE, hit.types().stream().collect(Collectors.joining(" ")));
+ if (hit.getRelevance() != null)
+ writer.attribute(RELEVANCE, hit.getRelevance().toString());
+ writer.attribute(SOURCE, hit.getSource());
+ }
+
+ private void renderHitGroup(XMLWriter writer, HitGroup hit) {
+ if (hit.types().contains("section")) {
+
+ renderSection(writer, hit); // Renders /result/section
+ }
+ else if (hit.types().contains("meta")) {
+ writer.openTag("meta"); // renders /result/meta
+ writer.closeStartTag();
+ }
+ else {
+ renderGroup(writer, hit);
+ }
+ }
+
+ private void renderGroup(XMLWriter writer, HitGroup hit) {
+ writer.openTag(GROUP);
+ renderHitAttributes(writer, hit);
+ writer.closeStartTag();
+ }
+
+ private void renderSection(XMLWriter writer, HitGroup hit) {
+ writer.openTag("section");
+ writer.attribute("id", hit.getDisplayId());
+ writer.attribute("layout", hit.getField("layout"));
+ writer.attribute("region", hit.getField("region"));
+ writer.attribute("placement", hit.getField("placement")); // deprecated in 5.0
+ writer.closeStartTag();
+ renderSectionContent(writer, hit);
+ }
+
+ private void renderSectionContent(XMLWriter writer, HitGroup hit) {
+ if (hit instanceof SectionHitGroup) { // render additional information
+ SectionHitGroup sectionGroup = (SectionHitGroup)hit;
+ for (Source source : sectionGroup.sources()) {
+ writer.openTag("source").attribute("url", source.getUrl());
+ renderParameters(source.parameters(), writer);
+ writer.closeTag();
+ }
+ for (Renderer renderer : sectionGroup.renderers()) {
+ writer.openTag("renderer").attribute("for", renderer.getRendererFor()).attribute("name", renderer.getName());
+ renderParameters(renderer.parameters(), writer);
+ writer.closeTag();
+ }
+ }
+ }
+
+ private void renderParameters(Map<String,String> parameters, XMLWriter writer) {
+ // Render content
+ for (Map.Entry<String, String> parameter : parameters.entrySet())
+ writer.openTag("parameter").attribute("name", parameter.getKey())
+ .content(parameter.getValue(), false)
+ .closeTag();
+ }
+
+ private boolean simpleRenderHit(XMLWriter writer, Hit hit) {
+ if (hit instanceof DefaultErrorHit) {
+ return simpleRenderDefaultErrorHit(writer, (DefaultErrorHit) hit);
+ } else if (hit instanceof GroupingListHit) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public static boolean simpleRenderDefaultErrorHit(XMLWriter writer, ErrorHit defaultErrorHit) {
+ writer.openTag("errordetails");
+ for (Iterator i = defaultErrorHit.errorIterator(); i.hasNext();) {
+ ErrorMessage error = (ErrorMessage) i.next();
+ renderMessageDefaultErrorHit(writer, error);
+ }
+ writer.closeTag();
+ return true;
+ }
+
+ public static void renderMessageDefaultErrorHit(XMLWriter writer, ErrorMessage error) {
+ writer.openTag("error");
+ writer.attribute("source", error.getSource());
+ writer.attribute("error", error.getMessage());
+ writer.attribute("code", Integer.toString(error.getCode()));
+ writer.content(error.getDetailedMessage(), false);
+ if (error.getCause()!=null) {
+ writer.openTag("cause");
+ writer.content("\n", true);
+ StringWriter stackTrace=new StringWriter();
+ error.getCause().printStackTrace(new PrintWriter(stackTrace));
+ writer.content(stackTrace.toString(), true);
+ writer.closeTag();
+ }
+ writer.closeTag();
+ }
+
+ private Result getResult() {
+ try {
+ return (Result) getResponse();
+ } catch (ClassCastException e) {
+ throw new IllegalArgumentException("PageTemplatesXmlRenderer attempted used outside a search context, got a " +
+ getResponse().getClass().getName());
+ }
+ }
+
+ @Override
+ public void beginResponse(OutputStream stream) {
+ Charset cs = Charset.forName(getRequestedEncoding(getResult().getQuery()));
+ CharsetEncoder encoder = cs.newEncoder();
+ writer = wrapWriter(new ByteWriter(stream, encoder));
+
+ header(writer, getResult());
+ if (getResult().hits().getError() != null || getResult().hits().getQuery().errors().size() > 0)
+ error(writer, getResult());
+
+ if (getResult().getContext(false) != null)
+ queryContext(writer, getResult().getQuery());
+ }
+
+ /** Returns the encoding of the query, or the encoding given by the template if none is set */
+ public final String getRequestedEncoding(Query query) {
+ String encoding = query.getModel().getEncoding();
+ if (encoding != null) return encoding;
+ return getEncoding();
+ }
+
+ @Override
+ public void beginList(DataList<?> list) {
+ if (getRecursionLevel() == 1) return;
+
+ HitGroup hit = (HitGroup) list;
+ boolean renderedSimple = simpleRenderHit(writer, hit);
+ if (renderedSimple) return;
+
+ renderHitGroup(writer, hit);
+ }
+
+ @Override
+ public void data(Data data) {
+ Hit hit = (Hit) data;
+ boolean renderedSimple = simpleRenderHit(writer, hit);
+ if ( ! renderedSimple)
+ renderSingularHit(writer, hit);
+ }
+
+ @Override
+ public void endList(DataList<?> list) {
+ if (writer.isIn("content"))
+ writer.closeTag();
+ if (getRecursionLevel() > 1)
+ writer.closeTag();
+ }
+
+ @Override
+ public void endResponse() {
+ writer.closeTag();
+ writer.close();
+ }
+
+} \ No newline at end of file
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 a5a0cbdd57c..3562a1a9572 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
@@ -80,7 +80,7 @@ public final class DefaultRenderer extends AsynchronousSectionedRenderer<Result>
}
/**
- * Creates a json renderer using a custom executor.
+ * Creates an XML renderer using a custom executor.
* Using a custom executor is useful for tests to avoid creating new threads for each renderer registry.
*/
public DefaultRenderer(Executor executor) {
diff --git a/container-search/src/main/java/com/yahoo/search/result/Templating.java b/container-search/src/main/java/com/yahoo/search/result/Templating.java
index beb132f820e..6f1414c368b 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Templating.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Templating.java
@@ -191,7 +191,6 @@ public class Templating {
/**
* @deprecated since 5.1.21, use {@link Presentation#getRenderer()}
*/
- @Deprecated // OK Do not remove on Vespa 6. Remove when we move everything having to do with templates
public Renderer<Result> getRenderer() {
return renderer;
}
@@ -199,7 +198,6 @@ public class Templating {
/**
* @deprecated since 5.1.21, use {@link Presentation#setRenderer(com.yahoo.component.ComponentSpecification)}
*/
- @Deprecated // OK Do not remove on Vespa 6. Remove when we move everything having to do with templates
public void setRenderer(Renderer<Result> renderer) {
this.renderer = renderer;
}
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java
deleted file mode 100644
index 7c170cc59b3..00000000000
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ErrorHitRenderTestCase.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.prelude.searcher.test;
-
-import com.yahoo.prelude.templates.SearchRendererAdaptor;
-import com.yahoo.search.result.DefaultErrorHit;
-import com.yahoo.search.result.ErrorHit;
-import com.yahoo.search.result.ErrorMessage;
-import com.yahoo.text.XMLWriter;
-import org.junit.Test;
-
-import java.io.StringWriter;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Tests marking hit properties as XML
- *
- * @author Steinar Knutsen
- */
-public class ErrorHitRenderTestCase {
-
- @Test
- public void testXMLEscaping() throws java.io.IOException {
- ErrorHit h = new DefaultErrorHit("testcase", ErrorMessage.createUnspecifiedError("<>\"&"));
-
- StringWriter writer = new StringWriter();
- SearchRendererAdaptor.renderMessageDefaultErrorHit(new XMLWriter(writer), h.errors().iterator().next());
- assertEquals("<error source=\"testcase\" error=\"Unspecified error\" code=\"5\">&lt;&gt;\"&amp;</error>\n",
- writer.toString());
- }
-
-}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml
index a1713a987cd..f1b2c823681 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/AnySourceResult.xml
@@ -1,41 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0">
-
- <hit relevance="1.0" source="source3">
- <id>source3-1</id>
- </hit>
-
- <hit relevance="1.0" source="source1">
- <id>source1-1</id>
- </hit>
-
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
-
- <hit relevance="0.5" source="source3">
- <id>source3-2</id>
- </hit>
-
- <hit relevance="0.5" source="source1">
- <id>source1-2</id>
- </hit>
-
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
-
- <hit relevance="0.3333333333333333" source="source3">
- <id>source3-3</id>
- </hit>
-
- <hit relevance="0.3333333333333333" source="source1">
- <id>source1-3</id>
- </hit>
-
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
-
-</result>
+<page version="1.0">
+ <content>
+ <hit relevance="1.0" source="source3">
+ <id>source3-1</id>
+ </hit>
+ <hit relevance="1.0" source="source1">
+ <id>source1-1</id>
+ </hit>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source3">
+ <id>source3-2</id>
+ </hit>
+ <hit relevance="0.5" source="source1">
+ <id>source1-2</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source3">
+ <id>source3-3</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source1">
+ <id>source1-3</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ </content>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml
index e1ae0b928e6..fc8b2cdc847 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfRenderersResult.xml
@@ -1,36 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0">
-
+<page version="1.0">
<renderer name="sectionLook2"/>
-
<renderer for="source1" name="source1Look3">
<parameter name="color">#ff00ff</parameter>
<parameter name="blink">true</parameter>
</renderer>
-
- <hit relevance="1.0" source="source1">
- <id>source1-1</id>
- </hit>
-
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
-
- <hit relevance="0.5" source="source1">
- <id>source1-2</id>
- </hit>
-
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
-
- <hit relevance="0.3333333333333333" source="source1">
- <id>source1-3</id>
- </hit>
-
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
-
-</result>
+ <content>
+ <hit relevance="1.0" source="source1">
+ <id>source1-1</id>
+ </hit>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source1">
+ <id>source1-2</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source1">
+ <id>source1-3</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ </content>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml
index a2cf4b8a773..01af611c51a 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsResult.xml
@@ -1,29 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0">
-
+<page version="1.0">
<section>
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ </content>
</section>
-
<section>
- <hit relevance="1.0" source="source4">
- <id>source4-1</id>
- </hit>
- <hit relevance="0.5" source="source4">
- <id>source4-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source4">
- <id>source4-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source4">
+ <id>source4-1</id>
+ </hit>
+ <hit relevance="0.5" source="source4">
+ <id>source4-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source4">
+ <id>source4-3</id>
+ </hit>
+ </content>
</section>
-
-</result>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java
index 513d861c86c..8c9e1767989 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfSubsectionsTestCase.java
@@ -10,6 +10,9 @@ import com.yahoo.search.pagetemplates.model.Choice;
import com.yahoo.search.result.HitGroup;
import org.junit.Test;
+import java.util.Collections;
+import java.util.stream.Collectors;
+
import static org.junit.Assert.assertEquals;
/**
@@ -20,47 +23,49 @@ public class ChoiceOfSubsectionsTestCase extends ExecutionAbstractTestCase {
@Test
public void testExecution() {
// Create the page template
- Choice page=Choice.createSingleton(importPage("ChoiceOfSubsections.xml"));
+ Choice page = Choice.createSingleton(importPage("ChoiceOfSubsections.xml"));
// Create a federated result
- Query query=new Query();
- Result result=new Result(query);
- result.hits().add(createHits("source1",3));
- result.hits().add(createHits("source2",3));
- result.hits().add(createHits("source3",3));
- result.hits().add(createHits("source4",3));
+ Query query = new Query();
+ Result result = new Result(query);
+ result.hits().add(createHits("source1", 3));
+ result.hits().add(createHits("source2", 3));
+ result.hits().add(createHits("source3", 3));
+ result.hits().add(createHits("source4", 3));
- new Organizer().organize(page,new DeterministicResolverAssertingMethod().resolve(page,query,result),result);
+ new Organizer().organize(page, new DeterministicResolverAssertingMethod().resolve(page, query, result), result);
// Check execution:
// Two subsections with one source each
- assertEquals(2,result.hits().size());
- HitGroup section1=(HitGroup)result.hits().get(0);
- HitGroup section2=(HitGroup)result.hits().get(1);
- assertEqualHitGroups(createHits("source2",3),section1);
- assertEqualHitGroups(createHits("source4",3),section2);
+ assertEquals(2, result.hits().size());
+ HitGroup section1 = (HitGroup)result.hits().get(0);
+ HitGroup section2 = (HitGroup)result.hits().get(1);
+ assertEquals("section", section1.types().stream().collect(Collectors.joining(", ")));
+ assertEquals("section", section2.types().stream().collect(Collectors.joining(", ")));
+ assertEqualHitGroups(createHits("source2", 3), section1);
+ assertEqualHitGroups(createHits("source4", 3), section2);
// Check rendering
- assertRendered(result,"ChoiceOfSubsectionsResult.xml");
+ assertRendered(result, "ChoiceOfSubsectionsResult.xml");
}
/** Same as deterministic resolver, but asserts that it received the correct method names for each choice */
private static class DeterministicResolverAssertingMethod extends DeterministicResolver {
- private int invocationNumber=0;
+ private int invocationNumber = 0;
/** Chooses the last alternative of any choice */
@Override
public void resolve(Choice choice, Query query, Result result, Resolution resolution) {
invocationNumber++;
- if (invocationNumber==2)
- assertEquals("method1",choice.getMethod());
- else if (invocationNumber==3)
- assertEquals("method2",choice.getMethod());
- else if (invocationNumber>3)
+ if (invocationNumber == 2)
+ assertEquals("method1", choice.getMethod());
+ else if (invocationNumber == 3)
+ assertEquals("method2", choice.getMethod());
+ else if (invocationNumber > 3)
throw new IllegalStateException("Unexpected number of resolver invocations");
- super.resolve(choice,query,result,resolution);
+ super.resolve(choice, query, result, resolution);
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml
index 149aa297bd3..c02f7469afd 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoiceOfTwoSourcesResult.xml
@@ -1,17 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0">
-
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
-
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
-
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
-
-</result>
+<page version="1.0">
+ <content>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ </content>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml
index 60f5c9a9cb1..f135f6e1f52 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ChoicesResult.xml
@@ -1,55 +1,60 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0">
-
+<page version="1.0">
<section layout="row">
<section id="section:box1">
- <hit relevance="1.0" source="news">
- <id>news-1</id>
- </hit>
- <hit relevance="0.5" source="news">
- <id>news-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="news">
- <id>news-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="news">
+ <id>news-1</id>
+ </hit>
+ <hit relevance="0.5" source="news">
+ <id>news-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="news">
+ <id>news-3</id>
+ </hit>
+ </content>
</section>
<section id="section:box2">
- <hit relevance="1.0" source="web">
- <id>web-1</id>
- </hit>
- <hit relevance="0.5" source="web">
- <id>web-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="web">
- <id>web-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="web">
+ <id>web-1</id>
+ </hit>
+ <hit relevance="0.5" source="web">
+ <id>web-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="web">
+ <id>web-3</id>
+ </hit>
+ </content>
</section>
</section>
-
<section layout="row">
<section id="section:box3">
- <hit relevance="1.0" source="blog">
- <id>blog-1</id>
- </hit>
- <hit relevance="0.5" source="blog">
- <id>blog-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="blog">
- <id>blog-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="blog">
+ <id>blog-1</id>
+ </hit>
+ <hit relevance="0.5" source="blog">
+ <id>blog-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="blog">
+ <id>blog-3</id>
+ </hit>
+ </content>
</section>
<section id="section:box4">
- <hit relevance="1.0" source="images">
- <id>images-1</id>
- </hit>
- <hit relevance="0.5" source="images">
- <id>images-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="images">
- <id>images-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="images">
+ <id>images-1</id>
+ </hit>
+ <hit relevance="0.5" source="images">
+ <id>images-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="images">
+ <id>images-3</id>
+ </hit>
+ </content>
</section>
</section>
-
-</result>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
index 8bb3e9cd2db..999a6d32ac6 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/ExecutionAbstractTestCase.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
+import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.io.IOUtils;
import com.yahoo.prelude.templates.TiledTemplateSet;
import com.yahoo.prelude.templates.UserTemplate;
@@ -8,10 +9,13 @@ import com.yahoo.prelude.templates.test.TilingTestCase;
import com.yahoo.search.Result;
import com.yahoo.search.pagetemplates.PageTemplate;
import com.yahoo.search.pagetemplates.config.PageTemplateXMLReader;
+import com.yahoo.search.pagetemplates.result.PageTemplatesXmlRenderer;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
+import com.yahoo.text.Utf8;
import java.io.*;
+import java.util.List;
import static org.junit.Assert.*;
@@ -52,23 +56,32 @@ public class ExecutionAbstractTestCase {
assertRendered(result,resultFileName,false);
}
- protected void assertRendered(Result result, String resultFileName, UserTemplate<?> template) {
- assertRendered(result, resultFileName, template,false);
- }
-
- protected void assertRendered(Result result,String resultFileName,boolean print) {
- assertRendered(result,resultFileName,new TiledTemplateSet(),print);
- }
-
@SuppressWarnings("deprecation")
- protected void assertRendered(Result result,String resultFileName,UserTemplate<?> template, boolean print) {
- result.getTemplating().setTemplates(template);
+ protected void assertRendered(Result result, String resultFileName, boolean print) {
try {
- TilingTestCase.assertRendered(IOUtils.readFile(new File(root + resultFileName)), result);
+ PageTemplatesXmlRenderer renderer = new PageTemplatesXmlRenderer();
+ renderer.init();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ListenableFuture<Boolean> f = renderer.render(stream, result, null, null);
+ assertTrue(f.get());
+ String renderedResult = Utf8.toString(stream.toByteArray());
+ if (print)
+ System.out.println(renderedResult);
+ assertEquals(removeComments(IOUtils.getLines(root + resultFileName)),
+ renderedResult);
}
- catch (IOException e) {
+ catch (Exception e) {
throw new RuntimeException(e);
}
}
+ private String removeComments(List<String> xmlLines) {
+ StringBuilder b = new StringBuilder();
+ for (String line : xmlLines) {
+ if (line.trim().startsWith("<!--")) continue;
+ b.append(line).append('\n');
+ }
+ return b.toString();
+ }
+
}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml
index 4272e54aeec..5fceca589e4 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSectionsToSectionsResult.xml
@@ -1,96 +1,103 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0" layout="column">
-
+<page version="1.0" layout="column">
<section layout="row">
<section id="section:box1">
- <hit relevance="1.0" source="source1">
- <id>source1-1</id>
- </hit>
- <hit relevance="0.5" source="source1">
- <id>source1-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source1">
- <id>source1-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source1">
+ <id>source1-1</id>
+ </hit>
+ <hit relevance="0.5" source="source1">
+ <id>source1-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source1">
+ <id>source1-3</id>
+ </hit>
+ </content>
</section>
<section id="section:box2">
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
- <hit relevance="0.25" source="source2">
- <id>source2-4</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ <hit relevance="0.25" source="source2">
+ <id>source2-4</id>
+ </hit>
+ </content>
</section>
</section>
-
<section layout="row">
<section id="section:box3">
- <hit relevance="1.0" source="source3">
- <id>source3-1</id>
- </hit>
- <hit relevance="0.5" source="source3">
- <id>source3-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source3">
- <id>source3-3</id>
- </hit>
- <hit relevance="0.25" source="source3">
- <id>source3-4</id>
- </hit>
- <hit relevance="0.2" source="source3">
- <id>source3-5</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source3">
+ <id>source3-1</id>
+ </hit>
+ <hit relevance="0.5" source="source3">
+ <id>source3-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source3">
+ <id>source3-3</id>
+ </hit>
+ <hit relevance="0.25" source="source3">
+ <id>source3-4</id>
+ </hit>
+ <hit relevance="0.2" source="source3">
+ <id>source3-5</id>
+ </hit>
+ </content>
</section>
<section id="section:box5">
- <hit relevance="1.0" source="source5">
- <id>source5-1</id>
- </hit>
- <hit relevance="0.5" source="source5">
- <id>source5-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source5">
- <id>source5-3</id>
- </hit>
- <hit relevance="0.25" source="source5">
- <id>source5-4</id>
- </hit>
- <hit relevance="0.2" source="source5">
- <id>source5-5</id>
- </hit>
- <hit relevance="0.16666666666666666" source="source5">
- <id>source5-6</id>
- </hit>
- <hit relevance="0.14285714285714285" source="source5">
- <id>source5-7</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source5">
+ <id>source5-1</id>
+ </hit>
+ <hit relevance="0.5" source="source5">
+ <id>source5-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source5">
+ <id>source5-3</id>
+ </hit>
+ <hit relevance="0.25" source="source5">
+ <id>source5-4</id>
+ </hit>
+ <hit relevance="0.2" source="source5">
+ <id>source5-5</id>
+ </hit>
+ <hit relevance="0.16666666666666666" source="source5">
+ <id>source5-6</id>
+ </hit>
+ <hit relevance="0.14285714285714285" source="source5">
+ <id>source5-7</id>
+ </hit>
+ </content>
</section>
<section id="section:box4">
- <hit relevance="1.0" source="source4">
- <id>source4-1</id>
- </hit>
- <hit relevance="0.5" source="source4">
- <id>source4-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source4">
- <id>source4-3</id>
- </hit>
- <hit relevance="0.25" source="source4">
- <id>source4-4</id>
- </hit>
- <hit relevance="0.2" source="source4">
- <id>source4-5</id>
- </hit>
- <hit relevance="0.16666666666666666" source="source4">
- <id>source4-6</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source4">
+ <id>source4-1</id>
+ </hit>
+ <hit relevance="0.5" source="source4">
+ <id>source4-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source4">
+ <id>source4-3</id>
+ </hit>
+ <hit relevance="0.25" source="source4">
+ <id>source4-4</id>
+ </hit>
+ <hit relevance="0.2" source="source4">
+ <id>source4-5</id>
+ </hit>
+ <hit relevance="0.16666666666666666" source="source4">
+ <id>source4-6</id>
+ </hit>
+ </content>
</section>
</section>
-
-</result>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml
index 623918c8739..0c29127da26 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/MapSourcesToSectionsResult.xml
@@ -1,73 +1,78 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0" layout="column">
-
+<page version="1.0" layout="column">
<section layout="row">
<section id="section:box1">
- <hit relevance="1.0" source="source1">
- <id>source1-1</id>
- </hit>
- <hit relevance="0.5" source="source1">
- <id>source1-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source1">
- <id>source1-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source1">
+ <id>source1-1</id>
+ </hit>
+ <hit relevance="0.5" source="source1">
+ <id>source1-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source1">
+ <id>source1-3</id>
+ </hit>
+ </content>
</section>
<section id="section:box2">
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
- <hit relevance="0.25" source="source2">
- <id>source2-4</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ <hit relevance="0.25" source="source2">
+ <id>source2-4</id>
+ </hit>
+ </content>
</section>
</section>
-
<section layout="row">
<section id="section:box3">
- <hit relevance="1.0" source="source3">
- <id>source3-1</id>
- </hit>
- <hit relevance="0.5" source="source3">
- <id>source3-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source3">
- <id>source3-3</id>
- </hit>
- <hit relevance="0.25" source="source3">
- <id>source3-4</id>
- </hit>
- <hit relevance="0.2" source="source3">
- <id>source3-5</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source3">
+ <id>source3-1</id>
+ </hit>
+ <hit relevance="0.5" source="source3">
+ <id>source3-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source3">
+ <id>source3-3</id>
+ </hit>
+ <hit relevance="0.25" source="source3">
+ <id>source3-4</id>
+ </hit>
+ <hit relevance="0.2" source="source3">
+ <id>source3-5</id>
+ </hit>
+ </content>
</section>
<section id="section:box4">
- <hit relevance="1.0" source="source4">
- <id>source4-1</id>
- </hit>
- <hit relevance="0.5" source="source4">
- <id>source4-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source4">
- <id>source4-3</id>
- </hit>
- <hit relevance="0.25" source="source4">
- <id>source4-4</id>
- </hit>
- <hit relevance="0.2" source="source4">
- <id>source4-5</id>
- </hit>
- <hit relevance="0.16666666666666666" source="source4">
- <id>source4-6</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source4">
+ <id>source4-1</id>
+ </hit>
+ <hit relevance="0.5" source="source4">
+ <id>source4-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source4">
+ <id>source4-3</id>
+ </hit>
+ <hit relevance="0.25" source="source4">
+ <id>source4-4</id>
+ </hit>
+ <hit relevance="0.2" source="source4">
+ <id>source4-5</id>
+ </hit>
+ <hit relevance="0.16666666666666666" source="source4">
+ <id>source4-6</id>
+ </hit>
+ </content>
</section>
</section>
-
-</result>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml
index 1ac4368d3ec..29c6f47765c 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageResult.xml
@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
-
<renderer name="two-column"/>
-
<section region="left">
<source url="http://carmot.yahoo.com:4080/resource/[news article id]"/>
<renderer name="articleBodyRenderer">
<parameter name="color">blue</parameter>
</renderer>
</section>
-
<section region="right">
<renderer name="multi-item-column">
<parameter name="items">3</parameter>
@@ -39,5 +36,4 @@
</content>
</section>
</section>
-
</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java
index d2f109aad76..1935ad95c40 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageTestCase.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
-import com.yahoo.prelude.templates.PageTemplateSet;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.pagetemplates.engine.Organizer;
@@ -38,7 +37,7 @@ public class PageTestCase extends ExecutionAbstractTestCase {
organizer.organize(page, resolution, result);
// Check rendering
- assertRendered(result, "PageResult.xml", new PageTemplateSet());
+ assertRendered(result, "PageResult.xml");
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml
index 01f74ad67a2..e7e7a37715c 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingResult.xml
@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
-
<renderer name="two-column"/>
-
<section region="left">
<source url="http://carmot.yahoo.com:4080/resource/[news article id]"/>
<renderer name="articleBodyRenderer">
<parameter name="color">blue</parameter>
</renderer>
</section>
-
<section region="right">
<renderer name="multi-item-column">
<parameter name="items">3</parameter>
@@ -41,5 +38,4 @@
</content>
</section>
</section>
-
</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java
index 0e8088d8b2a..5c8d756a72d 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithBlendingTestCase.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
-import com.yahoo.prelude.templates.PageTemplateSet;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.pagetemplates.engine.Organizer;
@@ -12,7 +11,7 @@ import com.yahoo.search.pagetemplates.model.Choice;
import org.junit.Test;
/**
- * Tests an exapnded example.
+ * Tests an expanded example.
*
* @author bratseth
*/
@@ -21,24 +20,24 @@ public class PageWithBlendingTestCase extends ExecutionAbstractTestCase {
@Test
public void testExecution() {
// Create the page template
- Choice page=Choice.createSingleton(importPage("PageWithBlending.xml"));
+ Choice page = Choice.createSingleton(importPage("PageWithBlending.xml"));
// Create a federated result
- Query query=new Query();
- Result result=new Result(query);
- result.hits().add(createHits("news",2));
- result.hits().add(createHits("htmlSource",1));
+ Query query = new Query();
+ Result result = new Result(query);
+ result.hits().add(createHits("news", 2));
+ result.hits().add(createHits("htmlSource", 1));
// Resolve (noop here)
- Resolver resolver=new DeterministicResolver();
- Resolution resolution=resolver.resolve(page,query,result);
+ Resolver resolver = new DeterministicResolver();
+ Resolution resolution = resolver.resolve(page, query, result);
// Execute
- Organizer organizer =new Organizer();
- organizer.organize(page,resolution,result);
+ Organizer organizer = new Organizer();
+ organizer.organize(page, resolution, result);
// Check rendering
- assertRendered(result,"PageWithBlendingResult.xml",new PageTemplateSet());
+ assertRendered(result, "PageWithBlendingResult.xml");
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml
index 95f01a6d7c8..9dd3610c136 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererResult.xml
@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
-
<renderer name="two-column"/>
-
<section region="left">
<source url="http://carmot.yahoo.com:4080/resource/[news article id]"/>
<renderer name="articleBodyRenderer">
<parameter name="color">blue</parameter>
</renderer>
</section>
-
<section region="right">
<renderer name="multi-item-column">
<parameter name="items">3</parameter>
@@ -39,5 +36,4 @@
</content>
</section>
</section>
-
</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java
index 4a9ad9745cf..35cc129ba93 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/PageWithSourceRendererTestCase.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
-import com.yahoo.prelude.templates.PageTemplateSet;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.pagetemplates.engine.Organizer;
@@ -21,24 +20,24 @@ public class PageWithSourceRendererTestCase extends ExecutionAbstractTestCase {
@Test
public void testExecution() {
// Create the page template
- Choice page=Choice.createSingleton(importPage("PageWithSourceRenderer.xml"));
+ Choice page = Choice.createSingleton(importPage("PageWithSourceRenderer.xml"));
// Create a federated result
- Query query=new Query();
- Result result=new Result(query);
- result.hits().add(createHits("news",2));
- result.hits().add(createHits("htmlSource",1));
+ Query query = new Query();
+ Result result = new Result(query);
+ result.hits().add(createHits("news", 2));
+ result.hits().add(createHits("htmlSource", 1));
// Resolve
- Resolver resolver=new DeterministicResolver();
- Resolution resolution=resolver.resolve(page,query,result);
+ Resolver resolver = new DeterministicResolver();
+ Resolution resolution = resolver.resolve(page, query, result);
// Execute
- Organizer organizer =new Organizer();
- organizer.organize(page,resolution,result);
+ Organizer organizer = new Organizer();
+ organizer.organize(page, resolution, result);
// Check rendering
- assertRendered(result,"PageWithSourceRendererResult.xml",new PageTemplateSet());
+ assertRendered(result, "PageWithSourceRendererResult.xml");
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml
index dfdbac4b7ce..2c7bdff75fb 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceResult.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<page version="1.0">
-
<content>
<hit relevance="1.0" source="web">
<id>web-1</id>
@@ -13,5 +12,4 @@
<id>web-3</id>
</hit>
</content>
-
</page>
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java
index 5c6cbbb4e27..93b6a958657 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/SourceChoiceTestCase.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.pagetemplates.engine.test;
-import com.yahoo.prelude.templates.PageTemplateSet;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.pagetemplates.engine.Organizer;
@@ -19,25 +18,25 @@ public class SourceChoiceTestCase extends ExecutionAbstractTestCase {
@Test
public void testExecution() {
// Create the page template
- Choice page=Choice.createSingleton(importPage("SourceChoice.xml"));
+ Choice page = Choice.createSingleton(importPage("SourceChoice.xml"));
// Create a federated result
- Query query=new Query();
- Result result=new Result(query);
- result.hits().add(createHits("web",3));
- result.hits().add(createHits("news",3));
- result.hits().add(createHits("blog",3));
+ Query query = new Query();
+ Result result = new Result(query);
+ result.hits().add(createHits("web", 3));
+ result.hits().add(createHits("news", 3));
+ result.hits().add(createHits("blog", 3));
// Resolve (noop here)
- Resolver resolver=new DeterministicResolver();
- Resolution resolution=resolver.resolve(page,query,result);
+ Resolver resolver = new DeterministicResolver();
+ Resolution resolution = resolver.resolve(page,query,result);
// Execute
- Organizer organizer =new Organizer();
- organizer.organize(page,resolution,result);
+ Organizer organizer = new Organizer();
+ organizer.organize(page, resolution, result);
// Check rendering
- assertRendered(result,"SourceChoiceResult.xml",new PageTemplateSet(),true);
+ assertRendered(result,"SourceChoiceResult.xml", false);
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml
index 73b62afd6c1..0b0fe91e7b4 100644
--- a/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml
+++ b/container-search/src/test/java/com/yahoo/search/pagetemplates/engine/test/TwoSectionsFourSourcesResult.xml
@@ -1,65 +1,66 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-<result version="1.0" layout="twoColumns">
-
+<page version="1.0" layout="twoColumns">
<section region="left">
- <hit relevance="1.0" source="source3">
- <id>source3-1</id>
- </hit>
- <hit relevance="0.5" source="source3">
- <id>source3-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source3">
- <id>source3-3</id>
- </hit>
- <hit relevance="0.25" source="source3">
- <id>source3-4</id>
- </hit>
- <hit relevance="0.2" source="source3">
- <id>source3-5</id>
- </hit>
- <hit relevance="1.0" source="source1">
- <id>source1-1</id>
- </hit>
- <hit relevance="0.5" source="source1">
- <id>source1-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source1">
- <id>source1-3</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source3">
+ <id>source3-1</id>
+ </hit>
+ <hit relevance="0.5" source="source3">
+ <id>source3-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source3">
+ <id>source3-3</id>
+ </hit>
+ <hit relevance="0.25" source="source3">
+ <id>source3-4</id>
+ </hit>
+ <hit relevance="0.2" source="source3">
+ <id>source3-5</id>
+ </hit>
+ <hit relevance="1.0" source="source1">
+ <id>source1-1</id>
+ </hit>
+ <hit relevance="0.5" source="source1">
+ <id>source1-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source1">
+ <id>source1-3</id>
+ </hit>
+ </content>
</section>
-
<section region="right">
- <hit relevance="1.0" source="source4">
- <id>source4-1</id>
- </hit>
- <hit relevance="1.0" source="source2">
- <id>source2-1</id>
- </hit>
- <hit relevance="0.5" source="source4">
- <id>source4-2</id>
- </hit>
- <hit relevance="0.5" source="source2">
- <id>source2-2</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source4">
- <id>source4-3</id>
- </hit>
- <hit relevance="0.3333333333333333" source="source2">
- <id>source2-3</id>
- </hit>
- <hit relevance="0.25" source="source4">
- <id>source4-4</id>
- </hit>
- <hit relevance="0.25" source="source2">
- <id>source2-4</id>
- </hit>
- <hit relevance="0.2" source="source4">
- <id>source4-5</id>
- </hit>
- <hit relevance="0.16666666666666666" source="source4">
- <id>source4-6</id>
- </hit>
+ <content>
+ <hit relevance="1.0" source="source4">
+ <id>source4-1</id>
+ </hit>
+ <hit relevance="1.0" source="source2">
+ <id>source2-1</id>
+ </hit>
+ <hit relevance="0.5" source="source4">
+ <id>source4-2</id>
+ </hit>
+ <hit relevance="0.5" source="source2">
+ <id>source2-2</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source4">
+ <id>source4-3</id>
+ </hit>
+ <hit relevance="0.3333333333333333" source="source2">
+ <id>source2-3</id>
+ </hit>
+ <hit relevance="0.25" source="source4">
+ <id>source4-4</id>
+ </hit>
+ <hit relevance="0.25" source="source2">
+ <id>source2-4</id>
+ </hit>
+ <hit relevance="0.2" source="source4">
+ <id>source4-5</id>
+ </hit>
+ <hit relevance="0.16666666666666666" source="source4">
+ <id>source4-6</id>
+ </hit>
+ </content>
</section>
-
-</result>
+</page>
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
index a52d9bcdb6c..41b2a235daa 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/XMLRendererTestCase.java
@@ -31,7 +31,7 @@ import com.yahoo.text.Utf8;
/**
* Test the XML renderer
*
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ * @author Steinar Knutsen
*/
public class XMLRendererTestCase {
diff --git a/container-search/src/test/java/com/yahoo/search/result/test/DefaultErrorHitTestCase.java b/container-search/src/test/java/com/yahoo/search/result/test/DefaultErrorHitTestCase.java
deleted file mode 100644
index 14e127ec72c..00000000000
--- a/container-search/src/test/java/com/yahoo/search/result/test/DefaultErrorHitTestCase.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.search.result.test;
-
-import com.yahoo.prelude.templates.SearchRendererAdaptor;
-import com.yahoo.search.result.DefaultErrorHit;
-import com.yahoo.search.result.ErrorMessage;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.io.StringWriter;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author bratseth
- */
-public class DefaultErrorHitTestCase {
-
- @Test
- public void testErrorHitRenderingWithException() throws IOException {
- NullPointerException cause=null;
- try {
- Object a=null;
- a.toString();
- }
- catch (NullPointerException e) {
- cause=e;
- }
- StringWriter w=new StringWriter();
- SearchRendererAdaptor.simpleRenderDefaultErrorHit(w, new DefaultErrorHit("test", new ErrorMessage(79, "Myerror", "Mydetail", cause)));
- String sep = System.getProperty("line.separator");
- assertEquals(
- "<errordetails>\n" +
- " <error source=\"test\" error=\"Myerror\" code=\"79\">Mydetail\n" +
- " <cause>\n" +
- "java.lang.NullPointerException" + sep +
- "\tat "
- ,w.toString().substring(0, 119+sep.length()));
- }
-
-}