diff --git a/src/main/java/org/springframework/data/redis/connection/FutureResult.java b/src/main/java/org/springframework/data/redis/connection/FutureResult.java index 4f20c00f9..67fc0a29a 100644 --- a/src/main/java/org/springframework/data/redis/connection/FutureResult.java +++ b/src/main/java/org/springframework/data/redis/connection/FutureResult.java @@ -23,13 +23,14 @@ import org.springframework.core.convert.converter.Converter; * @author Jennifer Hickey * * @param - * The data type of the object that holds the future result (usually - * of type Future) + * The data type of the object that holds the future result (usually of type Future) */ abstract public class FutureResult { protected T resultHolder; + protected boolean status = false; + @SuppressWarnings("rawtypes") protected Converter converter; @@ -48,8 +49,7 @@ abstract public class FutureResult { } /** - * Converts the given result if a converter is specified, else returns the - * result + * Converts the given result if a converter is specified, else returns the result * * @param result * The result to convert @@ -68,6 +68,26 @@ abstract public class FutureResult { return converter; } + /** + * Indicates if this result is the status of an operation. Typically status results will be + * discarded on conversion. + * + * @return true if this is a status result (i.e. OK) + */ + public boolean isStatus() { + return status; + } + + /** + * Indicates if this result is the status of an operation. Typically status results will be + * discarded on conversion. + * + * @status true if this is a status result (i.e. OK) + */ + public void setStatus(boolean status) { + this.status = status; + } + /** * @return The result of the operation */ 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 37bab44fb..712a355e5 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 @@ -112,6 +112,7 @@ public class JedisConnection implements RedisConnection { private class JedisStatusResult extends JedisResult { public JedisStatusResult(Response resultHolder) { super(resultHolder); + setStatus(true); } } @@ -296,7 +297,7 @@ public class JedisConnection implements RedisConnection { for(FutureResult> result: pipelinedResults) { try { Object data = result.get(); - if(!convertPipelineResults || !(result instanceof JedisStatusResult)) { + if(!convertPipelineResults || !(result.isStatus())) { results.add(data); } }catch(JedisDataException e) { diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java index c97ba64eb..706f756c2 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java @@ -110,6 +110,7 @@ public class LettuceConnection implements RedisConnection { @SuppressWarnings("rawtypes") public LettuceStatusResult(Future resultHolder) { super(resultHolder); + setStatus(true); } } @@ -295,7 +296,7 @@ public class LettuceConnection implements RedisConnection { } results.add(err); } - else if(!convertPipelineResults || !(result instanceof LettuceStatusResult)) { + else if(!convertPipelineResults || !(result.isStatus())) { results.add(result.get()); } } diff --git a/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java b/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java index f6978975f..850a3f964 100644 --- a/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java @@ -136,7 +136,7 @@ public class SrpConnection implements RedisConnection { Object result = results.get(i); if(result instanceof Exception || !convertResults) { convertedResults.add(result); - }else if(!(future instanceof SrpStatusResult)) { + }else if(!(future.isStatus())) { convertedResults.add(future.convert(result)); } i++; @@ -188,6 +188,7 @@ public class SrpConnection implements RedisConnection { @SuppressWarnings("rawtypes") public SrpStatusResult(ListenableFuture resultHolder) { super(resultHolder); + setStatus(true); } }