Example usage for org.apache.solr.response BinaryQueryResponseWriter write

List of usage examples for org.apache.solr.response BinaryQueryResponseWriter write

Introduction

In this page you can find the example usage for org.apache.solr.response BinaryQueryResponseWriter write.

Prototype

public void write(OutputStream out, SolrQueryRequest request, SolrQueryResponse response) throws IOException;

Source Link

Document

Use it to write the response in a binary format

Usage

From source file:net.yacy.http.servlets.SolrServlet.java

License:Open Source License

@Override
public void service(ServletRequest request, ServletResponse response) throws IOException, ServletException {

    HttpServletRequest hrequest = (HttpServletRequest) request;

    final Method reqMethod = Method.getMethod(hrequest.getMethod());

    // get the embedded connector
    String requestURI = hrequest.getRequestURI();
    MultiMapSolrParams mmsp = SolrRequestParsers.parseQueryString(hrequest.getQueryString());
    boolean defaultConnector = (requestURI.startsWith("/solr/" + WebgraphSchema.CORE_NAME)) ? false
            : requestURI.startsWith("/solr/" + CollectionSchema.CORE_NAME)
                    || mmsp.get("core", CollectionSchema.CORE_NAME).equals(CollectionSchema.CORE_NAME);
    mmsp.getMap().remove("core");
    Switchboard sb = Switchboard.getSwitchboard();
    EmbeddedSolrConnector connector = defaultConnector ? sb.index.fulltext().getDefaultEmbeddedConnector()
            : sb.index.fulltext().getEmbeddedConnector(WebgraphSchema.CORE_NAME);
    if (connector == null)
        throw new ServletException("no core");

    SolrQueryResponse solrRsp = new SolrQueryResponse();
    SolrQueryRequest solrReq = null;/*from  w  w w. j  ava2 s  .  c o  m*/
    try {
        solrReq = connector.request(mmsp); // SolrRequestParsers.DEFAULT.parse(null, hrequest.getServletPath(), hrequest);
        solrReq.getContext().put("webapp", hrequest.getContextPath());
        SolrRequestHandler handler = sb.index.fulltext().getEmbeddedInstance().getCoreContainer()
                .getMultiCoreHandler();
        connector.getCore().execute(handler, solrReq, solrRsp);

        // write response header 
        QueryResponseWriter responseWriter = connector.getCore().getQueryResponseWriter(solrReq);

        final String ct = responseWriter.getContentType(solrReq, solrRsp);
        if (null != ct)
            response.setContentType(ct);

        if (Method.HEAD != reqMethod) {
            if (responseWriter instanceof BinaryQueryResponseWriter) {
                BinaryQueryResponseWriter binWriter = (BinaryQueryResponseWriter) responseWriter;
                binWriter.write(response.getOutputStream(), solrReq, solrRsp);
            } else {
                String charset = ContentStreamBase.getCharsetFromContentType(ct);
                Writer out = (charset == null || charset.equalsIgnoreCase("UTF-8"))
                        ? new OutputStreamWriter(response.getOutputStream(), UTF8)
                        : new OutputStreamWriter(response.getOutputStream(), charset);
                out = new FastWriter(out);
                responseWriter.write(out, solrReq, solrRsp);
                out.flush();
            }
        }

        ConcurrentLog.info("luke", solrRsp.getValues().toString());

    } catch (Exception e) {
        ConcurrentLog.logException(e);
    } finally {
        if (solrReq != null)
            solrReq.close();
    }

}

From source file:org.opencms.search.solr.CmsSolrIndex.java

License:Open Source License

/**
 * Writes the Solr response.<p>//from w  w w.  jav  a  2s.c  o m
 *
 * @param response the servlet response
 * @param queryRequest the Solr request
 * @param queryResponse the Solr response to write
 *
 * @throws IOException if sth. goes wrong
 * @throws UnsupportedEncodingException if sth. goes wrong
 */
private void writeResp(ServletResponse response, SolrQueryRequest queryRequest, SolrQueryResponse queryResponse)
        throws IOException, UnsupportedEncodingException {

    if (m_solr instanceof EmbeddedSolrServer) {
        SolrCore core = ((EmbeddedSolrServer) m_solr).getCoreContainer().getCore(getCoreName());
        Writer out = null;
        try {
            QueryResponseWriter responseWriter = core.getQueryResponseWriter(queryRequest);

            final String ct = responseWriter.getContentType(queryRequest, queryResponse);
            if (null != ct) {
                response.setContentType(ct);
            }

            if (responseWriter instanceof BinaryQueryResponseWriter) {
                BinaryQueryResponseWriter binWriter = (BinaryQueryResponseWriter) responseWriter;
                binWriter.write(response.getOutputStream(), queryRequest, queryResponse);
            } else {
                String charset = ContentStreamBase.getCharsetFromContentType(ct);
                out = ((charset == null) || charset.equalsIgnoreCase(UTF8.toString()))
                        ? new OutputStreamWriter(response.getOutputStream(), UTF8)
                        : new OutputStreamWriter(response.getOutputStream(), charset);
                out = new FastWriter(out);
                responseWriter.write(out, queryRequest, queryResponse);
                out.flush();
            }
        } finally {
            core.close();
            if (out != null) {
                out.close();
            }
        }
    } else {
        throw new UnsupportedOperationException();
    }
}