Example usage for org.apache.solr.servlet SolrRequestParsers DEFAULT

List of usage examples for org.apache.solr.servlet SolrRequestParsers DEFAULT

Introduction

In this page you can find the example usage for org.apache.solr.servlet SolrRequestParsers DEFAULT.

Prototype

SolrRequestParsers DEFAULT

To view the source code for org.apache.solr.servlet SolrRequestParsers DEFAULT.

Click Source Link

Document

Default instance for e.g.

Usage

From source file:org.apache.sentry.tests.e2e.solr.ModifiableUserAuthenticationFilter.java

License:Apache License

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    SolrRequestParsers.DEFAULT.setAddRequestHeadersToContext(true);
}

From source file:org.vootoo.server.RequestProcesser.java

License:Apache License

public void handleRequest(RequestGetter requestGetter) {
    MDCLoggingContext.reset();// w  w  w.  java  2 s .  c om
    MDCLoggingContext.setNode(cores);

    String path = requestGetter.getPath();
    solrParams = requestGetter.getSolrParams();
    SolrRequestHandler handler = null;
    String corename = "";
    String origCorename = null;
    try {
        // set a request timer which can be reused by requests if needed
        //req.setAttribute(SolrRequestParsers.REQUEST_TIMER_SERVLET_ATTRIBUTE, new RTimer());
        // put the core container in request attribute
        //req.setAttribute("org.apache.solr.CoreContainer", cores);
        // check for management path
        String alternate = cores.getManagementPath();
        if (alternate != null && path.startsWith(alternate)) {
            path = path.substring(0, alternate.length());
        }
        // unused feature ?
        int idx = path.indexOf(':');
        if (idx > 0) {
            // save the portion after the ':' for a 'handler' path parameter
            path = path.substring(0, idx);
        }

        boolean usingAliases = false;
        List<String> collectionsList = null;

        // Check for container handlers
        handler = cores.getRequestHandler(path);
        if (handler != null) {
            solrReq = parseSolrQueryRequest(SolrRequestParsers.DEFAULT, requestGetter);
            handleAdminRequest(handler, solrReq);
            return;
        } else {
            //otherwise, we should find a core from the path
            idx = path.indexOf("/", 1);
            if (idx > 1) {
                // try to get the corename as a request parameter first
                corename = path.substring(1, idx);

                // look at aliases
                if (cores.isZooKeeperAware()) {
                    origCorename = corename;
                    ZkStateReader reader = cores.getZkController().getZkStateReader();
                    aliases = reader.getAliases();
                    if (aliases != null && aliases.collectionAliasSize() > 0) {
                        usingAliases = true;
                        String alias = aliases.getCollectionAlias(corename);
                        if (alias != null) {
                            collectionsList = StrUtils.splitSmart(alias, ",", true);
                            corename = collectionsList.get(0);
                        }
                    }
                }

                core = cores.getCore(corename);

                if (core != null) {
                    path = path.substring(idx);
                }
            }

            //add collection name
            if (core == null && StringUtils.isNotBlank(requestGetter.getCollection())) {
                corename = requestGetter.getCollection();
                core = cores.getCore(corename);
            }

            if (core == null) {
                if (!cores.isZooKeeperAware()) {
                    core = cores.getCore("");
                }
            }
        }

        if (core == null && cores.isZooKeeperAware()) {
            // we couldn't find the core - lets make sure a collection was not specified instead
            core = getCoreByCollection(cores, corename);

            if (core != null) {
                // we found a core, update the path
                path = path.substring(idx);
            }

            // try the default core
            if (core == null) {
                core = cores.getCore("");
                if (core != null) {
                }
            }
        }

        // With a valid core...
        if (core != null) {
            MDCLoggingContext.setCore(core);
            final SolrConfig config = core.getSolrConfig();
            // get or create/cache the parser for the core
            SolrRequestParsers parser = config.getRequestParsers();

            // Determine the handler from the url path if not set
            // (we might already have selected the cores handler)
            if (handler == null && path.length() > 1) { // don't match "" or "/" as valid path
                handler = core.getRequestHandler(path);

                if (handler == null) {
                    //may be a restlet path
                    // Handle /schema/* paths via Restlet
                    if (path.equals("/schema") || path.startsWith("/schema/")) {
                        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                                "unsupport /schema/**, use http solr");
                    }

                }
                // no handler yet but allowed to handle select; let's check
                if (handler == null && parser.isHandleSelect()) {
                    if ("/select".equals(path) || "/select/".equals(path)) {
                        solrReq = parseSolrQueryRequest(parser, requestGetter);

                        invalidStates = checkStateIsValid(cores,
                                solrReq.getParams().get(CloudSolrClient.STATE_VERSION));
                        String qt = solrReq.getParams().get(CommonParams.QT);
                        handler = core.getRequestHandler(qt);
                        if (handler == null) {
                            throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                                    "unknown handler: " + qt);
                        }
                        if (qt != null && qt.startsWith("/") && (handler instanceof ContentStreamHandlerBase)) {
                            //For security reasons it's a bad idea to allow a leading '/', ex: /select?qt=/update see SOLR-3161
                            //There was no restriction from Solr 1.4 thru 3.5 and it's not supported for update handlers.
                            throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                                    "Invalid Request Handler ('qt').  Do not use /select to access: " + qt);
                        }
                    }
                }
            }

            // With a valid handler and a valid core...
            if (handler != null) {
                // if not a /select, create the request
                if (solrReq == null) {
                    solrReq = parseSolrQueryRequest(parser, requestGetter);
                }

                if (usingAliases) {
                    processAliases(solrReq, aliases, collectionsList);
                }

                SolrQueryResponse solrRsp = new SolrQueryResponse();
                SolrRequestInfo.setRequestInfo(new SolrRequestInfo(solrReq, solrRsp));
                this.execute(handler, solrReq, solrRsp);
                QueryResponseWriter responseWriter = core.getQueryResponseWriter(solrReq);
                if (invalidStates != null)
                    solrReq.getContext().put(CloudSolrClient.STATE_VERSION, invalidStates);
                writeResponse(solrRsp, responseWriter, solrReq);

                return; // we are done with a valid handler
            }
        }
        logger.debug("no handler or core retrieved for {}, follow through...", path);
        throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                "no handler or core retrieved for " + path);
    } catch (Throwable ex) {
        sendError(core, solrReq, ex);
        // walk the the entire cause chain to search for an Error
        Throwable t = ex;
        while (t != null) {
            if (t instanceof Error) {
                if (t != ex) {
                    logger.error(
                            "An Error was wrapped in another exception - please report complete stacktrace on SOLR-6161",
                            ex);
                }
                throw (Error) t;
            }
            t = t.getCause();
        }
        return;
    } finally {
        try {
            if (solrReq != null) {
                logger.debug("Closing out SolrRequest: {}", solrReq);
                solrReq.close();
            }
        } finally {
            try {
                if (core != null) {
                    core.close();
                }
            } finally {
                SolrRequestInfo.clearRequestInfo();
            }

        }
        MDCLoggingContext.clear();
    }
}