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/01 16:08:49 UTC

[1/4] incubator-ignite git commit: #ignite-964: aff replace method for nodejs cache.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-964 5a8982fee -> a7bb9ee4a


#ignite-964: aff replace method for 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/2496ac3c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2496ac3c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2496ac3c

Branch: refs/heads/ignite-964
Commit: 2496ac3c9548a96ebb1bbd655fea969ef4bab93c
Parents: 5a8982f
Author: ivasilinets <iv...@gridgain.com>
Authored: Wed Jul 1 16:41:22 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Wed Jul 1 16:41:22 2015 +0300

----------------------------------------------------------------------
 modules/nodejs/src/main/js/cache.js             | 26 +++++++++
 .../ignite/internal/NodeJsCacheApiSelfTest.java | 21 +++++++
 modules/nodejs/src/test/js/test-cache-api.js    | 59 ++++++++++++++++++++
 .../http/jetty/GridJettyRestHandler.java        |  2 +-
 4 files changed, 107 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2496ac3c/modules/nodejs/src/main/js/cache.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js
index c96b709..bb48dfd 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -217,6 +217,32 @@ Cache.prototype.getAndPut = function(key, val, callback) {
 }
 
 /**
+ * replace cache value
+ *
+ * @this {Cache}
+ * @param {string} key Key
+ * @param {string} value Value
+ * @param {onGet} callback Called on finish
+ */
+Cache.prototype.replace = function(key, val, callback) {
+    this._server.runCommand(this._createCommand("rep").
+        setPostData(JSON.stringify({"key" : key, "val" : val})), callback);
+}
+
+/**
+ * Get and put cache value
+ *
+ * @this {Cache}
+ * @param {string} key Key
+ * @param {string} value Value
+ * @param {onGet} callback Called on finish
+ */
+Cache.prototype.getAndReplace = function(key, val, callback) {
+    this._server.runCommand(this._createCommand("getandreplace").
+        setPostData(JSON.stringify({"key" : key, "val" : val})), callback);
+}
+
+/**
  * Stores given key-value pair in cache only if cache had no previous mapping for it.
  *
  * @this {Cache}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2496ac3c/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
index 47e4f09..d5bf7ae 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
@@ -175,4 +175,25 @@ public class NodeJsCacheApiSelfTest extends NodeJsAbstractTest {
     public void testRemoveAllFromCache() throws Exception {
         runJsScript("testRemoveAllFromCache");
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testReplace() throws Exception {
+        runJsScript("testReplace");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testIncorrectReplaceObject() throws Exception {
+        runJsScript("testIncorrectReplaceObject");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testReplaceObject() throws Exception {
+        runJsScript("testReplaceObject");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2496ac3c/modules/nodejs/src/test/js/test-cache-api.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-cache-api.js b/modules/nodejs/src/test/js/test-cache-api.js
index 4766c9c..cca7e10 100644
--- a/modules/nodejs/src/test/js/test-cache-api.js
+++ b/modules/nodejs/src/test/js/test-cache-api.js
@@ -160,6 +160,65 @@ testRemoveAllFromCache = function() {
     startTest("mycache", {trace: [put, removeAllFromCache, getNone], entry: ["key", "6"]});
 }
 
+testReplace = function() {
+    function replace(cache, entry, next) {
+        cache.replace(entry[0], "7", onReplace.bind(null, cache));
+
+        function onReplace(cache, err, res) {
+            assert(err === null, "Get error on get and put [err=" + err + "]");
+            assert(res === true, "Incorrect result for replace [expected=true, val" + res + "]");
+
+            cache.get(entry[0], function(err, res) {
+                assert(!err);
+                assert("7" === res, "Get incorrect value on get [exp=7, val=" + res + "]");
+                TestUtils.testDone();
+            });
+        }
+    }
+
+    startTest("mycache", {trace: [put, replace], entry: ["key", "6"]});
+}
+
+testReplaceObject = function() {
+    function replace(cache, entry, next) {
+        var newKey = {"key" :"7"};
+        cache.replace(entry[0], newKey, onReplace.bind(null, cache));
+
+        function onReplace(cache, err, res) {
+            assert(err === null, "Get error on get and put [err=" + err + "]");
+            assert(res === true, "Incorrect result for replace [expected=true, val" + res + "]");
+
+            cache.get(entry[0], function(err, res) {
+                assert(!err);
+                assert(TestUtils.compareObject(newKey, res), "Get incorrect value on get.");
+                TestUtils.testDone();
+            });
+        }
+    }
+
+    var key = {"name" : "Paul"};
+    var val = {"age" : 12, "books" : ["1", "Book"]};
+
+    startTest("mycache", {trace: [put, replace], entry: [key, val]});
+}
+
+testIncorrectReplaceObject = function() {
+    function replace(cache, entry, next) {
+        cache.replace(entry[0], "7", onReplace.bind(null, cache));
+
+        function onReplace(cache, err, res) {
+            assert(err !== null, "Do not get error");
+            assert(err.indexOf("Failed to update keys") > -1, "Incorrect error message: " + err);
+            TestUtils.testDone();
+        }
+    }
+
+    var key = {"name" : "Paul"};
+    var val = {"age" : 12, "books" : ["1", "Book"]};
+
+    startTest("mycache", {trace: [put, replace], entry: [key, val]});
+}
+
 function objectEntries() {
     entries = [];
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2496ac3c/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 be44916..b96b066 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
@@ -427,7 +427,7 @@ public class GridJettyRestHandler extends AbstractHandler {
                     else if (cmd == CACHE_GET || cmd == CACHE_PUT || cmd == CACHE_REMOVE ||
                         cmd == CACHE_CONTAINS_KEY || cmd == CACHE_GET_AND_PUT ||
                         cmd == CACHE_GET_AND_PUT_IF_ABSENT || cmd == CACHE_GET_AND_REMOVE ||
-                        cmd == CACHE_PUT_IF_ABSENT || cmd == CACHE_REMOVE_VALUE) {
+                        cmd == CACHE_PUT_IF_ABSENT || cmd == CACHE_REMOVE_VALUE || cmd == CACHE_REPLACE) {
                         JSONCacheObject cacheObj = new JSONCacheObject(o);
 
                         restReq0.cacheName(F.isEmpty(cacheName) ? null : cacheName);


[2/4] incubator-ignite git commit: #ignite-964: add CACHE_GET_AND_REPLACE for nodejs cache.

Posted by iv...@apache.org.
#ignite-964: add CACHE_GET_AND_REPLACE for 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/cb366d43
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/cb366d43
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/cb366d43

Branch: refs/heads/ignite-964
Commit: cb366d43cb1a1be7cc21240d44875f3ca48b786c
Parents: 2496ac3
Author: ivasilinets <iv...@gridgain.com>
Authored: Wed Jul 1 16:46:08 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Wed Jul 1 16:46:08 2015 +0300

----------------------------------------------------------------------
 .../processors/rest/GridRestCommand.java        |  3 +++
 .../processors/rest/GridRestProcessor.java      |  1 +
 .../handlers/cache/GridCacheCommandHandler.java | 28 ++++++++++++++++++++
 .../ignite/internal/NodeJsCacheApiSelfTest.java |  7 +++++
 modules/nodejs/src/test/js/test-cache-api.js    | 18 +++++++++++++
 .../http/jetty/GridJettyRestHandler.java        |  7 +++--
 6 files changed, 62 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cb366d43/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
index 86237b8..3887b4e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
@@ -75,6 +75,9 @@ public enum GridRestCommand {
     /** Replace cache value only if there is currently a mapping for it. */
     CACHE_REPLACE("rep"),
 
