diff --git a/gradle.properties b/gradle.properties index 9661c7026..5d437e7db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ slf4jVersion=1.7.5 junitVersion=4.11 jredisVersion=06052013 -jedisVersion=2.4.1 +jedisVersion=2.5.1 springVersion=3.2.9.RELEASE log4jVersion=1.2.17 version=1.4.0.BUILD-SNAPSHOT diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java index 69919b266..de00f447b 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java @@ -2975,11 +2975,8 @@ public class JedisConnection implements RedisConnection { ScanParams params = prepareScanParams(options); - // TODO: use binary version of jedis.sscan (in v.2.4.3) to avoid potentially invalid representations. - redis.clients.jedis.ScanResult result = jedis.sscan(JedisConverters.toString(key), - Long.toString(cursorId), params); - return new ScanIteration(Long.valueOf(result.getStringCursor()), JedisConverters.stringListToByteList() - .convert(result.getResult())); + redis.clients.jedis.ScanResult result = jedis.sscan(key, JedisConverters.toBytes(cursorId), params); + return new ScanIteration(Long.valueOf(result.getStringCursor()), result.getResult()); } }.open(); } diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java index b1bc24832..90116bb19 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConverters.java @@ -48,6 +48,7 @@ import redis.clients.util.SafeEncoder; * * @author Jennifer Hickey * @author Christoph Strobl + * @author Thomas Darimont */ abstract public class JedisConverters extends Converters { @@ -117,6 +118,10 @@ abstract public class JedisConverters extends Converters { return String.valueOf(source).getBytes(); } + public static byte[] toBytes(Long source) { + return String.valueOf(source).getBytes(); + } + public static String toString(byte[] source) { return source == null ? null : SafeEncoder.encode(source); } diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java index e3d63f0f1..2fbf354e2 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java @@ -24,6 +24,7 @@ import org.junit.After; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.redis.SettingsUtils; import org.springframework.data.redis.connection.AbstractConnectionPipelineIntegrationTests; import org.springframework.data.redis.connection.DefaultStringRedisConnection; @@ -39,6 +40,7 @@ import redis.clients.jedis.JedisPoolConfig; * * @author Jennifer Hickey * @author Christoph Strobl + * @author Thomas Darimont */ @RunWith(RelaxedJUnit4ClassRunner.class) @ContextConfiguration("JedisConnectionIntegrationTests-context.xml") @@ -263,4 +265,12 @@ public class JedisConnectionPipelineIntegrationTests extends AbstractConnectionP public void testListClientsContainsAtLeastOneElement() { super.testListClientsContainsAtLeastOneElement(); } + + /** + * @see DATAREDIS-296 + */ + @Test(expected = InvalidDataAccessApiUsageException.class) + public void testExecWithoutMulti() { + super.testExecWithoutMulti(); + } } diff --git a/src/test/java/org/springframework/data/redis/core/DefaultSetOperationsTests.java b/src/test/java/org/springframework/data/redis/core/DefaultSetOperationsTests.java index 058f4b70a..9725aac64 100644 --- a/src/test/java/org/springframework/data/redis/core/DefaultSetOperationsTests.java +++ b/src/test/java/org/springframework/data/redis/core/DefaultSetOperationsTests.java @@ -38,7 +38,6 @@ import org.junit.runners.Parameterized.Parameters; import org.springframework.data.redis.ObjectFactory; import org.springframework.data.redis.RedisTestProfileValueSource; import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.redis.test.util.MinimumRedisVersionRule; import org.springframework.test.annotation.IfProfileValue; @@ -47,6 +46,7 @@ import org.springframework.test.annotation.IfProfileValue; * * @author Jennifer Hickey * @author Christoph Strobl + * @author Thomas Darimont */ @RunWith(Parameterized.class) public class DefaultSetOperationsTests { @@ -208,8 +208,6 @@ public class DefaultSetOperationsTests { @IfProfileValue(name = "redisVersion", value = "2.8+") public void testSSCanReadsValuesFully() { - // TODO: remove this when upgrading to jedis v.2.4.3 as this guard to avoids key serialization - assumeThat(redisTemplate.getKeySerializer(), instanceOf(StringRedisSerializer.class)); K key = keyFactory.instance(); V v1 = valueFactory.instance(); V v2 = valueFactory.instance();