You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sh...@apache.org on 2016/11/16 03:39:19 UTC

ignite git commit: IGNITE-3066: Enforced operations on strings.

Repository: ignite
Updated Branches:
  refs/heads/ignite-2788 a10e1b9d1 -> 5d3b6e37b


 IGNITE-3066: Enforced operations on strings.


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

Branch: refs/heads/ignite-2788
Commit: 5d3b6e37b86f6e92d5f8d050c4967c24da75335d
Parents: a10e1b9
Author: shtykh_roman <rs...@yahoo.com>
Authored: Wed Nov 16 12:39:03 2016 +0900
Committer: shtykh_roman <rs...@yahoo.com>
Committed: Wed Nov 16 12:39:03 2016 +0900

----------------------------------------------------------------------
 .../tcp/redis/RedisProtocolSelfTest.java        | 66 +++++++++++++++++++-
 .../string/GridRedisAppendCommandHandler.java   |  5 +-
 .../string/GridRedisGetCommandHandler.java      |  9 ++-
 .../string/GridRedisGetRangeCommandHandler.java |  5 +-
 .../string/GridRedisGetSetCommandHandler.java   |  9 ++-
 .../string/GridRedisSetRangeCommandHandler.java |  8 ++-
 .../string/GridRedisStrlenCommandHandler.java   |  5 +-
 7 files changed, 96 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/protocols/tcp/redis/RedisProtocolSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/protocols/tcp/redis/RedisProtocolSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/protocols/tcp/redis/RedisProtocolSelfTest.java
index d577efd..bd20b27 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/protocols/tcp/redis/RedisProtocolSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/protocols/tcp/redis/RedisProtocolSelfTest.java
@@ -18,7 +18,9 @@
 package org.apache.ignite.internal.processors.rest.protocols.tcp.redis;
 
 import java.math.BigInteger;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -157,11 +159,19 @@ public class RedisProtocolSelfTest extends GridCommonAbstractTest {
     public void testGet() throws Exception {
         try (Jedis jedis = pool.getResource()) {
             jcache().put("getKey1", "getVal1");
-            jcache().put("getKey2", 0);
 
             Assert.assertEquals("getVal1", jedis.get("getKey1"));
-            Assert.assertEquals("0", jedis.get("getKey2"));
             Assert.assertNull(jedis.get("wrongKey"));
+
+            jcache().put("setDataTypeKey", new HashSet<String>(Arrays.asList("1", "2")));
+            try {
+                jedis.get("setDataTypeKey");
+
+                assert false : "Exception has to be thrown!";
+            }
+            catch (JedisDataException e) {
+                assertTrue(e.getMessage().startsWith("WRONGTYPE"));
+            }
         }
     }
 
@@ -170,10 +180,20 @@ public class RedisProtocolSelfTest extends GridCommonAbstractTest {
      */
     public void testGetSet() throws Exception {
         try (Jedis jedis = pool.getResource()) {
-            jcache().put("getSetKey1", 1);
+            jcache().put("getSetKey1", "1");
 
             Assert.assertEquals("1", jedis.getSet("getSetKey1", "0"));
             Assert.assertNull(jedis.get("getSetNonExistingKey"));
+
+            jcache().put("setDataTypeKey", new HashSet<String>(Arrays.asList("1", "2")));
+            try {
+                jedis.getSet("setDataTypeKey", "0");
+
+                assert false : "Exception has to be thrown!";
+            }
+            catch (JedisDataException e) {
+                assertTrue(e.getMessage().startsWith("WRONGTYPE"));
+            }
         }
     }
 
@@ -296,6 +316,16 @@ public class RedisProtocolSelfTest extends GridCommonAbstractTest {
         try (Jedis jedis = pool.getResource()) {
             Assert.assertEquals(5, (long)jedis.append("appendKey1", "Hello"));
             Assert.assertEquals(12, (long)jedis.append("appendKey1", " World!"));
+
+            jcache().put("setDataTypeKey", new HashSet<String>(Arrays.asList("1", "2")));
+            try {
+                jedis.append("setDataTypeKey", "");
+
+                assert false : "Exception has to be thrown!";
+            }
+            catch (JedisDataException e) {
+                assertTrue(e.getMessage().startsWith("WRONGTYPE"));
+            }
         }
     }
 
@@ -308,6 +338,16 @@ public class RedisProtocolSelfTest extends GridCommonAbstractTest {
 
             jcache().put("strlenKey", "abc");
             Assert.assertEquals(3, (long)jedis.strlen("strlenKey"));
+
+            jcache().put("setDataTypeKey", new HashSet<String>(Arrays.asList("1", "2")));
+            try {
+                jedis.strlen("setDataTypeKey");
+
+                assert false : "Exception has to be thrown!";
+            }
+            catch (JedisDataException e) {
+                assertTrue(e.getMessage().startsWith("WRONGTYPE"));
+            }
         }
     }
 
@@ -343,6 +383,16 @@ public class RedisProtocolSelfTest extends GridCommonAbstractTest {
 
             jcache().put("setRangeKey3", "Hello World");
             Assert.assertEquals(11, (long)jedis.setrange("setRangeKey3", 6, "Redis"));
+
+            jcache().put("setDataTypeKey", new HashSet<String>(Arrays.asList("1", "2")));
+            try {
+                jedis.setrange("setDataTypeKey", 0, "Redis");
+
+                assert false : "Exception has to be thrown!";
+            }
+            catch (JedisDataException e) {
+                assertTrue(e.getMessage().startsWith("WRONGTYPE"));
+            }
         }
     }
 
