Package com.tinkerpop.rexster.protocol

Examples of com.tinkerpop.rexster.protocol.EngineHolder


        final GraphSONMode mode = showTypes ? GraphSONMode.EXTENDED : GraphSONMode.NORMAL;
        final Set<String> returnKeys = RequestObjectHelper.getReturnKeys(requestObject, WILDCARD);

        final String languageToExecuteWith = getLanguageToExecuteWith(requestObject);
        final EngineHolder engineHolder;
        final ScriptEngine scriptEngine;
        try {
            if (!engineController.isEngineAvailable(languageToExecuteWith)) {
                return ExtensionResponse.error("language requested is not available on the server");
            }

            engineHolder = engineController.getEngineByLanguageName(languageToExecuteWith);
            scriptEngine = engineHolder.getEngine();
        } catch (ScriptException se) {
            return ExtensionResponse.error("could not get request script engine");
        }

        final Bindings bindings = createBindings(graph, vertex, edge, scriptEngine);

        // add all keys not defined by this request as bindings to the script engine
        placeParametersOnBinding(requestObject, bindings, showTypes);

        // get the list of "stored procedures" to run
        final RexsterApplicationGraph rag = rexsterResourceContext.getRexsterApplicationGraph();

        final ExtensionMethod extensionMethod = rexsterResourceContext.getExtensionMethod();
        Map configurationMap = null;

        Iterator<String> scriptsToRun = null;
        try {
            final ExtensionConfiguration extensionConfiguration = rag != null ? rag.findExtensionConfiguration(EXTENSION_NAMESPACE, EXTENSION_NAME) : null;
            if (extensionConfiguration != null) {
                configurationMap = extensionConfiguration.tryGetMapFromConfiguration();
                scriptsToRun = getScriptsToRun(requestObject, configurationMap);
            }
        } catch (IOException ioe) {
            return ExtensionResponse.error(ioe,
                    generateErrorJson(extensionMethod.getExtensionApiAsJson()));
        }

        if ((script == null || script.isEmpty()) && scriptsToRun == null) {
            return ExtensionResponse.badRequest(
                    "no scripts provided",
                    generateErrorJson(extensionMethod.getExtensionApiAsJson()));
        }

        final Timer.Context context = scriptTimer.time();
        try {
            // result is either the ad-hoc script on the query string or the last "stored procedure"
            Object result = null;
            if (scriptsToRun != null) {
                while (scriptsToRun.hasNext()) {
                    result = engineHolder.getEngine().eval(scriptsToRun.next(), bindings);
                }
            }

            if (isClientScriptAllowed(configurationMap) && script != null && !script.isEmpty()) {
                result = engineHolder.getEngine().eval(script, bindings);
            }

            final Pair<JSONArray, Long> convertedResults = new JSONResultConverter(mode, offsetStart, offsetEnd, returnKeys).convert(result, returnTotal);
            final JSONArray results = convertedResults.getA();
View Full Code Here

TOP

Related Classes of com.tinkerpop.rexster.protocol.EngineHolder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.