mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
Fixed a NPE case on the Solr OpenSearch response writer
Occurred when omitHeader parameter is set to true
This commit is contained in:
parent
f4267ed247
commit
dc49ca9c27
|
@ -119,12 +119,9 @@ public class OpensearchResponseWriter implements QueryResponseWriter, SolrjRespo
|
||||||
|
|
||||||
final Object responseObj = rsp.getResponse();
|
final Object responseObj = rsp.getResponse();
|
||||||
|
|
||||||
assert values.get("responseHeader") != null;
|
|
||||||
assert values.get("response") != null;
|
assert values.get("response") != null;
|
||||||
|
|
||||||
final NamedList<Object> responseHeader = rsp.getResponseHeader();
|
write(writer, request, values, responseObj);
|
||||||
|
|
||||||
write(writer, request, values, responseHeader, responseObj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -132,11 +129,9 @@ public class OpensearchResponseWriter implements QueryResponseWriter, SolrjRespo
|
||||||
|
|
||||||
final NamedList<Object> values = rsp.getResponse();
|
final NamedList<Object> values = rsp.getResponse();
|
||||||
|
|
||||||
final NamedList<?> responseHeader = rsp.getResponseHeader();
|
|
||||||
|
|
||||||
final SolrDocumentList documents = rsp.getResults();
|
final SolrDocumentList documents = rsp.getResults();
|
||||||
|
|
||||||
write(writer, request, values, responseHeader, documents);
|
write(writer, request, values, documents);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -148,8 +143,10 @@ public class OpensearchResponseWriter implements QueryResponseWriter, SolrjRespo
|
||||||
* @throws IOException when a write error occurred
|
* @throws IOException when a write error occurred
|
||||||
*/
|
*/
|
||||||
private void write(final Writer writer, final SolrQueryRequest request, final NamedList<?> values,
|
private void write(final Writer writer, final SolrQueryRequest request, final NamedList<?> values,
|
||||||
final NamedList<?> responseHeader, final Object responseObj) throws IOException {
|
final Object responseObj) throws IOException {
|
||||||
final ResHead resHead = new ResHead();
|
final ResHead resHead = new ResHead();
|
||||||
|
resHead.rows = request.getOriginalParams().getLong("rows", -1);
|
||||||
|
|
||||||
final int responseCount;
|
final int responseCount;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -169,7 +166,7 @@ public class OpensearchResponseWriter implements QueryResponseWriter, SolrjRespo
|
||||||
|
|
||||||
responseCount = documents.size();
|
responseCount = documents.size();
|
||||||
|
|
||||||
writeHeader(writer, responseHeader, resHead);
|
writeHeader(writer, resHead);
|
||||||
|
|
||||||
writeDocs(writer, documents, request, responseCount, snippets);
|
writeDocs(writer, documents, request, responseCount, snippets);
|
||||||
} else if(responseObj instanceof SolrDocumentList) {
|
} else if(responseObj instanceof SolrDocumentList) {
|
||||||
|
@ -184,7 +181,7 @@ public class OpensearchResponseWriter implements QueryResponseWriter, SolrjRespo
|
||||||
|
|
||||||
responseCount = documents.size();
|
responseCount = documents.size();
|
||||||
|
|
||||||
writeHeader(writer, responseHeader, resHead);
|
writeHeader(writer, resHead);
|
||||||
|
|
||||||
writeDocs(writer, documents, responseCount, snippets);
|
writeDocs(writer, documents, responseCount, snippets);
|
||||||
} else {
|
} else {
|
||||||
|
@ -239,16 +236,11 @@ public class OpensearchResponseWriter implements QueryResponseWriter, SolrjRespo
|
||||||
/**
|
/**
|
||||||
* Append to the writer the header of the OpenSearch RSS representation.
|
* Append to the writer the header of the OpenSearch RSS representation.
|
||||||
* @param writer an open output writer. Must not be null.
|
* @param writer an open output writer. Must not be null.
|
||||||
* @param responseHeader the Solr response header. Must not be null.
|
|
||||||
* @param resHead the calculated results head. Must not be null.
|
* @param resHead the calculated results head. Must not be null.
|
||||||
* @throws IOException when an unexpected error occurred while writing
|
* @throws IOException when an unexpected error occurred while writing
|
||||||
*/
|
*/
|
||||||
private void writeHeader(final Writer writer, final NamedList<?> responseHeader, final ResHead resHead)
|
private void writeHeader(final Writer writer, final ResHead resHead)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
// parse response header
|
|
||||||
final NamedList<?> val0 = (NamedList<?>) responseHeader.get("params");
|
|
||||||
resHead.rows = Integer.parseInt((String) val0.get("rows"));
|
|
||||||
|
|
||||||
// write header
|
// write header
|
||||||
writer.write((
|
writer.write((
|
||||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
||||||
|
|
Loading…
Reference in New Issue
Block a user