| /** |
| * |
| */ |
| package org.eclipse.smila.solr.response; |
| |
| import org.apache.solr.client.solrj.SolrResponse; |
| import org.apache.solr.client.solrj.response.SolrResponseBase; |
| import org.apache.solr.common.util.NamedList; |
| import org.eclipse.smila.datamodel.AnyMap; |
| import org.eclipse.smila.datamodel.DataFactory; |
| import org.eclipse.smila.datamodel.Record; |
| import org.eclipse.smila.search.api.helper.ResultBuilder; |
| import org.eclipse.smila.solr.SolrConstants; |
| import org.eclipse.smila.solr.SolrUtils; |
| import org.eclipse.smila.solr.params.SolrParams; |
| import org.eclipse.smila.solr.search.ResponseAccessor; |
| |
| /** |
| * @author pwissel |
| * |
| */ |
| public abstract class ResponseParser { |
| |
| protected final ResultBuilder _resultBuilder; |
| |
| public ResponseParser() { |
| this(DataFactory.DEFAULT.createRecord("solr-response")); |
| } |
| |
| public ResponseParser(final Record record) { |
| _resultBuilder = new ResultBuilder(record); |
| } |
| |
| public Record returnAsRecord() { |
| return _resultBuilder.getResult(); |
| } |
| |
| public AnyMap returnAsAnyMap() { |
| return returnAsRecord().getMetadata(); |
| } |
| |
| public ResultBuilder getResultBuilder() { |
| return _resultBuilder; |
| } |
| |
| public ResponseParser parse(final SolrResponse response) { |
| if (response instanceof SolrResponseBase) { |
| @SuppressWarnings("unchecked") |
| final NamedList<Object> header = ((SolrResponseBase) response).getResponseHeader(); |
| if (header != null) { |
| final AnyMap responseHeader = getSolrResponse().getMap(SolrConstants.RESPONSE_HEADER, true); |
| SolrUtils.parseNamedList(header, responseHeader); |
| } |
| } |
| return this; |
| } |
| |
| protected AnyMap getSolrResponse() { |
| return returnAsAnyMap().getMap(SolrParams.SOLR_PARAMETER_ATTRIBUTE, true).getMap(ResponseAccessor.RESPONSE, |
| true); |
| } |
| |
| } |