Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-965 b42bd3d3c -> 5ddc04b29


#ignite-965: IgniteCompute.execute run simple task on nodejs.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/5ddc04b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/5ddc04b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/5ddc04b2

Branch: refs/heads/ignite-965
Commit: 5ddc04b2902a79ba1afd8c08fc3224a442cc1c00
Parents: b42bd3d
Author: ivasilinets <ivasilin...@gridgain.com>
Authored: Tue Jun 23 09:25:05 2015 +0300
Committer: ivasilinets <ivasilin...@gridgain.com>
Committed: Tue Jun 23 09:25:05 2015 +0300

----------------------------------------------------------------------
 .../IgniteComputeTaskCommandHandler.java        | 23 ++++++++++++++-----
 .../rest/request/RestComputeTaskRequest.java    |  8 ++++---
 .../scripting/IgniteScriptProcessor.java        |  8 +++++--
 modules/nodejs/src/main/js/apache-ignite.js     |  3 ++-
 modules/nodejs/src/main/js/compute.js           | 24 ++++++++++++++------
 .../nodejs/src/test/js/simple-compute-task.js   | 22 ++++++++++--------
 .../http/jetty/GridJettyRestHandler.java        |  7 ++++--
 7 files changed, 65 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
index 2c7ec5b..b20f9c2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
@@ -22,8 +22,10 @@ import org.apache.ignite.internal.processors.rest.*;
 import org.apache.ignite.internal.processors.rest.handlers.*;
 import org.apache.ignite.internal.processors.rest.request.*;
 import org.apache.ignite.internal.util.future.*;
+import org.apache.ignite.internal.util.typedef.T3;
 import org.apache.ignite.internal.util.typedef.internal.*;
 
+import javax.script.ScriptException;
 import java.util.*;
 
 import static org.apache.ignite.internal.processors.rest.GridRestCommand.*;
@@ -57,11 +59,20 @@ public class IgniteComputeTaskCommandHandler extends 
GridRestCommandHandlerAdapt
 
         final RestComputeTaskRequest req0 = (RestComputeTaskRequest) req;
 
