Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-964 ad11a4a12 -> 830f397d0


#ignite-964: add contains key 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/7bed77b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7bed77b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7bed77b3

Branch: refs/heads/ignite-964
Commit: 7bed77b375580b62f4bc5b98b32a595716868cad
Parents: ad11a4a
Author: ivasilinets <ivasilin...@gridgain.com>
Authored: Wed Jul 1 13:47:56 2015 +0300
Committer: ivasilinets <ivasilin...@gridgain.com>
Committed: Wed Jul 1 13:47:56 2015 +0300

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


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 0afefb6..48d5bcf 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
@@ -33,6 +33,9 @@ public enum GridRestCommand {
     /** Get cached value. */
     CACHE_GET("get"),
 
+    /** Contains cached value. */
+    CACHE_CONTAINS_KEY("containskey"),
+
     /** Get several cached values. */
     CACHE_GET_ALL("getall"),
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 5a073a0..220f2d1 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
@@ -388,6 +388,7 @@ public class GridRestProcessor extends GridProcessorAdapter 
{
 
         if (interceptor != null && res.getResponse() != null) {
             switch (req.command()) {
+                case CACHE_CONTAINS_KEY:
                 case CACHE_GET:
                 case CACHE_GET_ALL:
                 case CACHE_PUT:
@@ -531,6 +532,7 @@ public class GridRestProcessor extends GridProcessorAdapter 
{
 
         switch (req.command()) {
             case CACHE_GET:
+            case CACHE_CONTAINS_KEY:
             case CACHE_GET_ALL:
                 perm = SecurityPermission.CACHE_READ;
                 name = ((GridRestCacheRequest)req).cacheName();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 1f24023..a4dc466 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
@@ -53,6 +53,7 @@ import static 
org.apache.ignite.transactions.TransactionIsolation.*;
 public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
     /** Supported commands. */
     private static final Collection<GridRestCommand> SUPPORTED_COMMANDS = 
U.sealList(
+        CACHE_CONTAINS_KEY,
         CACHE_GET,
         CACHE_GET_ALL,
         CACHE_PUT,
@@ -69,6 +70,7 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
 
     /** Requests with required parameter {@code key}. */
     private static final EnumSet<GridRestCommand> KEY_REQUIRED_REQUESTS = 
EnumSet.of(
+        CACHE_CONTAINS_KEY,
         CACHE_GET,
         CACHE_PUT,
         CACHE_ADD,
@@ -137,6 +139,13 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
             IgniteInternalFuture<GridRestResponse> fut;
 
             switch (cmd) {
+                case CACHE_CONTAINS_KEY: {
+                    fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, skipStore, key,
+                        new ContainsCommand(key));
+
+                    break;
+                }
+
                 case CACHE_GET: {
                     fut = executeCommand(req.destinationId(), req.clientId(), 
cacheName, skipStore, key,
                         new GetCommand(key));
@@ -702,6 +711,27 @@ public class GridCacheCommandHandler extends 
GridRestCommandHandlerAdapter {
     }
 
     /** */
+    private static class ContainsCommand extends CacheProjectionCommand {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /** */
+        private final Object key;
+
+        /**
+         * @param key Key.
+         */
+        ContainsCommand(Object key) {
+            this.key = key;
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteInternalFuture<?> 
applyx(IgniteInternalCache<Object, Object> c, GridKernalContext ctx) {
+            return c.containsKeyAsync(key);
+        }
+    }
+
+    /** */
     private static class GetCommand extends CacheProjectionCommand {
         /** */
         private static final long serialVersionUID = 0L;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 c65f026..2d91fcb 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -99,18 +99,10 @@ Cache.prototype.putAll = function(entries, callback) {
 }
 
 /**
- * Callback for cache get
- *
- * @callback Cache~onGetAll
- * @param {string} error Error
- * @param {string[]} results Result values
- */
-
-/**
  * Get keys from the cache
  *
  * @this {Cache}
- * @param {string[]} keys Keys
+ * @param {Object[]} keys Keys
  * @param {Cache~onGetAll} callback Called on finish
  */
 Cache.prototype.getAll = function(keys, callback) {
@@ -136,6 +128,18 @@ Cache.prototype.getAll = function(keys, callback) {
 }
 
 /**
+ * Determines if the cache contains an entry for the specified key.
+ *
+ * @this {Cache}
+ * @param {Object} key Key
+ * @param {Cache~onGetAll} callback Called on finish with boolean result
+ */
+Cache.prototype.containsKey = function(key, callback) {
+    this._server.runCommand(this._createCommand("containskey").
+        setPostData(JSON.stringify({"key" : key})), callback);
+}
+
+/**
  * Execute sql query
  *
  * @param {SqlQuery|SqlFieldsQuery} qry Query
@@ -234,5 +238,13 @@ Entry.prototype.val = function() {
     return this._val;
 }
 
+/**
+ * Callback for cache get
+ *
+ * @callback Cache~onGetAll
+ * @param {string} error Error
+ * @param {string[]} results Result values
+ */
+
 exports.Cache = Cache
 exports.Entry = Entry
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 d8f3859..8fadcc4 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
@@ -98,4 +98,18 @@ public class NodeJsCacheApiSelfTest extends 
NodeJsAbstractTest {
     public void testRemoveAllObjectGetAll() throws Exception {
         runJsScript("testRemoveAllObjectGetAll");
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testContains() throws Exception {
+        runJsScript("testContains");
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testPutContains() throws Exception {
+        runJsScript("testPutContains");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 fa3f6cc..afcefa3 100644
--- a/modules/nodejs/src/test/js/test-cache-api.js
+++ b/modules/nodejs/src/test/js/test-cache-api.js
@@ -26,6 +26,14 @@ testPutGet = function() {
     startTest("mycache", {trace: [put, getExist], entry: ["key" , "6"]});
 }
 
+testPutContains = function() {
+    startTest("mycache", {trace: [put, containsKey], entry: ["key" , "6"]});
+}
+
+testContains = function() {
+    startTest("mycache", {trace: [notContainsKey], entry: ["key" , "6"]});
+}
+
 testRemove = function() {
     startTest("mycache", {trace: [put, getExist, remove, getNonExist], entry: 
["key" , "6"]});
 }
@@ -106,6 +114,28 @@ function put(cache, entry, next) {
     cache.put(entry[0], entry[1], next);
 }
 
+function containsKey(cache, entry, next) {
+    cache.containsKey(entry[0], onContainsKey);
+
+    function onContainsKey(err, val) {
+        assert(err === null, "Error on contains key [err=" + err + "]");
+        assert(val === true, "Incorrect result [expected=" + true + ", val=" + 
val + "]");
+
+        TestUtils.testDone();
+    }
+}
+
+function notContainsKey(cache, entry, next) {
+    cache.containsKey(entry[0], onContainsKey);
+
+    function onContainsKey(err, val) {
+        assert(err === null, "Error on contains key [err=" + err + "]");
+        assert(val === false, "Incorrect result [expected=" + false + ", val=" 
+ val + "]");
+
+        TestUtils.testDone();
+    }
+}
+
 function getExist(cache, entry, next) {
     var key = Object.keys(entry)[0];
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7bed77b3/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 b5877b6..c6fbbea 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
@@ -362,6 +362,7 @@ public class GridJettyRestHandler extends AbstractHandler {
                 break;
             }
 
+            case CACHE_CONTAINS_KEY:
             case CACHE_GET:
             case CACHE_GET_ALL:
             case CACHE_PUT:
@@ -411,7 +412,8 @@ public class GridJettyRestHandler extends AbstractHandler {
 
                         restReq0.values(map);
                     }
-                    else if (cmd == CACHE_GET || cmd == CACHE_PUT || cmd == 
CACHE_REMOVE) {
+                    else if (cmd == CACHE_GET || cmd == CACHE_PUT || cmd == 
CACHE_REMOVE ||
+                        cmd == CACHE_CONTAINS_KEY) {
                         JSONCacheObject cacheObj = new JSONCacheObject(o);
 
                         restReq0.cacheName(F.isEmpty(cacheName) ? null : 
cacheName);

Reply via email to