renamenx and renamenxAsync methods added. #141

pull/100/head
Nikita 10 years ago
parent 893d4e25a9
commit 5fa95d2953

@ -20,6 +20,7 @@ import io.netty.util.concurrent.Promise;
import org.redisson.async.AsyncOperation;
import org.redisson.async.OperationListener;
import org.redisson.async.ResultOperation;
import org.redisson.connection.ConnectionManager;
import org.redisson.core.RObject;
@ -66,6 +67,20 @@ abstract class RedissonObject implements RObject {
}
});
}
public boolean renamenx(String newName) {
return connectionManager.get(renamenxAsync(newName));
}
public Future<Boolean> renamenxAsync(final String newName) {
return connectionManager.writeAsync(getName(), new ResultOperation<Boolean, Object>() {
@Override
public Future<Boolean> execute(RedisAsyncConnection<Object, Object> async) {
return async.renamenx(getName(), newName);
}
});
}
public boolean delete() {
return connectionManager.get(deleteAsync());

@ -39,8 +39,39 @@ public interface RObject {
Future<Boolean> deleteAsync();
/**
* Rename current object key to <code>newName</code>
*
* @param newName
* @return
*/
boolean rename(String newName);
/**
* Rename current object key to <code>newName</code>
* in async mode
*
* @param newName
* @return
*/
Future<Boolean> renameAsync(String newName);
/**
* Rename current object key to <code>newName</code>
* only if new key is not exists
*
* @param newName
* @return
*/
boolean renamenx(String newName);
/**
* Rename current object key to <code>newName</code>
* in async mode only if new key is not exists
*
* @param newName
* @return
*/
Future<Boolean> renamenxAsync(String newName);
}

@ -10,6 +10,20 @@ import java.util.List;
public class RedissonBucketTest extends BaseTest {
@Test
public void testRenamenx() {
RBucket<String> bucket = redisson.getBucket("test");
bucket.set("someValue");
RBucket<String> bucket2 = redisson.getBucket("test2");
bucket2.set("someValue2");
Assert.assertTrue(bucket.renamenx("test1"));
RBucket<String> oldBucket = redisson.getBucket("test");
Assert.assertNull(oldBucket.get());
RBucket<String> newBucket = redisson.getBucket("test1");
Assert.assertEquals("someValue", newBucket.get());
Assert.assertFalse(newBucket.renamenx("test2"));
}
@Test
public void testRename() {
RBucket<String> bucket = redisson.getBucket("test");

Loading…
Cancel
Save