From 9d691957996c6120b86c264e03c078b032aa2f1c Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Tue, 5 Apr 2011 20:33:18 +0300 Subject: [PATCH] + remove pipeline support for now since none of the drivers support it properly --- .../DefaultStringRedisConnection.java | 2 +- .../redis/connection/RedisConnection.java | 2 +- .../connection/jedis/JedisConnection.java | 4 +- .../connection/jredis/JredisConnection.java | 2 +- .../redis/connection/rjc/RjcConnection.java | 4 +- .../keyvalue/redis/core/RedisOperations.java | 18 ++--- .../keyvalue/redis/core/RedisTemplate.java | 74 +++++++++---------- 7 files changed, 52 insertions(+), 54 deletions(-) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultStringRedisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultStringRedisConnection.java index a3cfd7104..04484b29f 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultStringRedisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultStringRedisConnection.java @@ -1123,7 +1123,7 @@ public class DefaultStringRedisConnection implements StringRedisConnection { } @Override - public List closePipeline() { + public List closePipeline() { return delegate.closePipeline(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java index d61fe1287..6f9f0a2fd 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java @@ -95,5 +95,5 @@ public interface RedisConnection extends RedisCommands { * * @return the result of the executed commands. */ - List closePipeline(); + List closePipeline(); } \ No newline at end of file diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java index 52899ea4d..410f5fef8 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java @@ -187,11 +187,11 @@ public class JedisConnection implements RedisConnection { @SuppressWarnings("unchecked") @Override - public List closePipeline() { + public List closePipeline() { if (pipeline != null) { List execute = pipeline.execute(); if (execute != null && !execute.isEmpty()) { - return (List) execute; + return execute; } } return Collections.emptyList(); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java index d0421cdf6..ada3441e1 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java @@ -115,7 +115,7 @@ public class JredisConnection implements RedisConnection { } @Override - public List closePipeline() { + public List closePipeline() { return Collections.emptyList(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/rjc/RjcConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/rjc/RjcConnection.java index b2683db75..50d5f78f0 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/rjc/RjcConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/rjc/RjcConnection.java @@ -118,11 +118,11 @@ public class RjcConnection implements RedisConnection { @SuppressWarnings("unchecked") @Override - public List closePipeline() { + public List closePipeline() { if (pipeline != null) { List execute = client.getAll(); if (execute != null && !execute.isEmpty()) { - return (List) execute; + return execute; } } return Collections.emptyList(); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java index c57ed1d1c..57e51fd1e 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java @@ -64,15 +64,15 @@ public interface RedisOperations { */ T execute(SessionCallback session); - /** - * Executes the given action object on a pipelined connection, returning the results. Note that the callback cannot - * return a non-null value as it gets overwritten by the pipeline. - * - * @param list element return type - * @param action callback object to execute - * @return list of objects returned by the pipeline - */ - List executePipelined(RedisCallback action); + // /** + // * Executes the given action object on a pipelined connection, returning the results. Note that the callback cannot + // * return a non-null value as it gets overwritten by the pipeline. + // * + // * @param list element return type + // * @param action callback object to execute + // * @return list of objects returned by the pipeline + // */ + // List executePipelined(RedisCallback action); Boolean hasKey(K key); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java index 6bce83673..d3565d996 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java @@ -25,7 +25,6 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import org.springframework.dao.DataAccessException; -import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.keyvalue.redis.connection.DataType; import org.springframework.data.keyvalue.redis.connection.RedisConnection; import org.springframework.data.keyvalue.redis.connection.RedisConnectionFactory; @@ -205,43 +204,42 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } } - @Override - @SuppressWarnings("unchecked") - public List executePipelined(final RedisCallback action) { - return executePipelined(action, valueSerializer); - } - - /** - * Executes the given action object on a pipelined connection, returning the results using a dedicated serializer. - * Note that the callback cannot return a non-null value as it gets overwritten by the pipeline. - * - * @param action callback object to execute - * @param resultSerializer - * @return list of objects returned by the pipeline - */ - public List executePipelined(final RedisCallback action, final RedisSerializer resultSerializer) { - return execute(new RedisCallback>() { - public List doInRedis(RedisConnection connection) throws DataAccessException { - connection.openPipeline(); - boolean pipelinedClosed = false; - try { - Object result = action.doInRedis(connection); - if (result != null) { - throw new InvalidDataAccessApiUsageException( - "Callback cannot returned a non-null value as it gets overwritten by the pipeline"); - } - List pipeline = connection.closePipeline(); - pipelinedClosed = true; - return SerializationUtils.deserialize(pipeline, resultSerializer); - - } finally { - if (!pipelinedClosed) { - connection.closePipeline(); - } - } - } - }); - } + // @SuppressWarnings("unchecked") + // public List executePipelined(final RedisCallback action) { + // return executePipelined(action, valueSerializer); + // } + // + // /** + // * Executes the given action object on a pipelined connection, returning the results using a dedicated serializer. + // * Note that the callback cannot return a non-null value as it gets overwritten by the pipeline. + // * + // * @param action callback object to execute + // * @param resultSerializer + // * @return list of objects returned by the pipeline + // */ + // public List executePipelined(final RedisCallback action, final RedisSerializer resultSerializer) { + // return execute(new RedisCallback>() { + // public List doInRedis(RedisConnection connection) throws DataAccessException { + // connection.openPipeline(); + // boolean pipelinedClosed = false; + // try { + // Object result = action.doInRedis(connection); + // if (result != null) { + // throw new InvalidDataAccessApiUsageException( + // "Callback cannot returned a non-null value as it gets overwritten by the pipeline"); + // } + // List closePipeline = connection.closePipeline(); + // pipelinedClosed = true; + // //return SerializationUtils.deserialize(pipeline, resultSerializer); + // + // } finally { + // if (!pipelinedClosed) { + // connection.closePipeline(); + // } + // } + // } + // }); + // } protected RedisConnection createRedisConnectionProxy(RedisConnection pm) { Class[] ifcs = ClassUtils.getAllInterfacesForClass(pm.getClass(), getClass().getClassLoader());