List of usage examples for org.apache.solr.response BinaryQueryResponseWriter write
public void write(OutputStream out, SolrQueryRequest request, SolrQueryResponse response) throws IOException;
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(); } }