@@ -358,6 +408,16 @@ public class RedisProtocolSelfTest extends GridCommonAbstractTest {
             Assert.assertEquals("ing", jedis.getrange("getRangeKey", -3, -1));
             Assert.assertEquals("This is a string", jedis.getrange("getRangeKey", 0, -1));
             Assert.assertEquals("string", jedis.getrange("getRangeKey", 10, 100));
+
+            jcache().put("setDataTypeKey", new HashSet<String>(Arrays.asList("1", "2")));
+            try {
+                jedis.getrange("setDataTypeKey", 0, 1);
+
+                assert false : "Exception has to be thrown!";
+            }
+            catch (JedisDataException e) {
+                assertTrue(e.getMessage().startsWith("WRONGTYPE"));
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisAppendCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisAppendCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisAppendCommandHandler.java
index a46f0f6..60d25fd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisAppendCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisAppendCommandHandler.java
@@ -101,9 +101,12 @@ public class GridRedisAppendCommandHandler extends GridRedisRestCommandHandler {
     @Override public ByteBuffer makeResponse(final GridRestResponse restRes, List<String> params) {
         if (restRes.getResponse() == null)
             return GridRedisProtocolParser.nil();
-        else {
+
+        if (restRes.getResponse() instanceof String) {
             int resLen = ((String)restRes.getResponse()).length();
             return GridRedisProtocolParser.toInteger(String.valueOf(resLen));
         }
+        else
+            return GridRedisProtocolParser.toTypeError("Operation against a key holding the wrong kind of value");
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetCommandHandler.java
index 0295876..7be53b2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetCommandHandler.java
@@ -70,7 +70,12 @@ public class GridRedisGetCommandHandler extends GridRedisRestCommandHandler {
 
     /** {@inheritDoc} */
     @Override public ByteBuffer makeResponse(final GridRestResponse restRes, List<String> params) {
-        return (restRes.getResponse() == null ? GridRedisProtocolParser.nil()
-            : GridRedisProtocolParser.toBulkString(restRes.getResponse()));
+        if (restRes.getResponse() == null)
+            return GridRedisProtocolParser.nil();
+
+        if (restRes.getResponse() instanceof String)
+            return GridRedisProtocolParser.toBulkString(restRes.getResponse());
+        else
+            return GridRedisProtocolParser.toTypeError("Operation against a key holding the wrong kind of value");
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetRangeCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetRangeCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetRangeCommandHandler.java
index a0aaf37..41b1eac 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetRangeCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetRangeCommandHandler.java
@@ -81,7 +81,8 @@ public class GridRedisGetRangeCommandHandler extends GridRedisRestCommandHandler
     @Override public ByteBuffer makeResponse(final GridRestResponse restRes, List<String> params) {
         if (restRes.getResponse() == null)
             return GridRedisProtocolParser.toBulkString("");
-        else {
+
+        if (restRes.getResponse() instanceof String) {
             String res = String.valueOf(restRes.getResponse());
             int startOffset;
             int endOffset;
@@ -97,6 +98,8 @@ public class GridRedisGetRangeCommandHandler extends GridRedisRestCommandHandler
 
             return GridRedisProtocolParser.toBulkString(res.substring(startOffset, endOffset));
         }
+        else
+            return GridRedisProtocolParser.toTypeError("Operation against a key holding the wrong kind of value");
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetSetCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetSetCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetSetCommandHandler.java
index 9e70516..781b8ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetSetCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisGetSetCommandHandler.java
@@ -78,7 +78,12 @@ public class GridRedisGetSetCommandHandler extends GridRedisRestCommandHandler {
 
     /** {@inheritDoc} */
     @Override public ByteBuffer makeResponse(final GridRestResponse restRes, List<String> params) {
-        return (restRes.getResponse() == null ? GridRedisProtocolParser.nil()
-            : GridRedisProtocolParser.toBulkString(restRes.getResponse()));
+        if (restRes.getResponse() == null)
+            return GridRedisProtocolParser.nil();
+
+        if (restRes.getResponse() instanceof String)
+            return GridRedisProtocolParser.toBulkString(restRes.getResponse());
+        else
+            return GridRedisProtocolParser.toTypeError("Operation against a key holding the wrong kind of value");
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisSetRangeCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisSetRangeCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisSetRangeCommandHandler.java
index 40244c8..dfd24a5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisSetRangeCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisSetRangeCommandHandler.java
@@ -111,6 +111,9 @@ public class GridRedisSetRangeCommandHandler extends GridRedisRestCommandHandler
             putReq.value(new String(dst));
         }
         else {
+            if (!(resp instanceof String))
+                return getReq;
+
             String cacheVal = String.valueOf(resp);
 
             cacheVal = cacheVal.substring(0, off) + val;
@@ -127,9 +130,12 @@ public class GridRedisSetRangeCommandHandler extends GridRedisRestCommandHandler
     @Override public ByteBuffer makeResponse(final GridRestResponse restRes, List<String> params) {
         if (restRes.getResponse() == null)
             return GridRedisProtocolParser.toInteger("0");
-        else {
+
+        if (restRes.getResponse() instanceof String) {
             int resLen = ((String)restRes.getResponse()).length();
             return GridRedisProtocolParser.toInteger(String.valueOf(resLen));
         }
+        else
+            return GridRedisProtocolParser.toTypeError("Operation against a key holding the wrong kind of value");
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/5d3b6e37/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisStrlenCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisStrlenCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisStrlenCommandHandler.java
index 876c798..b4a88c9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisStrlenCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/redis/string/GridRedisStrlenCommandHandler.java
@@ -72,9 +72,12 @@ public class GridRedisStrlenCommandHandler extends GridRedisRestCommandHandler {
     @Override public ByteBuffer makeResponse(final GridRestResponse restRes, List<String> params) {
         if (restRes.getResponse() == null)
             return GridRedisProtocolParser.toInteger("0");
-        else {
+
+        if (restRes.getResponse() instanceof String) {
             int len = String.valueOf(restRes.getResponse()).length();
             return GridRedisProtocolParser.toInteger(String.valueOf(len));
         }
+        else
+            return GridRedisProtocolParser.toTypeError("Operation against a key holding the wrong kind of value");
     }
 }