From 89c59814dafe202cbfe8e9c8c0123e9089493a35 Mon Sep 17 00:00:00 2001 From: luccioman Date: Tue, 24 Jul 2018 10:13:55 +0200 Subject: [PATCH] Improved rendering of the Solr api relative url in the html writer In order to have a consistent relative url when using either /solr/select or /solr/collection1/select entry point. --- .../responsewriter/HTMLResponseWriter.java | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/source/net/yacy/cora/federate/solr/responsewriter/HTMLResponseWriter.java b/source/net/yacy/cora/federate/solr/responsewriter/HTMLResponseWriter.java index 2a7e999e5..5815f44da 100644 --- a/source/net/yacy/cora/federate/solr/responsewriter/HTMLResponseWriter.java +++ b/source/net/yacy/cora/federate/solr/responsewriter/HTMLResponseWriter.java @@ -120,12 +120,15 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri /** * Append a link to the related Solr API. * @param writer the output writer - * @param paramsList the original request parameters + * @param solrParams the original request parameters * @param coreName the requested Solr core name * @throws IOException when a write error occurred */ - private void writeApiLink(final Writer writer, final NamedList paramsList, final String coreName) throws IOException { - final String xmlquery = dqp.matcher("../solr/select?" + SolrParams.toSolrParams(paramsList).toString() + "&core=" + coreName).replaceAll("%22"); + private void writeApiLink(final Writer writer, final SolrParams solrParams, final String coreName) throws IOException { + final NamedList paramsList = solrParams.toNamedList(); + paramsList.remove("wt"); + + final String xmlquery = dqp.matcher("select?" + SolrParams.toSolrParams(paramsList).toString() + "&core=" + coreName).replaceAll("%22"); writer.write("
\"API\"\n"); writer.write("This search result can also be retrieved as XML. Click the API icon to see this page as XML.
\n"); @@ -290,9 +293,6 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri writeHtmlHead(writer); - NamedList paramsList = request.getOriginalParams().toNamedList(); - paramsList.remove("wt"); - final String coreName = request.getCore().getName(); final Object responseObj = rsp.getResponse(); @@ -304,7 +304,7 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri */ final SolrDocumentList docList = ((SolrDocumentList)responseObj); - writeSolrDocumentList(writer, request, rsp.getResponseHeader(), coreName, paramsList, docList); + writeSolrDocumentList(writer, request, rsp.getResponseHeader(), coreName, docList); } else if(responseObj instanceof ResultContext){ /* Regular response object */ final DocList documents = ((ResultContext)responseObj).getDocList(); @@ -325,7 +325,7 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri writeResponseHeader(writer, request, rsp.getResponseHeader()); - writeApiLink(writer, paramsList, coreName); + writeApiLink(writer, request.getOriginalParams(), coreName); writeDoc(writer, tdoc, coreName, rsp.getReturnFields()); @@ -360,14 +360,10 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri public void write(final Writer writer, final SolrQueryRequest request, final String coreName, final QueryResponse rsp) throws IOException { writeHtmlHead(writer); - final SolrParams originalParams = request.getOriginalParams(); - final NamedList paramsList = originalParams.toNamedList(); - paramsList.remove("wt"); - final SolrDocumentList docsList = rsp.getResults(); final NamedList responseHeader = rsp.getHeader(); - writeSolrDocumentList(writer, request, responseHeader, coreName, paramsList, docsList); + writeSolrDocumentList(writer, request, responseHeader, coreName, docsList); writer.write("\n"); } @@ -378,12 +374,12 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri * @param request the initial Solr request * @param responseHeader the eventual Solr response header * @param coreName the requested Solr core - * @param paramsList the original request parameters * @param docList the result Solr documents list * @throws IOException */ - private void writeSolrDocumentList(final Writer writer, final SolrQueryRequest request, final NamedList responseHeader, final String coreName, - final NamedList paramsList, final SolrDocumentList docList) throws IOException { + private void writeSolrDocumentList(final Writer writer, final SolrQueryRequest request, + final NamedList responseHeader, final String coreName, final SolrDocumentList docList) + throws IOException { final int sz = docList.size(); if (sz > 0) { final Iterator iterator = docList.iterator(); @@ -397,7 +393,7 @@ public class HTMLResponseWriter implements QueryResponseWriter, SolrjResponseWri writeResponseHeader(writer, request, responseHeader); - writeApiLink(writer, paramsList, coreName); + writeApiLink(writer, request.getOriginalParams(), coreName); writeDoc(writer, translateDoc(doc, fieldsToReturn), coreName, fieldsToReturn);