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 15:09:15 UTC
[7/8] incubator-ignite git commit: #ignite-964: add
CACHE_REMOVE_VALUE method for nodejs cache.
#ignite-964: add CACHE_REMOVE_VALUE 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/61f88e8f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/61f88e8f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/61f88e8f
Branch: refs/heads/ignite-964
Commit: 61f88e8fd8c50aba12c2b884287e28efef2f76f5
Parents: d44d7f2
Author: ivasilinets <iv...@gridgain.com>
Authored: Wed Jul 1 16:00:47 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Wed Jul 1 16:00:47 2015 +0300
----------------------------------------------------------------------
.../processors/rest/GridRestCommand.java | 3 +
.../processors/rest/GridRestProcessor.java | 1 +
.../handlers/cache/GridCacheCommandHandler.java | 78 ++++++++++++--------
modules/nodejs/src/main/js/cache.js | 16 +++-
.../ignite/internal/NodeJsCacheApiSelfTest.java | 7 ++
modules/nodejs/src/test/js/test-cache-api.js | 19 ++++-
.../http/jetty/GridJettyRestHandler.java | 3 +-
7 files changed, 92 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 b8f05bf..86237b8 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
@@ -64,6 +64,9 @@ public enum GridRestCommand {
CACHE_REMOVE("rmv"),
/** Remove value from cache. */
+ CACHE_REMOVE_VALUE("rmvvalue"),
+
+ /** Remove value from cache. */
CACHE_GET_AND_REMOVE("getandrmv"),
/** Remove several values from cache. */
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 b524e92..a19fde7 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
@@ -559,6 +559,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
case CACHE_REMOVE:
case CACHE_REMOVE_ALL:
case CACHE_GET_AND_REMOVE:
+ case CACHE_REMOVE_VALUE:
perm = SecurityPermission.CACHE_REMOVE;
name = ((GridRestCacheRequest)req).cacheName();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 b5b59fc..6db6c23 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
@@ -64,6 +64,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
CACHE_ADD,
CACHE_PUT_ALL,
CACHE_REMOVE,
+ CACHE_REMOVE_VALUE,
CACHE_GET_AND_REMOVE,
CACHE_REMOVE_ALL,
CACHE_REPLACE,
@@ -83,6 +84,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
CACHE_PUT,
CACHE_ADD,
CACHE_REMOVE,
+ CACHE_REMOVE_VALUE,
CACHE_GET_AND_REMOVE,
CACHE_REPLACE,
ATOMIC_INCREMENT,
@@ -170,38 +172,22 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
}
case CACHE_GET_AND_PUT: {
- final Object val = req0.value();
-
- if (val == null)
- throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
-
fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
- new GetAndPutCommand(key, val));
+ new GetAndPutCommand(key, getValue(req0)));
break;
}
case CACHE_GET_AND_PUT_IF_ABSENT: {
- final Object val = req0.value();
-
- if (val == null)
- throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
-
fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
- new GetAndPutIfAbsentCommand(key, val));
+ new GetAndPutIfAbsentCommand(key, getValue(req0)));
break;
}
case CACHE_PUT_IF_ABSENT: {
-
- final Object val = req0.value();
-
- if (val == null)
- throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
-
fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
- new PutIfAbsentCommand(key, val));
+ new PutIfAbsentCommand(key, getValue(req0)));
break;
}
@@ -214,25 +200,15 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
}
case CACHE_PUT: {
- final Object val = req0.value();
-
- if (val == null)
- throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
-
fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key, new
- PutCommand(key, ttl, val));
+ PutCommand(key, ttl, getValue(req0)));
break;
}
case CACHE_ADD: {
- final Object val = req0.value();
-
- if (val == null)
- throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
-
fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
- new AddCommand(key, ttl, val));
+ new AddCommand(key, ttl, getValue(req0)));
break;
}
@@ -267,6 +243,13 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
break;
}
+ case CACHE_REMOVE_VALUE: {
+ fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
+ new RemoveValueCommand(key, getValue(req0)));
+
+ break;
+ }
+
case CACHE_GET_AND_REMOVE: {
fut = executeCommand(req.destinationId(), req.clientId(), cacheName, skipStore, key,
new GetAndRemoveCommand(key));
@@ -375,6 +358,20 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
}
/**
+ * @param req Request.
+ * @return Request value.
+ * @throws IgniteCheckedException If incorrect keys are presented.
+ */
+ private Object getValue(GridRestCacheRequest req) throws IgniteCheckedException {
+ final Object val = req.value();
+
+ if (val == null)
+ throw new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("val"));
+
+ return val;
+ }
+
+ /**
* Executes command on flagged cache projection. Checks {@code destId} to find
* if command could be performed locally or routed to a remote node.
*
@@ -970,6 +967,25 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
}
/** */
+ private static class RemoveValueCommand extends GetAndPutCommand {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param key Key.
+ * @param val Value.
+ */
+ RemoveValueCommand(Object key, Object val) {
+ super(key, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<?> applyx(IgniteInternalCache<Object, Object> c, GridKernalContext ctx) {
+ return c.removeAsync(key, val);
+ }
+ }
+
+ /** */
private static class GetAndRemoveCommand extends RemoveCommand {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 9184154..57f1f79 100644
--- a/modules/nodejs/src/main/js/cache.js
+++ b/modules/nodejs/src/main/js/cache.js
@@ -78,7 +78,7 @@ Cache.prototype.putIfAbsent = function(key, value, callback) {
* Remove cache key
*
* @this {Cache}
- * @param {string} key Key
+ * @param key Key
* @param {noValue} callback Called on finish
*/
Cache.prototype.remove = function(key, callback) {
@@ -88,6 +88,20 @@ Cache.prototype.remove = function(key, callback) {
}
/**
+ * Remove cache key
+ *
+ * @this {Cache}
+ * @param key Key
+ * @param value Value
+ * @param {noValue} callback Called on finish
+ */
+Cache.prototype.removeValue = function(key, value, callback) {
+ this._server.runCommand(this._createCommand("rmvvalue").
+ setPostData(JSON.stringify({"key": key, "val" : value})),
+ callback);
+}
+
+/**
* Get and remove cache key
*
* @this {Cache}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 201cc3d..dcb0db5 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
@@ -154,4 +154,11 @@ public class NodeJsCacheApiSelfTest extends NodeJsAbstractTest {
public void testGetAndRemove() throws Exception {
runJsScript("testGetAndRemove");
}
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testRemoveValue() throws Exception {
+ runJsScript("testRemoveValue");
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 466518d..3e397bc 100644
--- a/modules/nodejs/src/test/js/test-cache-api.js
+++ b/modules/nodejs/src/test/js/test-cache-api.js
@@ -91,7 +91,7 @@ testGetAndPutIfAbsent = function() {
function onGetAndPutIfAbsent(err, res) {
assert(err === null, "Get error on get and put [err=" + err + "]");
- assert(res === "6", "Incorrect result for getAndPut [expected=6, val" + res + "]");
+ assert(res === "6", "Incorrect result for getAndPutIfAbsent [expected=6, val" + res + "]");
next();
}
@@ -106,7 +106,7 @@ testPutIfAbsent = function() {
function onPutIfAbsent(err, res) {
assert(err === null, "Get error on get and put [err=" + err + "]");
- assert(res === false, "Incorrect result for getAndPut [expected=false, val" + res + "]");
+ assert(res === false, "Incorrect result for putIfAbsent [expected=false, val" + res + "]");
next();
}
@@ -115,6 +115,21 @@ testPutIfAbsent = function() {
startTest("mycache", {trace: [put, putIfAbsent, getExist], entry: ["key", "6"]});
}
+testRemoveValue = function() {
+ function removeValue(cache, entry, next) {
+ cache.removeValue("key", "7", onRemoveValue);
+
+ function onRemoveValue(err, res) {
+ assert(err === null, "Get error on get and put [err=" + err + "]");
+ assert(res === false, "Incorrect result for onRemoveValue [expected=false, val" + res + "]");
+
+ next();
+ }
+ }
+
+ startTest("mycache", {trace: [put, removeValue, getExist], entry: ["key", "6"]});
+}
+
testGetAndRemove = function() {
function getAndRemove(cache, entry, next) {
cache.getAndRemove("key", onGetAndRemove);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/61f88e8f/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 0574786..cacbf19 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
@@ -372,6 +372,7 @@ public class GridJettyRestHandler extends AbstractHandler {
case CACHE_PUT:
case CACHE_PUT_ALL:
case CACHE_REMOVE:
+ case CACHE_REMOVE_VALUE:
case CACHE_GET_AND_REMOVE:
case CACHE_REMOVE_ALL:
case CACHE_ADD:
@@ -420,7 +421,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_PUT_IF_ABSENT || cmd == CACHE_REMOVE_VALUE) {
JSONCacheObject cacheObj = new JSONCacheObject(o);
restReq0.cacheName(F.isEmpty(cacheName) ? null : cacheName);