RSet iteration fixed. #102

pull/68/merge
Nikita 10 years ago
parent 3355310d57
commit 0401d7b811

@ -76,6 +76,7 @@ import com.lambdaworks.redis.output.StringListOutput;
import com.lambdaworks.redis.output.ValueListOutput;
import com.lambdaworks.redis.output.ValueOutput;
import com.lambdaworks.redis.output.ValueSetOutput;
import com.lambdaworks.redis.output.ValueSetScanOutput;
import com.lambdaworks.redis.protocol.Command;
import com.lambdaworks.redis.protocol.CommandArgs;
import com.lambdaworks.redis.protocol.CommandKeyword;
@ -626,7 +627,7 @@ public class RedisAsyncConnection<K, V> extends ChannelInboundHandlerAdapter {
}
public Future<Long> sadd(K key, V... members) {
CommandArgs<K, V> args = new CommandArgs<K, V>(codec).addKey(key).addValues(members);
CommandArgs<K, V> args = new CommandArgs<K, V>(codec).addKey(key).addMapValues(members);
return dispatch(SADD, new IntegerOutput<K, V>(codec), args);
}
@ -1058,7 +1059,7 @@ public class RedisAsyncConnection<K, V> extends ChannelInboundHandlerAdapter {
public Future<ListScanResult<V>> sscan(K key, long startValue) {
CommandArgs<K, V> args = new CommandArgs<K, V>(codec).addKey(key).add(startValue);
return dispatch(SSCAN, new ListScanOutput<K, V>(codec), args);
return dispatch(SSCAN, new ValueSetScanOutput<K, V>(codec), args);
}
public Future<MapScanResult<K, V>> hscan(K key, long startValue) {

@ -0,0 +1,23 @@
package com.lambdaworks.redis.output;
import java.nio.ByteBuffer;
import com.lambdaworks.redis.codec.RedisCodec;
import com.lambdaworks.redis.protocol.CommandOutput;
public class ValueSetScanOutput<K, V> extends CommandOutput<K, V, ListScanResult<V>> {
public ValueSetScanOutput(RedisCodec<K, V> codec) {
super(codec, new ListScanResult<V>());
}
@Override
public void set(ByteBuffer bytes) {
if (output.getPos() == null) {
output.setPos(((Number) codec.decodeMapValue(bytes)).longValue());
} else {
output.addValue(codec.decodeMapValue(bytes));
}
}
}

@ -43,6 +43,24 @@ public class RedissonSetTest extends BaseTest {
Assert.assertEquals(sb.getLng(), set.iterator().next().getLng());
}
@Test
public void testAddLong() throws InterruptedException, ExecutionException {
Long sb = 1l;
RSet<Long> set = redisson.getSet("simple_longs");
set.add(sb);
for (Long l : set) {
Assert.assertEquals(sb.getClass(), l.getClass());
}
Object[] arr = set.toArray();
for (Object o : arr) {
Assert.assertEquals(sb.getClass(), o.getClass());
}
}
@Test
public void testAddAsync() throws InterruptedException, ExecutionException {
RSet<Integer> set = redisson.getSet("simple");

Loading…
Cancel
Save