+    /** Replace cache value only if there is currently a mapping for it. */
+    CACHE_GET_AND_REPLACE("getandreplace"),
+
     /** Compare and set. */
     CACHE_CAS("cas"),
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cb366d43/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index a19fde7..3eca643 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -549,6 +549,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
             case CACHE_APPEND:
             case CACHE_PREPEND:
             case CACHE_GET_AND_PUT:
+            case CACHE_GET_AND_REPLACE:
             case CACHE_GET_AND_PUT_IF_ABSENT:
             case CACHE_PUT_IF_ABSENT:
                 perm = SecurityPermission.CACHE_PUT;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cb366d43/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 6db6c23..5631d87 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -57,6 +57,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         CACHE_CONTAINS_KEY,
         CACHE_GET,
         CACHE_GET_AND_PUT,
+        CACHE_GET_AND_REPLACE,
         CACHE_GET_AND_PUT_IF_ABSENT,
         CACHE_PUT_IF_ABSENT,
         CACHE_GET_ALL,
@@ -79,6 +80,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         CACHE_CONTAINS_KEY,
         CACHE_GET,
         CACHE_GET_AND_PUT,
+        CACHE_GET_AND_REPLACE,
         CACHE_GET_AND_PUT_IF_ABSENT,
         CACHE_PUT_IF_ABSENT,
         CACHE_PUT,
