From a1a562c7863153ae29d634d34d6600af6b034ab2 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Wed, 16 Mar 2011 14:49:09 +0200 Subject: [PATCH] update value get/set operations --- .../DefaultStringRedisConnection.java | 6 ++--- .../connection/StringRedisConnection.java | 4 ++-- .../redis/core/BoundValueOperations.java | 4 ++-- .../core/DefaultBoundValueOperations.java | 6 ++--- .../redis/core/DefaultValueOperations.java | 7 +++--- .../keyvalue/redis/core/RedisTemplate.java | 23 +++++++++++++------ .../keyvalue/redis/core/ValueOperations.java | 4 ++-- 7 files changed, 32 insertions(+), 22 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 9db1d2af4..85799bca9 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 @@ -683,7 +683,7 @@ public class DefaultStringRedisConnection implements StringRedisConnection { } @Override - public String getRange(String key, int start, int end) { + public String getRange(String key, long start, long end) { return deserialize(delegate.getRange(serialize(key), start, end)); } @@ -919,8 +919,8 @@ public class DefaultStringRedisConnection implements StringRedisConnection { } @Override - public void setRange(String key, int start, int end) { - delegate.setRange(serialize(key), start, end); + public void setRange(String key, long offset, String value) { + delegate.setRange(serialize(key), offset, serialize(value)); } @Override diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/StringRedisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/StringRedisConnection.java index 7622c3b56..53517c8ea 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/StringRedisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/StringRedisConnection.java @@ -95,9 +95,9 @@ public interface StringRedisConnection extends RedisConnection { Long append(String key, String value); - String getRange(String key, int start, int end); + String getRange(String key, long start, long end); - void setRange(String key, int start, int end); + void setRange(String key, long offset, String value); Boolean getBit(String key, long offset); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java index 6e0450465..18f0fd3a9 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java @@ -40,9 +40,9 @@ public interface BoundValueOperations extends BoundKeyOperations { Integer append(String value); - String get(int start, int end); + String get(long start, long end); - void set(int start, int end); + void set(long offset, V value); Long size(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java index c808847d5..f8691ffec 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java @@ -58,7 +58,7 @@ class DefaultBoundValueOperations extends DefaultBoundKeyOperations imp } @Override - public String get(int start, int end) { + public String get(long start, long end) { return ops.get(getKey(), start, end); } @@ -78,8 +78,8 @@ class DefaultBoundValueOperations extends DefaultBoundKeyOperations imp } @Override - public void set(int start, int end) { - ops.set(getKey(), start, end); + public void set(long offset, V value) { + ops.set(getKey(), offset, null); } @Override diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultValueOperations.java index 37172140a..3d1b6c5f4 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultValueOperations.java @@ -96,7 +96,7 @@ class DefaultValueOperations extends AbstractOperations implements V } @Override - public String get(K key, final int start, final int end) { + public String get(K key, final long start, final long end) { final byte[] rawKey = rawKey(key); byte[] rawReturn = execute(new RedisCallback() { @@ -217,13 +217,14 @@ class DefaultValueOperations extends AbstractOperations implements V @Override - public void set(K key, final int start, final int end) { + public void set(K key, final long offset, V value) { final byte[] rawKey = rawKey(key); + final byte[] rawValue = rawValue(value); execute(new RedisCallback() { @Override public Object doInRedis(RedisConnection connection) { - connection.setRange(rawKey, start, end); + connection.setRange(rawKey, offset, rawValue); return null; } }, true); 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 6358593c5..e91bfc499 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 @@ -223,13 +223,22 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation return execute(new RedisCallback>() { public List doInRedis(RedisConnection connection) throws DataAccessException { connection.openPipeline(); - 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"); + 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(); + } } - List pipeline = connection.closePipeline(); - return SerializationUtils.deserialize(pipeline, resultSerializer); } }); } @@ -377,7 +386,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation * Sets the string value serializer to be used by this template (when the arguments or return types * are always strings). Defaults to {@link StringRedisSerializer}. * - * @see ValueOperations#get(Object, int, int) + * @see ValueOperations#get(Object, long, long) * @param stringSerializer The stringValueSerializer to set. */ public void setStringSerializer(RedisSerializer stringSerializer) { diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java index 3fd581ad0..479bebd5b 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java @@ -47,9 +47,9 @@ public interface ValueOperations { Integer append(K key, String value); - String get(K key, int start, int end); + String get(K key, long start, long end); - void set(K key, int start, int end); + void set(K key, long offset, V value); Long size(K key);