You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by iv...@apache.org on 2015/07/03 20:06:55 UTC

incubator-ignite git commit: #ignite-964: add methods to nodejs cache.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-964-1 f3dc93a18 -> 23c7add12


#ignite-964: add methods to nodejs cache.


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

Branch: refs/heads/ignite-964-1
Commit: 23c7add12ad2f23767e1256c1bcc05c6d6edea87
Parents: f3dc93a
Author: ivasilinets <iv...@gridgain.com>
Authored: Fri Jul 3 21:06:47 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Fri Jul 3 21:06:47 2015 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheAdapter.java      |   2 +-
 .../handlers/scripting/JSONCacheObject.java     |   1 +
 .../rest/handlers/scripting/NodeJsCache.java    |  59 +++++++++-
 .../rest/handlers/scripting/RestEntry.java      |  57 ++++++++++
 .../ignite/internal/NodeJsComputeSelfTest.java  |  33 ++++++
 modules/nodejs/src/test/js/test-compute.js      | 114 ++++++++++++++++++-
 .../http/jetty/GridJettyRestHandler.java        |  55 ---------
 7 files changed, 262 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index e138520..5c99bb9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -2284,7 +2284,7 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
      * @return Put future.
      */
     public IgniteInternalFuture<Boolean> putAsync(K key, V val,
-                                                  @Nullable CacheEntryPredicate... filter) {
+        @Nullable CacheEntryPredicate... filter) {
         final boolean statsEnabled = ctx.config().isStatisticsEnabled();
 
         final long start = statsEnabled ? System.nanoTime() : 0L;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/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 9d7129a..00cb28a 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
@@ -143,6 +143,7 @@ public class JSONCacheObject implements JSObject {
 
         return o;
     }
+
     @Override public Object call(Object o, Object... objects) {
         System.out.println("!!!!CALL");
         return null;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/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 31abc12..0bb56d7 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
@@ -18,13 +18,16 @@
 package org.apache.ignite.internal.processors.rest.handlers.scripting;
 
 import org.apache.ignite.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+
+import java.util.*;
 
 /**
  * Node js cache.
  */
 public class NodeJsCache {
     /** Ignite cache. */
-    private IgniteCache cache;
+    private IgniteCache<Object, Object> cache;
 
     /**
      * @param cache Ignite cache.
@@ -50,11 +53,63 @@ public class NodeJsCache {
     public Object get(Object key) {
         Object cacheKey = JSONCacheObject.toSimpleObject(key);
 
-        Object res =  cache.get(cacheKey);
+        return cache.get(cacheKey);
+    }
+
+    /**
+     * @param key Key
+     * @return True if cache contains key.
+     */
+    public boolean containsKey(Object key) {
+        Object cacheKey = JSONCacheObject.toSimpleObject(key);
+
+        return cache.containsKey(cacheKey);
+    }
+
+    /**
+     * @param keys Keys
+     * @return True if cache contains key.
+     */
+    public boolean containsKeys(List keys) {
+        List cacheKeys = (List)JSONCacheObject.toSimpleObject(keys);
+
+        return cache.containsKeys(new HashSet<>(cacheKeys));
+    }
+
+    /**
+     * @param keys Keys.
+     * @return Cache entries.
+     */
+    public List<RestEntry> getAll(List keys) {
+        List cacheKeys = (List)JSONCacheObject.toSimpleObject(keys);
+
+        Map<Object, Object> entries = cache.getAll(new HashSet<>(cacheKeys));
+
+        List<RestEntry> res = new ArrayList<>();
+
+        for (Map.Entry<Object, Object> e : entries.entrySet())
+            res.add(new RestEntry(e.getKey(), e.getValue()));
+
         return res;
     }
 
     /**
+     * @param entries Entries.
+     */
+    public void putAll(List entries) {
+        List cacheKeys = (List)JSONCacheObject.toSimpleObject(entries);
+
+        Map<Object, Object> cacheEntries = U.newHashMap(entries.size());
+
+        for (Object e : cacheKeys) {
+            JSONCacheObject e0 = (JSONCacheObject)e;
+            cacheEntries.put(e0.getField("_key"), e0.getField("_val"));
+        }
+
+        cache.putAll(cacheEntries);
+    }
+
+    /**
      * @return Local size.
      */
     public int localSize() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/RestEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/RestEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/RestEntry.java
new file mode 100644
index 0000000..f12f2f2
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/scripting/RestEntry.java
@@ -0,0 +1,57 @@
+package org.apache.ignite.internal.processors.rest.handlers.scripting;
+
+
+/**
+ * Rest entry.
+ */
+public class RestEntry {
+    /** Key. */
+    private Object key;
+
+    /** Value. */
+    private Object val;
+
+    /**
+     * @param key Key.
+     * @param val Value.
+     */
+    public RestEntry(Object key, Object val) {
+        if (key instanceof JSONCacheObject)
+            this.key = ((JSONCacheObject)key).getFields();
+        else
+            this.key = key;
+
+        if (val instanceof JSONCacheObject)
+            this.val = ((JSONCacheObject)val).getFields();
+        else
+            this.val = val;
+    }
+
+    /**
+     * @return Key.
+     */
+    public Object getKey() {
+        return key;
+    }
+
+    /**
+     * @param key Key.
+     */
+    public void setKey(Object key) {
+        this.key = key;
+    }
+
+    /**
+     * @return Value.
+     */
+    public Object getVal() {
+        return val;
+    }
+
+    /**
+     * @param val Value.
+     */
+    public void setVal(Object val) {
+        this.val = val;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
index 6e4e5a4..67dbfc2 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal;
 
+import org.apache.ignite.cache.*;
+import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.testframework.*;
 
@@ -50,6 +52,16 @@ public class NodeJsComputeSelfTest extends NodeJsAbstractTest {
         grid(0).cache("mycache").removeAll();
     }
 
+    /** {@inheritDoc} */
+    @Override protected CacheConfiguration cacheConfiguration() {
+        CacheConfiguration ccfg = new CacheConfiguration();
+
+        ccfg.setName(CACHE_NAME);
+        ccfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
+
+        return ccfg;
+    }
+
     /**
      * @throws Exception If failed.
      */
@@ -102,6 +114,27 @@ public class NodeJsComputeSelfTest extends NodeJsAbstractTest {
     /**
      * @throws Exception If failed.
      */
+    public void testComputeRunScriptContainsKey() throws Exception {
+        runJsScript("testComputeRunScriptContainsKey");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testComputeRunScriptContainsKeys() throws Exception {
+        runJsScript("testComputeRunScriptContainsKeys");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testComputeRunScriptPutAllGetAll() throws Exception {
+        runJsScript("testComputeRunScriptPutAllGetAll");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void _testRestartGrid() throws Exception {
         final AtomicInteger id = new AtomicInteger(2);
         IgniteInternalFuture<Long> fut = GridTestUtils.runMultiThreadedAsync(new Callable<Object>() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/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 02e87f1..eab6c7e 100644
--- a/modules/nodejs/src/test/js/test-compute.js
+++ b/modules/nodejs/src/test/js/test-compute.js
@@ -42,6 +42,118 @@ testComputeCacheExecute = function() {
     TestUtils.startIgniteNode(computeCacheExecute);
 }
 
+testComputeRunScriptContainsKey = function() {
+    function computeRunScriptContainsKey(error, ignite) {
+        assert(error == null, "Error on start:" + error);
+
+        var comp = ignite.compute();
+
+        var f = function(key) {
+            var cache = ignite.cache("mycache");
+            cache.put(key, "[AAAAAAA]");
+
+            if (!cache.containsKey(key))
+                throw "Contains key does not work."
+
+            return key;
+        }
+
+        function onEnd(err, res) {
+            assert(err == null);
+            assert(TestUtils.compareObject(initKey, res), "Incorrect result after script.")
+
+            ignite.cache("mycache").containsKey(initKey, function(err0, res0) {
+                assert(err0 === null, "Get error on js contatins key [err=" + err0 + "]");
+                assert(res0 === true, "Incorrect value on js contains key [res=" + res0 + "]");
+                TestUtils.testDone();
+            });
+        }
+
+        var initKey = {"1" : ["1", "2"]};
+
+        comp.runScript(f, initKey, onEnd.bind(null));
+    }
+
+    TestUtils.startIgniteNode(computeRunScriptContainsKey);
+}
+
+testComputeRunScriptContainsKeys = function() {
+    function computeRunScriptContainsKey(error, ignite) {
+        assert(error == null, "Error on start:" + error);
+
+        var comp = ignite.compute();
+
+        var f = function(keys) {
+            var cache = ignite.cache("mycache");
+            cache.put(keys[0], "[AAAAAAA]");
+            cache.put(keys[1], "[BBBBBBB]");
+
+            if (!cache.containsKeys(keys))
+                throw "Contains key does not work."
+
+            return keys;
+        }
+
+        function onEnd(err, res) {
+            assert(err == null);
+            assert(TestUtils.compareObject([initKey0, initKey1], res), "Incorrect result after script.")
+
+            ignite.cache("mycache").containsKey(initKey0, function(err0, res0) {
+                assert(err0 === null, "Get error on js contatins key [err=" + err0 + "]");
+                assert(res0 === true, "Incorrect value on js contains key [res=" + res0 + "]");
+                TestUtils.testDone();
+            });
+        }
+
+        var initKey0 = {"1" : ["1", "2"]};
+        var initKey1 = {"2" : "AAA"};
+
+        comp.runScript(f, [initKey0, initKey1], onEnd.bind(null));
+    }
+
+    TestUtils.startIgniteNode(computeRunScriptContainsKey);
+}
+
+testComputeRunScriptPutAllGetAll = function() {
+    function computeRunScriptContainsKey(error, ignite) {
+        assert(error == null, "Error on start:" + error);
+
+        var comp = ignite.compute();
+
+        var f = function(args) {
+            var cache = ignite.cache("mycache");
+
+            cache.putAll(args[0]);
+
+            return cache.getAll(args[1]);
+        }
+
+        function onEnd(err, res) {
+            assert(err == null);
+
+            assert(TestUtils.compareObject(initEntries[0].key(), res[0].key), "Incorrect result after script " +
+                "[InitEntries=" + JSON.stringify(initEntries[0].key()) + ", val=" + JSON.stringify(res[0].key) + "]");
+
+            ignite.cache("mycache").containsKey(initKey0, function(err0, res0) {
+                assert(err0 === null, "Get error on js contatins key [err=" + err0 + "]");
+                assert(res0 === true, "Incorrect value on js contains key [res=" + res0 + "]");
+                TestUtils.testDone();
+            });
+        }
+
+        var initKey0 = {"1" : ["1", "2"]};
+        var initKey1 = {"2" : "AAA"};
+        var initVal0 = {"1" : ["1", "2"]};
+        var initVal1 = {"2" : "AAA"};
+        var initEntries = [new Entry(initKey0, initVal0), new Entry(initKey1, initVal1)];
+
+        comp.runScript(f, [initEntries, [initKey0, initKey1]],
+            onEnd.bind(null));
+    }
+
+    TestUtils.startIgniteNode(computeRunScriptContainsKey);
+}
+
 function onStart(onPut, error, ignite) {
     var cache = ignite.cache("mycache");
 
@@ -181,7 +293,7 @@ function computeCacheExecute(error, ignite) {
     };
 
     var reduce = function(results) {
-        return {"1": 1};
+        return {"1" : 1};
     };
 
     var callback = function(err, res) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/23c7add1/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 f9c4685..f135e62 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
@@ -805,59 +805,4 @@ public class GridJettyRestHandler extends AbstractHandler {
 
         return JSONObject.fromObject(builder.toString());
     }
-
-    /**
-     * Rest entry.
-     */
-    public static class RestEntry {
-        /** Key. */
-        private Object key;
-
-        /** Value. */
-        private Object value;
-
-        /**
-         * @param key Key.
-         * @param val Value.
-         */
-        public RestEntry(Object key, Object val) {
-            if (key instanceof JSONCacheObject)
-                this.key = ((JSONCacheObject)key).getFields();
-            else
-                this.key = key;
-
-            if (val instanceof JSONCacheObject)
-                this.value = ((JSONCacheObject)val).getFields();
-            else
-                this.value = val;
-        }
-
-        /**
-         * @return Key.
-         */
-        public Object getKey() {
-            return key;
-        }
-
-        /**
-         * @param key Key.
-         */
-        public void setKey(Object key) {
-            this.key = key;
-        }
-
-        /**
-         * @return Value.
-         */
-        public Object getValue() {
-            return value;
-        }
-
-        /**
-         * @param val Value.
-         */
-        public void setValue(Object val) {
-            this.value = val;
-        }
-    }
 }