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/05 23:09:53 UTC

incubator-ignite git commit: #ignite-964: add all methods to node js cache.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-964-1 be7cda252 -> d63febad3


#ignite-964: add all methods to node js 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/d63febad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d63febad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d63febad

Branch: refs/heads/ignite-964-1
Commit: d63febad3e834f6a449cf76524b0738d7e750a05
Parents: be7cda2
Author: ivasilinets <iv...@gridgain.com>
Authored: Mon Jul 6 00:09:47 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Mon Jul 6 00:09:47 2015 +0300

----------------------------------------------------------------------
 .../IgniteScriptingCommandHandler.java          |  6 +-
 .../rest/handlers/scripting/NodeJsCache.java    | 78 +++++++++++++++++
 .../ignite/internal/NodeJsComputeSelfTest.java  |  7 ++
 modules/nodejs/src/test/js/test-compute.js      | 88 ++++++++++++++++++++
 4 files changed, 178 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d63febad/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 24dc58c..2ccdcbc 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
@@ -63,11 +63,15 @@ public class IgniteScriptingCommandHandler extends GridRestCommandHandlerAdapter
 
             script.addEngineFunction(emitFunction);
 
+            String entryFunction = "Entry = function(key, val) {" +
+                    "this.key = key; this.value = val}";
+
+            script.addEngineFunction(entryFunction);
+
             emitRes = new IgniteJsEmitResult();
 
             script.addBinding("__emitResult", emitRes);
 
-
             script.addBinding("ignite", new NodeJSIgnite(ctx.grid()));
         }
         catch (IgniteCheckedException e) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d63febad/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 95f575c..5c21e28 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