@@ -178,6 +180,13 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
                     break;
                 }
 
+                case CACHE_GET_AND_REPLACE: {
+                    fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+                        new GetAndReplaceCommand(key, getValue(req0)));
+
+                    break;
+                }
+
                 case CACHE_GET_AND_PUT_IF_ABSENT: {
                     fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
                         new GetAndPutIfAbsentCommand(key, getValue(req0)));
@@ -866,6 +875,25 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
     }
 
     /** */
+    private static class GetAndReplaceCommand extends GetAndPutCommand {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /**
+         * @param key Key.
+         * @param val Value.
+         */
+        GetAndReplaceCommand(Object key, Object val) {
+            super(key, val);
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteInternalFuture<?> applyx(IgniteInternalCache<Object, Object> c, GridKernalContext ctx) {
+            return c.getAndReplaceAsync(key, val);
+        }
+    }
+
+    /** */
     private static class GetAndPutIfAbsentCommand extends GetAndPutCommand {
         /** */
         private static final long serialVersionUID = 0L;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cb366d43/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
index d5bf7ae..3d42d94 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
@@ -196,4 +196,11 @@ public class NodeJsCacheApiSelfTest extends NodeJsAbstractTest {
     public void testReplaceObject() throws Exception {
         runJsScript("testReplaceObject");
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testGetAndReplaceObject() throws Exception {
+        runJsScript("testGetAndReplaceObject");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cb366d43/modules/nodejs/src/test/js/test-cache-api.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-cache-api.js b/modules/nodejs/src/test/js/test-cache-api.js
index cca7e10..864b4c1 100644
--- a/modules/nodejs/src/test/js/test-cache-api.js
+++ b/modules/nodejs/src/test/js/test-cache-api.js
@@ -202,6 +202,24 @@ testReplaceObject = function() {
     startTest("mycache", {trace: [put, replace], entry: [key, val]});
 }
 
+testGetAndReplaceObject = function() {
+    function getAndReplace(cache, entry, next) {
+        var newKey = {"key" :"7"};
+        cache.getAndReplace(entry[0], newKey, onGetAndReplace.bind(null, cache));
+
+        function onGetAndReplace(cache, err, res) {
+            assert(err === null, "Get error on get and put [err=" + err + "]");
+            assert(TestUtils.compareObject(val, res), "Get incorrect value on get.");
+            TestUtils.testDone();
+        }
+    }
+
+    var key = {"name" : "Paul"};
+    var val = {"age" : 12, "books" : ["1", "Book"]};
+
+    startTest("mycache", {trace: [put, getAndReplace], entry: [key, val]});
+}
+
 testIncorrectReplaceObject = function() {
     function replace(cache, entry, next) {
         cache.replace(entry[0], "7", onReplace.bind(null, cache));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cb366d43/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 b96b066..e1a56da 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
@@ -333,7 +333,8 @@ public class GridJettyRestHandler extends AbstractHandler {
 
             cmdRes.setResponse(res);
         } else if (cmd == CACHE_GET || cmd == CACHE_GET_AND_PUT ||
-            cmd == CACHE_GET_AND_PUT_IF_ABSENT || cmd == CACHE_GET_AND_REMOVE) {
+            cmd == CACHE_GET_AND_PUT_IF_ABSENT || cmd == CACHE_GET_AND_REMOVE ||
+            cmd == CACHE_GET_AND_REPLACE) {
             Object o = cmdRes.getResponse();
 
             if (o instanceof JSONCacheObject)
@@ -373,6 +374,7 @@ public class GridJettyRestHandler extends AbstractHandler {
             case CACHE_GET:
             case CACHE_GET_ALL:
             case CACHE_GET_AND_PUT:
+            case CACHE_GET_AND_REPLACE:
             case CACHE_PUT_IF_ABSENT:
             case CACHE_GET_AND_PUT_IF_ABSENT:
             case CACHE_PUT:
@@ -427,7 +429,8 @@ public class GridJettyRestHandler extends AbstractHandler {
                     else if (cmd == CACHE_GET || cmd == CACHE_PUT || cmd == CACHE_REMOVE ||
                         cmd == CACHE_CONTAINS_KEY || cmd == CACHE_GET_AND_PUT ||
                         cmd == CACHE_GET_AND_PUT_IF_ABSENT || cmd == CACHE_GET_AND_REMOVE ||
-                        cmd == CACHE_PUT_IF_ABSENT || cmd == CACHE_REMOVE_VALUE || cmd == CACHE_REPLACE) {
+                        cmd == CACHE_PUT_IF_ABSENT || cmd == CACHE_REMOVE_VALUE || cmd == CACHE_REPLACE ||
+                        cmd == CACHE_GET_AND_REPLACE) {
                         JSONCacheObject cacheObj = new JSONCacheObject(o);
 
                         restReq0.cacheName(F.isEmpty(cacheName) ? null : cacheName);


[3/4] incubator-ignite git commit: #ignite-964: add CACHE_REPLACE_VALUE for nodejs cache.

Posted by iv...@apache.org.
#ignite-964: add CACHE_REPLACE_VALUE for 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/13e78dac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/13e78dac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/13e78dac

Branch: refs/heads/ignite-964
Commit: 13e78dacab1eb3eb9e4c49d0d51c6142c2f7834a
Parents: cb366d4
Author: ivasilinets <iv...@gridgain.com>
Authored: Wed Jul 1 16:56:13 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Wed Jul 1 16:56:13 2015 +0300

----------------------------------------------------------------------
 .../processors/rest/GridRestCommand.java        |  3 ++
 .../processors/rest/GridRestProcessor.java      |  1 +
 .../handlers/cache/GridCacheCommandHandler.java | 33 ++++++++++++++++++++
 modules/nodejs/src/main/js/cache.js             | 18 +++++++++--
 .../ignite/internal/NodeJsCacheApiSelfTest.java |  7 +++++
 modules/nodejs/src/test/js/test-cache-api.js    | 18 +++++++++++
 .../http/jetty/GridJettyRestHandler.java        |  4 ++-
 7 files changed, 81 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
index 3887b4e..90d7dc2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
@@ -76,6 +76,9 @@ public enum GridRestCommand {
     CACHE_REPLACE("rep"),
 
     /** Replace cache value only if there is currently a mapping for it. */
+    CACHE_REPLACE_VALUE("repval"),
+
+    /** Replace cache value only if there is currently a mapping for it. */
     CACHE_GET_AND_REPLACE("getandreplace"),
 
     /** Compare and set. */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index 3eca643..c3c9871 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -552,6 +552,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
             case CACHE_GET_AND_REPLACE:
             case CACHE_GET_AND_PUT_IF_ABSENT:
             case CACHE_PUT_IF_ABSENT:
+            case CACHE_REPLACE_VALUE:
                 perm = SecurityPermission.CACHE_PUT;
                 name = ((GridRestCacheRequest)req).cacheName();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 5631d87..87a87e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -66,6 +66,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         CACHE_PUT_ALL,
         CACHE_REMOVE,
         CACHE_REMOVE_VALUE,
+        CACHE_REPLACE_VALUE,
         CACHE_GET_AND_REMOVE,
         CACHE_REMOVE_ALL,
         CACHE_REPLACE,
@@ -87,6 +88,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         CACHE_ADD,
         CACHE_REMOVE,
         CACHE_REMOVE_VALUE,
+        CACHE_REPLACE_VALUE,
         CACHE_GET_AND_REMOVE,
         CACHE_REPLACE,
         ATOMIC_INCREMENT,
@@ -259,6 +261,13 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
                     break;
                 }
 
+                case CACHE_REPLACE_VALUE: {
+                    fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+                        new ReplaceValueCommand(key, getValue(req0), req0.value2()));
+
+                    break;
+                }
+
                 case CACHE_GET_AND_REMOVE: {
                     fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
                         new GetAndRemoveCommand(key));
@@ -894,6 +903,30 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
     }
 
     /** */
+    private static class ReplaceValueCommand extends GetAndReplaceCommand {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /** */
+        private final Object oldVal;
+
+        /**
+         * @param key Key.
+         * @param val Value.
+         * @param oldVal Old value.
+         */
+        ReplaceValueCommand(Object key, Object val, Object oldVal) {
+            super(key, val);
+            this.oldVal = oldVal;
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteInternalFuture<?> applyx(IgniteInternalCache<Object, Object> c, GridKernalContext ctx) {
+            return c.replaceAsync(key, oldVal, val);
+        }
+    }
+
+    /** */
     private static class GetAndPutIfAbsentCommand extends GetAndPutCommand {
         /** */
         private static final long serialVersionUID = 0L;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/modules/nodejs/src/main/js/cache.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js
index bb48dfd..97175fd 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -220,8 +220,8 @@ Cache.prototype.getAndPut = function(key, val, callback) {
  * replace cache value
  *
  * @this {Cache}
- * @param {string} key Key
- * @param {string} value Value
+ * @param key Key
+ * @param value Value
  * @param {onGet} callback Called on finish
  */
 Cache.prototype.replace = function(key, val, callback) {
@@ -230,6 +230,20 @@ Cache.prototype.replace = function(key, val, callback) {
 }
 
 /**
+ * replace cache value
+ *
+ * @this {Cache}
+ * @param key Key
+ * @param value Value
+ * @param oldVal Old value
+ * @param {onGet} callback Called on finish
+ */
+Cache.prototype.replaceValue = function(key, val, oldVal, callback) {
+    this._server.runCommand(this._createCommand("repVal").
+        setPostData(JSON.stringify({"key" : key, "val" : val, "oldVal" : oldVal})), callback);
+}
+
+/**
  * Get and put cache value
  *
  * @this {Cache}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
index 3d42d94..a79ab6f 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
@@ -203,4 +203,11 @@ public class NodeJsCacheApiSelfTest extends NodeJsAbstractTest {
     public void testGetAndReplaceObject() throws Exception {
         runJsScript("testGetAndReplaceObject");
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testReplaceValueObject() throws Exception {
+        runJsScript("testReplaceValueObject");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/modules/nodejs/src/test/js/test-cache-api.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-cache-api.js b/modules/nodejs/src/test/js/test-cache-api.js
index 864b4c1..99c97c9 100644
--- a/modules/nodejs/src/test/js/test-cache-api.js
+++ b/modules/nodejs/src/test/js/test-cache-api.js
@@ -220,6 +220,24 @@ testGetAndReplaceObject = function() {
     startTest("mycache", {trace: [put, getAndReplace], entry: [key, val]});
 }
 
+testReplaceValueObject = function() {
+    function replaceValue(cache, entry, next) {
+        var newKey = {"key" :"7"};
+        cache.replaceValue(entry[0], newKey, entry[1], onReplaceValue.bind(null, cache));
+
+        function onReplaceValue(cache, err, res) {
+            assert(err === null, "Get error on get and put [err=" + err + "]");
+            assert(res === true, "Incorrect result for replace [expected=true, val" + res + "]");
+            TestUtils.testDone();
+        }
+    }
+
+    var key = {"name" : "Paul"};
+    var val = {"age" : 12, "books" : ["1", "Book"]};
+
+    startTest("mycache", {trace: [put, replaceValue], entry: [key, val]});
+}
+
 testIncorrectReplaceObject = function() {
     function replace(cache, entry, next) {
         cache.replace(entry[0], "7", onReplace.bind(null, cache));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/13e78dac/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 e1a56da..8b60fcf 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
@@ -381,6 +381,7 @@ public class GridJettyRestHandler extends AbstractHandler {
             case CACHE_PUT_ALL:
             case CACHE_REMOVE:
             case CACHE_REMOVE_VALUE:
+            case CACHE_REPLACE_VALUE:
             case CACHE_GET_AND_REMOVE:
             case CACHE_REMOVE_ALL:
             case CACHE_ADD:
@@ -430,13 +431,14 @@ public class GridJettyRestHandler extends AbstractHandler {
                         cmd == CACHE_CONTAINS_KEY || cmd == CACHE_GET_AND_PUT ||
                         cmd == CACHE_GET_AND_PUT_IF_ABSENT || cmd == CACHE_GET_AND_REMOVE ||
                         cmd == CACHE_PUT_IF_ABSENT || cmd == CACHE_REMOVE_VALUE || cmd == CACHE_REPLACE ||
-                        cmd == CACHE_GET_AND_REPLACE) {
+                        cmd == CACHE_GET_AND_REPLACE || cmd == CACHE_REPLACE_VALUE) {
                         JSONCacheObject cacheObj = new JSONCacheObject(o);
 
                         restReq0.cacheName(F.isEmpty(cacheName) ? null : cacheName);
 
                         restReq0.key(cacheObj.getField("key"));
                         restReq0.value(cacheObj.getField("val"));
+                        restReq0.value2(cacheObj.getField("oldVal"));
                     }
                 }
                 else {


[4/4] incubator-ignite git commit: #ignite-964: add SIZE for nodejs cache.

Posted by iv...@apache.org.
#ignite-964: add SIZE for 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/a7bb9ee4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/a7bb9ee4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/a7bb9ee4

Branch: refs/heads/ignite-964
Commit: a7bb9ee4a875b5ca6c928a47282e7104498ee8e2
Parents: 13e78da
Author: ivasilinets <iv...@gridgain.com>
Authored: Wed Jul 1 17:08:41 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Wed Jul 1 17:08:41 2015 +0300

----------------------------------------------------------------------
 .../processors/rest/GridRestCommand.java        |  3 ++
 .../processors/rest/GridRestProcessor.java      |  1 +
 .../handlers/cache/GridCacheCommandHandler.java | 20 +++++++++++-
 modules/nodejs/src/main/js/cache.js             |  8 +++++
 .../ignite/internal/NodeJsCacheApiSelfTest.java |  7 ++++
 modules/nodejs/src/test/js/test-cache-api.js    | 34 +++++++++++++++++---
 .../http/jetty/GridJettyRestHandler.java        |  1 +
 7 files changed, 68 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
index 90d7dc2..81fb7f5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestCommand.java
@@ -93,6 +93,9 @@ public enum GridRestCommand {
     /** Cache metrics. */
     CACHE_METRICS("cache"),
 
+    /** Cache size. */
+    CACHE_SIZE("cachesize"),
+
     /** Increment. */
     ATOMIC_INCREMENT("incr"),
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index c3c9871..c8cb25a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -575,6 +575,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
                 break;
 
             case CACHE_METRICS:
+            case CACHE_SIZE:
             case TOPOLOGY:
             case NODE:
             case VERSION:

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 87a87e3..26140f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -73,7 +73,8 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         CACHE_CAS,
         CACHE_APPEND,
         CACHE_PREPEND,
-        CACHE_METRICS
+        CACHE_METRICS,
+        CACHE_SIZE
     );
 
     /** Requests with required parameter {@code key}. */
@@ -329,6 +330,12 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
                     break;
                 }
 
+                case CACHE_SIZE: {
+                    fut = executeCommand(req.destinationId(), req.clientId(), cacheName, key, new SizeCommand());
+
+                    break;
+                }
+
                 default:
                     throw new IllegalArgumentException("Invalid command for cache handler: " + req);
             }
@@ -1304,4 +1311,15 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
             );
         }
     }
+
+    /** */
+    private static class SizeCommand extends CacheCommand {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /** {@inheritDoc} */
+        @Override public IgniteInternalFuture<?> applyx(IgniteInternalCache<Object, Object> c, GridKernalContext ctx) {
+            return c.sizeAsync(new CachePeekMode[]{CachePeekMode.ALL});
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/modules/nodejs/src/main/js/cache.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js
index 97175fd..2fea1f6 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -270,6 +270,14 @@ Cache.prototype.getAndPutIfAbsent = function(key, val, callback) {
 }
 
 /**
+ * @this {Cache}
+ * @param {onGet} callback Called on finish
+ */
+Cache.prototype.size = function(callback) {
+    this._server.runCommand(this._createCommand("cachesize"), callback);
+}
+
+/**
  * Execute sql query
  *
  * @param {SqlQuery|SqlFieldsQuery} qry Query

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
index a79ab6f..3123c13 100644
--- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
+++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsCacheApiSelfTest.java
@@ -210,4 +210,11 @@ public class NodeJsCacheApiSelfTest extends NodeJsAbstractTest {
     public void testReplaceValueObject() throws Exception {
         runJsScript("testReplaceValueObject");
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testSize() throws Exception {
+        runJsScript("testSize");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/modules/nodejs/src/test/js/test-cache-api.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/test/js/test-cache-api.js b/modules/nodejs/src/test/js/test-cache-api.js
index 99c97c9..3d3dad8 100644
--- a/modules/nodejs/src/test/js/test-cache-api.js
+++ b/modules/nodejs/src/test/js/test-cache-api.js
@@ -171,7 +171,7 @@ testReplace = function() {
             cache.get(entry[0], function(err, res) {
                 assert(!err);
                 assert("7" === res, "Get incorrect value on get [exp=7, val=" + res + "]");
-                TestUtils.testDone();
+                next();
             });
         }
     }
@@ -191,7 +191,8 @@ testReplaceObject = function() {
             cache.get(entry[0], function(err, res) {
                 assert(!err);
                 assert(TestUtils.compareObject(newKey, res), "Get incorrect value on get.");
-                TestUtils.testDone();
+
+                next();
             });
         }
     }
@@ -210,7 +211,8 @@ testGetAndReplaceObject = function() {
         function onGetAndReplace(cache, err, res) {
             assert(err === null, "Get error on get and put [err=" + err + "]");
             assert(TestUtils.compareObject(val, res), "Get incorrect value on get.");
-            TestUtils.testDone();
+
+            next();
         }
     }
 
@@ -228,7 +230,7 @@ testReplaceValueObject = function() {
         function onReplaceValue(cache, err, res) {
             assert(err === null, "Get error on get and put [err=" + err + "]");
             assert(res === true, "Incorrect result for replace [expected=true, val" + res + "]");
-            TestUtils.testDone();
+            next();
         }
     }
 
@@ -245,7 +247,7 @@ testIncorrectReplaceObject = function() {
         function onReplace(cache, err, res) {
             assert(err !== null, "Do not get error");
             assert(err.indexOf("Failed to update keys") > -1, "Incorrect error message: " + err);
-            TestUtils.testDone();
+            next();
         }
     }
 
@@ -255,6 +257,28 @@ testIncorrectReplaceObject = function() {
     startTest("mycache", {trace: [put, replace], entry: [key, val]});
 }
 
+testSize = function() {
+    function onSize(exp, next, cache, err, res) {
+            assert(err === null, "Do not get error");
+            assert(res === exp, "Incorrect size: " + res);
+
+            next();
+    }
+
+    function size0(cache, entry, next) {
+        cache.size(onSize.bind(null, 0, next, cache));
+    }
+
+     function size1(cache, entry, next) {
+        cache.size(onSize.bind(null, 1, next, cache));
+    }
+
+    var key = {"name" : "Paul"};
+    var val = {"age" : 12, "books" : ["1", "Book"]};
+
+    startTest("mycache", {trace: [size0, put, size1], entry: [key, val]});
+}
+
 function objectEntries() {
     entries = [];
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a7bb9ee4/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 8b60fcf..264cf5e 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
@@ -387,6 +387,7 @@ public class GridJettyRestHandler extends AbstractHandler {
             case CACHE_ADD:
             case CACHE_CAS:
             case CACHE_METRICS:
+            case CACHE_SIZE:
             case CACHE_REPLACE:
             case CACHE_APPEND:
             case CACHE_PREPEND: {