List of usage examples for org.apache.solr.common.util ContentStreamBase getCharsetFromContentType
public static String getCharsetFromContentType(String contentType)
From source file:lux.solr.XQueryComponent.java
License:Mozilla Public License
private void handleContentStreams(LinkedTreeBuilder builder, SolrQueryRequest req, ArrayList<XdmItem> result, Evaluator evaluator) throws XPathException { // parts//from w w w .java 2 s .c om int i = 0; for (ContentStream stream : req.getContentStreams()) { String contentType = stream.getContentType(); //String name = stream.getName(); byte[] partBytes = null; try { partBytes = IOUtils.toByteArray(stream.getStream(), stream.getSize()); } catch (IOException e) { throw new LuxException(e); } String charset = ContentStreamBase.getCharsetFromContentType(contentType); if (charset == null) { charset = "utf-8"; } if (!isText(contentType)) { logger.warn("Binary values not supported; treating " + contentType + " as xml, or text"); } XdmItem part = null; if (isXML(contentType) || !isText(contentType)) { try { part = evaluator.build(new ByteArrayInputStream(partBytes), "#part" + i); } catch (LuxException e) { // failed to parse logger.warn("Caught an exception while parsing XML: " + e.getMessage() + ", treating it as plain text"); contentType = "text/plain; charset=" + charset; } } if (part == null) { String text; try { text = new String(partBytes, charset); } catch (UnsupportedEncodingException e1) { throw new LuxException(e1); } if (isHTML(contentType)) { HtmlParser parser = new HtmlParser(); //Parser parser = new Parser(); SAXSource source = new SAXSource(parser, new InputSource(new StringReader(text))); try { part = evaluator.getDocBuilder().build(source); } catch (SaxonApiException e) { e.printStackTrace(); logger.warn("failed to parse HTML; treating as plain text: " + e.getMessage()); } } if (part == null) { TextFragmentValue node = new TextFragmentValue(text, "#part" + i); node.setConfiguration(builder.getConfiguration()); part = new XdmNode(node); } } result.add(part); builder.startElement(fQNameFor("http", EXPATH_HTTP_NS, "body"), BuiltInAtomicType.UNTYPED_ATOMIC, 0, 0); addAttribute(builder, "position", "1"); addAttribute(builder, "content-type", contentType); builder.startContent(); builder.endElement(); } }
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 a va2s . c om 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(); } }
From source file:org.vootoo.client.netty.util.ProtobufContentStream.java
License:Apache License
@Override public Reader getReader() throws IOException { String charset = ContentStreamBase.getCharsetFromContentType(getContentType()); return charset == null ? new InputStreamReader(getStream(), ContentStreamBase.DEFAULT_CHARSET) : new InputStreamReader(getStream(), charset); }
From source file:org.vootoo.client.netty.util.ProtobufUtil.java
License:Apache License
public static String getResponseBodyCharset(SolrProtocol.SolrResponse protocolResponse) { String charset = ContentStreamBase.DEFAULT_CHARSET; if (protocolResponse != null) { SolrProtocol.ResponseBody responseBody = protocolResponse.getResponseBody(); if (responseBody != null) { charset = ContentStreamBase.getCharsetFromContentType(responseBody.getContentType()); }/* ww w . j a v a 2 s.c o m*/ } return charset; }