-        Map<String, String> mapping = req0.mapping();
-
-
-
-
-        return new GridFinishedFuture<>(new GridRestResponse("5"));
+        List<T3<String, String, String>> mapping =  req0.mapping();
+
+        Set<Object> res = new HashSet<>();
+        System.out.println("MAPPING RESULTS " + mapping.size());
+        for (T3<String, String, String> f : mapping) {
+            try {
+                Object locRes = ctx.scripting().runJS(f.get1(), f.get3());
+                System.out.println("LOCAL RESULT=" +locRes);
+                res.add(locRes);
+            } catch (ScriptException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return new GridFinishedFuture<>(new GridRestResponse(res));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeTaskRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeTaskRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeTaskRequest.java
index 74eb3cf..bae7ce5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeTaskRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeTaskRequest.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.rest.request;
 
+import org.apache.ignite.internal.util.typedef.T3;
+
 import java.util.*;
 
 /**
@@ -24,19 +26,19 @@ import java.util.*;
  */
 public class RestComputeTaskRequest extends GridRestRequest {
     /** Mapping tasks to nodes. */
-    private Map<String, String> mapping;
+    private List<T3<String, String, String>> mapping;
 
     /**
      * @param mapping Mapping tasks to nodes.
      */
-    public void mapping(Map<String, String> mapping) {
+    public void mapping(List<T3<String, String, String>> mapping) {
         this.mapping = mapping;
     }
 
     /**
      * @return Mapping tasks to nodes.
      */
-    public Map<String, String> mapping() {
+    public List<T3<String, String, String>> mapping() {
         return mapping;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/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 1e333f6..54004de 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
@@ -56,7 +56,7 @@ public class IgniteScriptProcessor extends 
GridProcessorAdapter {
      * @param script Script.
      * @throws ScriptException If script failed.
      */
-    public Object runJS(String script) throws ScriptException {
+    public Object runJS(String script, String args) throws ScriptException {
         ScriptEngine engine = factory.getEngineByName("JavaScript");
 
         Bindings b = engine.createBindings();
@@ -65,11 +65,15 @@ public class IgniteScriptProcessor extends 
GridProcessorAdapter {
 
         engine.setBindings(b, ScriptContext.ENGINE_SCOPE);
 
-        script = "(" + script + ")();";
+        script = "(" + script + ")(" + args + ");";
 
         return engine.eval(script);
     }
 
+    public Object runJS(String script) throws ScriptException {
+        return runJS(script, "");
+    }
+
     /**
      * Ignite JS binding.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/modules/nodejs/src/main/js/apache-ignite.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/apache-ignite.js 
b/modules/nodejs/src/main/js/apache-ignite.js
index 0df6160..f90cf68 100644
--- a/modules/nodejs/src/main/js/apache-ignite.js
+++ b/modules/nodejs/src/main/js/apache-ignite.js
@@ -20,5 +20,6 @@ module.exports = {
   Ignition : require('./ignition.js').Ignition,
   Server : require('./server.js').Server,
   Ignite : require('./ignite.js').Ignite,
-  Compute : require('./compute.js').Compute
+  Compute : require('./compute.js').Compute,
+  ComputeJob: require('./compute.js').ComputeJob
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/modules/nodejs/src/main/js/compute.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/compute.js 
b/modules/nodejs/src/main/js/compute.js
index fe0820b..cb83e5d 100644
--- a/modules/nodejs/src/main/js/compute.js
+++ b/modules/nodejs/src/main/js/compute.js
@@ -104,15 +104,16 @@ Compute.prototype._onNodesExecute = function(task, arg, 
callback, err, nodes) {
       return;
   }
 
-  var taskMap = task.map(nodes, arg);
+  var computeJobList = task.map(nodes, arg);
 
   var params = [];
-  var i = 0;
+  var i = 1;
 
-  console.log("TASK" + taskMap);
-  for (var f in taskMap) {
-    params.push(Server.pair("f" + i, this._escape(f)));
-    params.push(Server.pair("n" + i, taskMap[f]));
+  console.log("TASK" + computeJobList);
+  for (var job of computeJobList) {
+    params.push(Server.pair("f" + i, this._escape(job.func)));
+    params.push(Server.pair("args" + i,  JSON.stringify(job.args)));
+    params.push(Server.pair("n" + i, job.node.nodeId));
     i++;
   }
 
@@ -134,4 +135,13 @@ Compute.prototype._onResExecute = function(task, callback, 
err, results) {
   callback.call(null, null, res);
 }
 
-exports.Compute = Compute
\ No newline at end of file
+exports.Compute = Compute
+
+
+function ComputeJob(func, args, node) {
+    this.func = func;
+    this.args = args;
+    this.node = node;
+}
+
+exports.ComputeJob = ComputeJob;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/modules/nodejs/src/test/js/simple-compute-task.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/simple-compute-task.js 
b/modules/nodejs/src/test/js/simple-compute-task.js
index 6e55c55..d7eb91d 100644
--- a/modules/nodejs/src/test/js/simple-compute-task.js
+++ b/modules/nodejs/src/test/js/simple-compute-task.js
@@ -21,10 +21,17 @@ function CharacterCountTask() {
 CharacterCountTask.prototype.map = function(nodes, arg) {
   var words = arg.split(" ");
 
-  var map = {};
+  var results = [];
 
   var nodeId = 0;
 
+  function compute(args) {
+    println(">>> Printing " + args);
+
+    return args[0].length;
+  }
+
+
   for (var word of words) {
     var node = nodes[nodeId];
 
@@ -32,16 +39,13 @@ CharacterCountTask.prototype.map = function(nodes, arg) {
       nodeId++;
     }
 
-    var f = function() {
-      println(">>> Printing " + word);
-
-      return word.length;
-    }
-
-    map[f] = node;
+    var TestUtils = require("./test-utils").TestUtils;
+    var Apache = require(TestUtils.scriptPath());
+    var ComputeJob = Apache.ComputeJob;
+    results.push(new ComputeJob(compute, [word], node));
   }
 
-  return map;
+  return results;
 }
 
 CharacterCountTask.prototype.reduce = function(results) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ddc04b2/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 ff5fb7e..5fe4cd9 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
@@ -465,12 +465,15 @@ public class GridJettyRestHandler extends AbstractHandler 
{
                 List<Object> funcs = values("f", params);
                 List<Object> nodes = values("n", params);
 
+                List<Object> args = values("args", params);
+
                 assert funcs.size() == nodes.size();
 
-                Map<String, String> mapping = new HashMap<>();
+                List<T3<String, String, String>> mapping = new ArrayList<>();
+
 
                 for (int i = 0; i < funcs.size(); ++i)
-                    mapping.put((String) funcs.get(i), (String)nodes.get(i));
+                    mapping.add(new T3((String) funcs.get(i), 
(String)nodes.get(i), (String)args.get(i)));
 
                 restReq0.mapping(mapping);
 

Reply via email to