Repository: incubator-ignite Updated Branches: refs/heads/ignite-964-1 3d39744e3 -> 1f9fd7736
#ignite-964: simple compute test works. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1f9fd773 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1f9fd773 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1f9fd773 Branch: refs/heads/ignite-964-1 Commit: 1f9fd7736b2ca400bc54945fba05a7bab94022a2 Parents: 3d39744 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Fri Jul 3 18:53:16 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Fri Jul 3 18:53:16 2015 +0300 ---------------------------------------------------------------------- .../IgniteScriptingCommandHandler.java | 6 +-- .../handlers/scripting/JSONCacheObject.java | 34 +++++++++++++--- .../rest/handlers/scripting/NodeJSIgnite.java | 18 +++++++++ .../rest/handlers/scripting/NodeJsCache.java | 7 ++++ .../handlers/scripting/NodeJsClusterNode.java | 42 ++++++++++++++++++++ .../scripting/IgniteScriptProcessor.java | 6 ++- modules/nodejs/src/test/js/test-compute.js | 10 ++--- 7 files changed, 108 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/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 5fcbd2b..3c3c5ce 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 @@ -151,7 +151,6 @@ public class IgniteScriptingCommandHandler extends GridRestCommandHandlerAdapter List<T3<Object, Object, Object>> jsMapRes = emitRes.getEmitResult(); for (T3<Object, Object, Object> task : jsMapRes) { - map.put(new JsCallFunctionJob((String)task.get1(), task.get2()), (ClusterNode)task.get3()); } @@ -177,7 +176,7 @@ public class IgniteScriptingCommandHandler extends GridRestCommandHandlerAdapter data[i] = results.get(i).getData(); } - Object o = ctx.scripting().invokeJSFunction(reduceFunc, data, null); + Object o = ctx.scripting().invokeFunction(reduceFunc, data, null); return o; } catch (IgniteCheckedException e) { @@ -209,7 +208,8 @@ public class IgniteScriptingCommandHandler extends GridRestCommandHandlerAdapter */ public JsCallFunctionJob(String func, Object argv) { this.func = func; - this.argv = argv; + + this.argv = JSONCacheObject.toSimpleObject(argv); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/JSONCacheObject.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/JSONCacheObject.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/JSONCacheObject.java index 51225fd..9d7129a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/JSONCacheObject.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/JSONCacheObject.java @@ -17,7 +17,7 @@ package org.apache.ignite.internal.processors.rest.handlers.scripting; -import jdk.nashorn.api.scripting.JSObject; +import jdk.nashorn.api.scripting.*; import org.apache.ignite.internal.util.typedef.internal.U; import java.util.*; @@ -93,6 +93,8 @@ public class JSONCacheObject implements JSObject { * @return Converted object. */ public static Object toSimpleObject(Object o) { + o = tryConvert(o, Object[].class); + if (o instanceof Map) { Map o1 = (Map)o; @@ -113,10 +115,34 @@ public class JSONCacheObject implements JSObject { return val; } + else if (o.getClass().isArray()) { + Object[] o1 = (Object[]) o; + + List<Object> val = new ArrayList<>(); + + for (Object v : o1) + val.add(toSimpleObject(v)); + + return val; + } return o; } + /** + * @param o Object. + * @param cl Class. + */ + private static Object tryConvert(Object o, Class cl) { + try { + return ScriptUtils.convert(o, cl); + + } catch (Exception e) { + //skip. + } + + return o; + } @Override public Object call(Object o, Object... objects) { System.out.println("!!!!CALL"); return null; @@ -147,8 +173,7 @@ public class JSONCacheObject implements JSObject { return fields.containsKey(s); } - @Override - public boolean hasSlot(int i) { + @Override public boolean hasSlot(int i) { System.out.println("!!!!hasSlot"); return false; } @@ -185,8 +210,7 @@ public class JSONCacheObject implements JSObject { return fields.values(); } - @Override - public boolean isInstance(Object o) { + @Override public boolean isInstance(Object o) { System.out.println("!!!!isInstance"); return false; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJSIgnite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJSIgnite.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJSIgnite.java index 5084e60..777a3aa 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJSIgnite.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJSIgnite.java @@ -33,7 +33,25 @@ public class NodeJSIgnite { this.ignite = ignite; } + /** + * @param cache Cache name. + * @return Node js cache. + */ public NodeJsCache cache(String cache) { return new NodeJsCache(ignite.cache(cache)); } + + /** + * @return Local node. + */ + public NodeJsClusterNode localNode() { + return new NodeJsClusterNode(ignite.cluster().localNode()); + } + + /** + * @return Ignite name. + */ + public String name() { + return ignite.name(); + } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsCache.java index 7717feb..31abc12 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsCache.java @@ -53,4 +53,11 @@ public class NodeJsCache { Object res = cache.get(cacheKey); return res; } + + /** + * @return Local size. + */ + public int localSize() { + return cache.localSize(); + } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsClusterNode.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsClusterNode.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsClusterNode.java new file mode 100644 index 0000000..fb513fb --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/NodeJsClusterNode.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.processors.rest.handlers.scripting; + +import org.apache.ignite.cluster.*; + +/** + * Node js cluster node. + */ +public class NodeJsClusterNode { + /** Cluster node. */ + private String id; + + /** + * @param node Cluster node. + */ + public NodeJsClusterNode(ClusterNode node) { + this.id = node.id().toString(); + } + + /** + * @return Node id. + */ + public String id() { + return id; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/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 54a178e..34d35d8 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 @@ -163,10 +163,12 @@ public class IgniteScriptProcessor extends GridProcessorAdapter { } catch (ScriptException e) { - throw new IgniteCheckedException("Function evaluation failed [funcName=" + src + "]."); + throw new IgniteCheckedException("Function evaluation failed [funcName=" + src + + ", err= " + e.getMessage() + "]."); } catch (NoSuchMethodException e) { - throw new IgniteCheckedException("Cannot find function [func=__internalCall]."); + throw new IgniteCheckedException("Cannot find function [func=__internalCall" + + ", err= " + e.getMessage() + "]."); } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1f9fd773/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 b926653..02e87f1 100644 --- a/modules/nodejs/src/test/js/test-compute.js +++ b/modules/nodejs/src/test/js/test-compute.js @@ -60,7 +60,7 @@ function computeRunScript(ignite, error) { var comp = ignite.compute(); var f = function (args) { - println("!!!!" + args + " " + ignite.name()); + print("!!!!" + args + " " + ignite.name()); return args + " " + ignite.name(); } @@ -83,7 +83,7 @@ function computeExecute(error, ignite) { for (var i = 0; i < words.length; i++) { var f = function (word) { - println(">>> Printing " + word); + print(">>> Printing " + word); return word.length; }; @@ -118,7 +118,7 @@ function computeAllNodeExecute(error, ignite) { var map = function(nodes, arg) { for (var i = 0; i < nodes.length; i++) { var f = function (node) { - println(">>> Printing " + node.id().toString()); + print(">>> Printing " + node.id().toString()); return ""; }; @@ -217,12 +217,12 @@ function computeCacheSizeExecute(error, ignite) { var map = function(nodes, arg) { for (var i = 0; i < nodes.length; i++) { var f = function (args) { - println("!!!!!Node id " + ignite.localNode().id()); + print("!!!!!Node id " + ignite.localNode().id()); return ignite.cache("mycache").localSize(); }; - emit(f, [], nodes[i]); + emit(f, [1, 2], nodes[i]); } };