Example usage for org.apache.solr.common.util ContentStreamBase getCharsetFromContentType

List of usage examples for org.apache.solr.common.util ContentStreamBase getCharsetFromContentType

Introduction

In this page you can find the example usage for org.apache.solr.common.util ContentStreamBase getCharsetFromContentType.

Prototype

public static String getCharsetFromContentType(String contentType) 

Source Link

Usage

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;
}