Fixed - rename and renamenx methods doesn't change name of current object. #1913

pull/1923/head
Nikita Koksharov 6 years ago
parent 73babb4f27
commit cd01ebcf30

@ -45,7 +45,7 @@ import io.netty.buffer.ByteBuf;
public abstract class RedissonObject implements RObject {
protected final CommandAsyncExecutor commandExecutor;
private final String name;
private String name;
protected final Codec codec;
public RedissonObject(Codec codec, CommandAsyncExecutor commandExecutor, String name) {
@ -132,7 +132,13 @@ public abstract class RedissonObject implements RObject {
@Override
public RFuture<Void> renameAsync(String newName) {
return commandExecutor.writeAsync(getName(), StringCodec.INSTANCE, RedisCommands.RENAME, getName(), newName);
RFuture<Void> f = commandExecutor.writeAsync(getName(), StringCodec.INSTANCE, RedisCommands.RENAME, getName(), newName);
f.onComplete((r, e) -> {
if (e == null) {
this.name = newName;
}
});
return f;
}
@Override
@ -172,7 +178,14 @@ public abstract class RedissonObject implements RObject {
@Override
public RFuture<Boolean> renamenxAsync(String newName) {
return commandExecutor.writeAsync(getName(), StringCodec.INSTANCE, RedisCommands.RENAMENX, getName(), newName);
RFuture<Boolean> f = commandExecutor.writeAsync(getName(), StringCodec.INSTANCE, RedisCommands.RENAMENX, getName(), newName);
f.onComplete((value, e) -> {
if (e == null && value) {
this.name = newName;
}
});
return f;
}
@Override

@ -155,10 +155,11 @@ public class RedissonBucketTest extends BaseTest {
RBucket<String> bucket2 = redisson.getBucket("test2");
bucket2.set("someValue2");
Assert.assertTrue(bucket.renamenx("test1"));
bucket.set("value1");
RBucket<String> oldBucket = redisson.getBucket("test");
Assert.assertNull(oldBucket.get());
RBucket<String> newBucket = redisson.getBucket("test1");
Assert.assertEquals("someValue", newBucket.get());
Assert.assertEquals("value1", newBucket.get());
Assert.assertFalse(newBucket.renamenx("test2"));
}
@ -215,10 +216,11 @@ public class RedissonBucketTest extends BaseTest {
RBucket<String> bucket = redisson.getBucket("test");
bucket.set("someValue");
bucket.rename("test1");
bucket.set("value1");
RBucket<String> oldBucket = redisson.getBucket("test");
Assert.assertNull(oldBucket.get());
RBucket<String> newBucket = redisson.getBucket("test1");
Assert.assertEquals("someValue", newBucket.get());
Assert.assertEquals("value1", newBucket.get());
}
@Test

Loading…
Cancel
Save