@@ -97,6 +97,15 @@ public class NodeJsCache {
     }
 
     /**
+     * @param keys Keys.
+     */
+    public void removeAll(List keys) {
+        List cacheKeys = (List)JSONCacheObject.toSimpleObject(keys);
+
+        cache.removeAll(new HashSet<>(cacheKeys));
+    }
+
+    /**
      * @param entries Entries.
      */
     public void putAll(List entries) {
@@ -129,6 +138,20 @@ public class NodeJsCache {
      * @param val Value.
      * @return Previous value.
      */
+    public Object getAndReplace(Object key, Object val) {
+        Object cacheKey = JSONCacheObject.toSimpleObject(key);
+        Object cacheVal = JSONCacheObject.toSimpleObject(val);
+
+        Object o = RestJSONCacheObject.convertToRestObject(cache.getAndReplace(cacheKey, cacheVal));
+
+        return o;
+    }
+
+    /**
+     * @param key Key.
+     * @param val Value.
+     * @return Previous value.
+     */
     public Object getAndPutIfAbsent(Object key, Object val) {
         Object cacheKey = JSONCacheObject.toSimpleObject(key);
         Object cacheVal = JSONCacheObject.toSimpleObject(val);
@@ -148,6 +171,61 @@ public class NodeJsCache {
 
     /**
      * @param key Key.
+     * @return If operation success.
+     */
+    public boolean remove(Object key) {
+        Object cacheKey = JSONCacheObject.toSimpleObject(key);
+
+        return cache.remove(cacheKey);
+    }
+
+    /**
+     * @param key Key.
+     * @param val Value.
+     * @return If operation success.
+     */
+    public boolean removeValue(Object key, Object val) {
+        Object cacheKey = JSONCacheObject.toSimpleObject(key);
+        Object cacheVal = JSONCacheObject.toSimpleObject(val);
+
+        return cache.remove(cacheKey, cacheVal);
+    }
+
+    /**
+     * @param key Key.
+     * @param val Value.
+     * @return If operation success.
+     */
+    public boolean replace(Object key, Object val) {
+        Object cacheKey = JSONCacheObject.toSimpleObject(key);
+        Object cacheVal = JSONCacheObject.toSimpleObject(val);
+
+        return cache.replace(cacheKey, cacheVal);
+    }
+
+    /**
+     * @param key Key.
+     * @param val Value.
+     * @param oldVal Old value.
+     * @return If operation success.
+     */
+    public boolean replaceValue(Object key, Object val, Object oldVal) {
+        Object cacheKey = JSONCacheObject.toSimpleObject(key);
+        Object cacheVal = JSONCacheObject.toSimpleObject(val);
+        Object oldCacheVal = JSONCacheObject.toSimpleObject(oldVal);
+
+        return cache.replace(cacheKey, oldCacheVal, cacheVal);
+    }
+
+    /**
+     * Removes all from cache.
+     */
+    public void removeAllFromCache() {
+        cache.removeAll();
+    }
+
+    /**
+     * @param key Key.
      * @param val Value.
      * @return Previous value.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d63febad/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 c870ab6..48b2855 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
@@ -135,6 +135,13 @@ public class NodeJsComputeSelfTest extends NodeJsAbstractTest {
     /**
      * @throws Exception If failed.
      */
+    public void testComputeRunScriptRemoveOperations() throws Exception {
+        runJsScript("testComputeRunScriptRemoveOperations");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testComputeMapReduceGetAndPut() throws Exception {
         runJsScript("testComputeMapReduceGetAndPut");
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d63febad/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 ec80c17..b99a7ad 100644
--- a/modules/nodejs/src/test/js/test-compute.js
+++ b/modules/nodejs/src/test/js/test-compute.js
@@ -154,6 +154,94 @@ testComputeRunScriptPutAllGetAll = function() {
     TestUtils.startIgniteNode(computeRunScriptPutAllGetAll);
 }
 
+testComputeRunScriptRemoveOperations = function() {
+    computeRunScriptRemoveOperations = function(error, ignite) {
+        assert(error === null, "Error on put:" + error);
+
+        var comp = ignite.compute();
+
+        var f = function (args) {
+            var cache = ignite.cache("mycache");
+
+            if (cache.remove("key1") === true) {
+                throw "Incorrect remove from empty map";
+            }
+
+            var key0 = {"keyName" : "keyVal"};
+            var key1 = {"keyName" : "keyVal1"};
+            var val0 = {"valName" : 1};
+            var val1 = {"valName" : 2};
+
+            var entries = [new Entry(key0, val0), new Entry(key1, val1)];
+            var keys = [key0, key1];
+
+            cache.put(key0, val0);
+
+            if (cache.removeValue(key0, val1) === true) {
+                throw "Incorrect removeValue from empty map [key=" + JSON.stringify(key0) + "]";
+            }
+
+            if (cache.remove(key0) === false) {
+                throw "Incorrect remove from empty map [key=" + JSON.stringify(key0) + "]";
+            }
+
+            cache.put(key0, val0);
+
+            if (cache.replaceValue(key0, val0, val1) === true) {
+                throw "Incorrect replaceValue result [key=" + JSON.stringify(key0) + "]";
+            }
+
+            var prevVal = cache.getAndReplace(key0, val1);
+
+            if (prevVal.valName !== val0.valName) {
+                throw "Incorrect getAndReplace result [key=" + JSON.stringify(key0) +
+                 ", prevVal=" + prevVal.valName +
+                 ", expected=" + val0.valName + "]";
+            }
+
+            prevVal = cache.get(key0);
+
+            if (prevVal.valName !== val1.valName) {
+                throw "Incorrect getAndReplace result [key=" + JSON.stringify(key0) + "]";
+            }
+
+            cache.removeAllFromCache();
+
+            if (cache.get(key0) !== null) {
+                throw "Incorrect removeAll result";
+            }
+
+            cache.putAll(entries);
+
+            if (cache.replace(key1, val0) !== true) {
+                throw "Incorrect replace result";
+            }
+
+            prevVal = cache.get(key1);
+
+            if (prevVal.valName !== val0.valName) {
+                throw "Incorrect replace [key=" + JSON.stringify(key1) + "]";
+            }
+
+            cache.removeAll(keys);
+
+            if (cache.size() !== 0) {
+                throw "Incorrect removeAll result.";
+            }
+        }
+
+        function onEnd(err, res) {
+            assert(err == null);
+
+            TestUtils.testDone();
+        }
+
+        comp.runScript(f, [], onEnd.bind(null));
+    }
+
+    TestUtils.startIgniteNode(computeRunScriptRemoveOperations);
+}
+
 testComputeMapReduceGetAndPut = function() {
     function computeMapReduceGetAndPut(error, ignite) {
         assert(error == null, "Error on start:" + error);