Repository: incubator-ignite Updated Branches: refs/heads/ignite-964-1 584adbc1a -> 1572a3a0a
#ignite-964: wip Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1572a3a0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1572a3a0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1572a3a0 Branch: refs/heads/ignite-964-1 Commit: 1572a3a0a3529b0dd55879f33e4afba96ddce6ce Parents: 584adbc Author: ivasilinets <[email protected]> Authored: Thu Jul 2 00:53:40 2015 +0300 Committer: ivasilinets <[email protected]> Committed: Thu Jul 2 00:53:40 2015 +0300 ---------------------------------------------------------------------- .../IgniteScriptingCommandHandler.java | 3 +- .../scripting/IgniteScriptProcessor.java | 31 ++++++++++++++++++++ modules/nodejs/src/test/js/test-compute.js | 21 +++++++++---- .../http/jetty/GridJettyRestHandler.java | 2 +- 4 files changed, 49 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1572a3a0/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/IgniteScriptingCommandHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/IgniteScriptingCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/IgniteScriptingCommandHandler.java index 2d65016..68908f4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/IgniteScriptingCommandHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/IgniteScriptingCommandHandler.java @@ -17,6 +17,7 @@ package org.apache.ignite.internal.processors.rest.handlers.scripting; +import net.sf.json.*; import org.apache.ignite.*; import org.apache.ignite.cluster.*; import org.apache.ignite.compute.*; @@ -174,7 +175,7 @@ public class IgniteScriptingCommandHandler extends GridRestCommandHandlerAdapter data[i] = results.get(i).getData(); } - return ctx.scripting().invokeFunction(reduceFunc, data); + return ctx.scripting().invokeJSFunction(reduceFunc, JSONSerializer.toJSON(data), null); } catch (IgniteCheckedException e) { throw U.convertException(e); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1572a3a0/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java index 247421f..6248695 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java @@ -61,8 +61,14 @@ public class IgniteScriptProcessor extends GridProcessorAdapter { "var func = __createJSFunction(funcSource); " + "return func.apply(null, [arg1, arg2]); }"; + String internalJSCall = "function __internalJSCall(funcSource, arg1, arg2) { " + + "var func = __createJSFunction(funcSource); " + + "println('INIT arg=' + arg1);"+ + "return func.apply(null, [JSON.parse(arg1), arg2]); }"; + addEngineFunction(createJSFunction); addEngineFunction(internalCall); + addEngineFunction(internalJSCall); } /** @@ -137,4 +143,29 @@ public class IgniteScriptProcessor extends GridProcessorAdapter { throw new IgniteCheckedException("Cannot find function [func=__internalCall]."); } } + + /** + * @param src Script src. + * @param arg Argument. + * @return Result of the function. + * @throws IgniteCheckedException If script failed. + */ + public Object invokeJSFunction(String src, Object arg, Object arg2) throws IgniteCheckedException { + try { + Invocable invocable = (Invocable) jsEngine; + if (arg != null && arg2 != null) + return invocable.invokeFunction("__internalJSCall", src, arg.toString(), arg2.toString()); + if (arg != null && arg2 == null) + return invocable.invokeFunction("__internalJSCall", src, arg.toString(), arg2); + + return invocable.invokeFunction("__internalJSCall", src, arg, arg2); + + } + catch (ScriptException e) { + throw new IgniteCheckedException("Function evaluation failed [funcName=" + src + "]."); + } + catch (NoSuchMethodException e) { + throw new IgniteCheckedException("Cannot find function [func=__internalCall]."); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1572a3a0/modules/nodejs/src/test/js/test-compute.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/test/js/test-compute.js b/modules/nodejs/src/test/js/test-compute.js index 9fd813b..b7d88f0 100644 --- a/modules/nodejs/src/test/js/test-compute.js +++ b/modules/nodejs/src/test/js/test-compute.js @@ -45,19 +45,22 @@ testComputeCacheExecute = function() { function onStart(onPut, error, ignite) { var cache = ignite.cache("mycache"); - var params = {} + var params = []; for (var i = 900; i < 1000; ++i) { - params["key" + i] = "val" + i; + params.push(new Entry("key" + i, "val" + i)); } cache.putAll(params, onPut.bind(null, ignite)) } function computeRunScript(ignite, error) { + assert(error == null, "Error on put:" + error); + var comp = ignite.compute(); var f = function (args) { + println("!!!!" + args + " " + ignite.name()); return args + " " + ignite.name(); } @@ -73,6 +76,8 @@ function computeRunScript(ignite, error) { } function computeExecute(error, ignite) { + assert(error == null, "Error on put:" + error); + var map = function(nodes, arg) { var words = arg.split(" "); @@ -91,7 +96,7 @@ function computeExecute(error, ignite) { var sum = 0; for (var i = 0; i < results.length; ++i) { - sum += results[i].intValue(); + sum += results[i]; } return sum; @@ -108,6 +113,8 @@ function computeExecute(error, ignite) { } function computeAllNodeExecute(error, ignite) { + assert(error == null, "Error on put:" + error); + var map = function(nodes, arg) { for (var i = 0; i < nodes.length; i++) { var f = function (node) { @@ -131,6 +138,8 @@ function computeAllNodeExecute(error, ignite) { } function computeCacheExecute(error, ignite) { + assert(error == null, "Error on put:" + error); + var map = function(nodes, args) { for (var i = 0; i < nodes.length; i++) { var f = function (args1) { @@ -188,6 +197,8 @@ function computeCacheExecute(error, ignite) { } function computeCacheSizeExecute(error, ignite) { + assert(error == null, "Error on put:" + error); + var map = function(nodes, arg) { for (var i = 0; i < nodes.length; i++) { var f = function (args) { @@ -204,9 +215,7 @@ function computeCacheSizeExecute(error, ignite) { var sum = 0; for (var i = 0; i < results.length; i++) { - println("TYPE:" + (typeof results[i])); - println("keys:" + (Object.keys(results[i]))); - sum += results[i].intValue(); + sum += results[i]; } return sum; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1572a3a0/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java ---------------------------------------------------------------------- diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java index e4ce5f2..1b6a170 100644 --- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java +++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java @@ -798,7 +798,7 @@ public class GridJettyRestHandler extends AbstractHandler { } while (reader.hasNext()) - builder.append(reader.next() + "\n"); + builder.append(reader.nextLine() + "\n"); return JSONObject.fromObject(builder.toString()); }
