From c54d96fad0fe77285e47b14c0e7f881e1a6fac29 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 11 Apr 2015 13:30:12 +0300 Subject: [PATCH] rename and renameAsync methods addeded to RObject. #141 --- .../java/org/redisson/RedissonObject.java | 24 ++++++++++++++++--- src/main/java/org/redisson/core/RObject.java | 4 ++++ .../java/org/redisson/RedissonBucketTest.java | 11 +++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/redisson/RedissonObject.java b/src/main/java/org/redisson/RedissonObject.java index c32be6fd1..e57f7d3cf 100644 --- a/src/main/java/org/redisson/RedissonObject.java +++ b/src/main/java/org/redisson/RedissonObject.java @@ -48,6 +48,24 @@ abstract class RedissonObject implements RObject { public String getName() { return name; } + + public boolean rename(String newName) { + return connectionManager.get(renameAsync(newName)); + } + + public Future renameAsync(final String newName) { + return connectionManager.writeAsync(getName(), new AsyncOperation() { + @Override + public void execute(final Promise promise, RedisAsyncConnection async) { + async.rename(getName(), newName).addListener(new OperationListener(promise, async, this) { + @Override + public void onOperationComplete(Future future) throws Exception { + promise.setSuccess("OK".equals(future.get())); + } + }); + } + }); + } public boolean delete() { return connectionManager.get(deleteAsync()); @@ -57,10 +75,10 @@ abstract class RedissonObject implements RObject { return connectionManager.writeAsync(getName(), new AsyncOperation() { @Override public void execute(final Promise promise, RedisAsyncConnection async) { - async.del(getName()).addListener(new OperationListener(promise, async, this) { + async.del(getName()).addListener(new OperationListener(promise, async, this) { @Override - public void onOperationComplete(Future future) throws Exception { - promise.setSuccess(((Number) future.get()).byteValue() == 1); + public void onOperationComplete(Future future) throws Exception { + promise.setSuccess(future.get().byteValue() == 1); } }); } diff --git a/src/main/java/org/redisson/core/RObject.java b/src/main/java/org/redisson/core/RObject.java index 01bd759bc..648809e3d 100644 --- a/src/main/java/org/redisson/core/RObject.java +++ b/src/main/java/org/redisson/core/RObject.java @@ -39,4 +39,8 @@ public interface RObject { Future deleteAsync(); + boolean rename(String newName); + + Future renameAsync(String newName); + } diff --git a/src/test/java/org/redisson/RedissonBucketTest.java b/src/test/java/org/redisson/RedissonBucketTest.java index 603c833e7..e38768525 100755 --- a/src/test/java/org/redisson/RedissonBucketTest.java +++ b/src/test/java/org/redisson/RedissonBucketTest.java @@ -10,6 +10,17 @@ import java.util.List; public class RedissonBucketTest extends BaseTest { + @Test + public void testRename() { + RBucket bucket = redisson.getBucket("test"); + bucket.set("someValue"); + Assert.assertTrue(bucket.rename("test1")); + RBucket oldBucket = redisson.getBucket("test"); + Assert.assertNull(oldBucket.get()); + RBucket newBucket = redisson.getBucket("test1"); + Assert.assertEquals("someValue", newBucket.get()); + } + @Test public void testSetGet() { RBucket bucket = redisson.getBucket("test");