From 1cf00d2da247fd408e463700ab34916541637886 Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 26 Aug 2016 13:33:07 +0300 Subject: [PATCH] Fixed wrong object encoding during RedissonScoredSortedSet.addScore usage. #594 --- .../org/redisson/RedissonScoredSortedSet.java | 6 +++--- .../client/protocol/RedisCommands.java | 2 +- .../redisson/RedissonScoredSortedSetTest.java | 19 +++++++++---------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonScoredSortedSet.java b/redisson/src/main/java/org/redisson/RedissonScoredSortedSet.java index 227d9bb51..12cf4f771 100644 --- a/redisson/src/main/java/org/redisson/RedissonScoredSortedSet.java +++ b/redisson/src/main/java/org/redisson/RedissonScoredSortedSet.java @@ -30,8 +30,8 @@ import java.util.Map.Entry; import org.redisson.api.RFuture; import org.redisson.api.RScoredSortedSet; import org.redisson.client.codec.Codec; +import org.redisson.client.codec.DoubleCodec; import org.redisson.client.codec.ScoredCodec; -import org.redisson.client.codec.StringCodec; import org.redisson.client.protocol.RedisCommand; import org.redisson.client.protocol.RedisCommand.ValueType; import org.redisson.client.protocol.RedisCommands; @@ -357,8 +357,8 @@ public class RedissonScoredSortedSet extends RedissonExpirable implements RSc @Override public RFuture addScoreAsync(V object, Number value) { - return commandExecutor.writeAsync(getName(), StringCodec.INSTANCE, RedisCommands.ZINCRBY, - getName(), new BigDecimal(value.toString()).toPlainString(), object); + return commandExecutor.writeAsync(getName(), DoubleCodec.INSTANCE, RedisCommands.ZINCRBY, + getName(), new BigDecimal(value.toString()).toPlainString(), encode(object)); } @Override diff --git a/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java b/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java index c9b292c6e..01329dfcc 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java +++ b/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java @@ -113,7 +113,7 @@ public interface RedisCommands { RedisCommand>> ZRANGE_ENTRY = new RedisCommand>>("ZRANGE", new ScoredSortedSetReplayDecoder()); RedisCommand>> ZRANGEBYSCORE_ENTRY = new RedisCommand>>("ZRANGEBYSCORE", new ScoredSortedSetReplayDecoder()); RedisCommand> ZSCAN = new RedisCommand>("ZSCAN", new NestedMultiDecoder(new ScoredSortedSetScanDecoder(), new ScoredSortedSetScanReplayDecoder()), ValueType.OBJECT); - RedisStrictCommand ZINCRBY = new RedisStrictCommand("ZINCRBY", new DoubleReplayConvertor(), 4); + RedisStrictCommand ZINCRBY = new RedisStrictCommand("ZINCRBY", new DoubleReplayConvertor()); RedisCommand> SCAN = new RedisCommand>("SCAN", new NestedMultiDecoder(new ObjectListReplayDecoder(), new ListScanResultReplayDecoder()), ValueType.OBJECT); RedisStrictCommand RANDOM_KEY = new RedisStrictCommand("RANDOMKEY", new StringDataDecoder()); diff --git a/redisson/src/test/java/org/redisson/RedissonScoredSortedSetTest.java b/redisson/src/test/java/org/redisson/RedissonScoredSortedSetTest.java index de17bdf09..22176b6dc 100644 --- a/redisson/src/test/java/org/redisson/RedissonScoredSortedSetTest.java +++ b/redisson/src/test/java/org/redisson/RedissonScoredSortedSetTest.java @@ -20,7 +20,6 @@ import org.redisson.api.RFuture; import org.redisson.api.RLexSortedSet; import org.redisson.api.RScoredSortedSet; import org.redisson.api.RSortedSet; -import org.redisson.client.codec.StringCodec; import org.redisson.client.protocol.ScoredEntry; public class RedissonScoredSortedSetTest extends BaseTest { @@ -735,23 +734,23 @@ public class RedissonScoredSortedSetTest extends BaseTest { Assert.assertEquals("c", a[0].getValue()); Assert.assertEquals("d", a[1].getValue()); } - + @Test public void testAddAndGet() throws InterruptedException { - RScoredSortedSet set = redisson.getScoredSortedSet("simple", StringCodec.INSTANCE); - set.add(1, 100); + RScoredSortedSet set = redisson.getScoredSortedSet("simple"); + set.add(1, "100"); - Double res = set.addScore(100, 11); + Double res = set.addScore("100", 11); Assert.assertEquals(12, (double)res, 0); - Double score = set.getScore(100); + Double score = set.getScore("100"); Assert.assertEquals(12, (double)score, 0); - RScoredSortedSet set2 = redisson.getScoredSortedSet("simple", StringCodec.INSTANCE); - set2.add(100.2, 1); + RScoredSortedSet set2 = redisson.getScoredSortedSet("simple"); + set2.add(100.2, "1"); - Double res2 = set2.addScore(1, new Double(12.1)); + Double res2 = set2.addScore("1", new Double(12.1)); Assert.assertTrue(new Double(112.3).compareTo(res2) == 0); - res2 = set2.getScore(1); + res2 = set2.getScore("1"); Assert.assertTrue(new Double(112.3).compareTo(res2) == 0); }