Extra interface methods and tests

pull/609/head
jackygurui 9 years ago
parent 0bd337db13
commit cbfb902d8f

@ -17,6 +17,7 @@ package org.redisson;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import org.redisson.api.RLiveObject;
@ -176,6 +177,16 @@ public class RedissonLiveObjectService implements RLiveObjectService {
return (RLiveObject) instance;
}
@Override
public <T> RExpirable asRExpirable(T instance) {
return (RExpirable) instance;
}
@Override
public <T> RMap asRMap(T instance) {
return (RMap) instance;
}
@Override
public <T> boolean isLiveObject(T instance) {
return instance instanceof RLiveObject;

@ -175,6 +175,24 @@ public interface RLiveObjectService {
*/
<T> RLiveObject asLiveObject(T instance);
/**
* To cast the instance to RExpirable instance.
*
* @param <T>
* @param instance
* @return
*/
<T> RExpirable asRExpirable(T instance);
/**
* To cast the instance to RMap instance.
*
* @param <T>
* @param instance
* @return
*/
<T> RMap asRMap(T instance);
/**
* Returns true if the instance is a instance of RLiveObject.
*

@ -34,6 +34,7 @@ import org.redisson.api.RList;
import org.redisson.api.RLiveObject;
import org.redisson.api.RLiveObjectService;
import org.redisson.api.RMap;
import org.redisson.api.RObject;
import org.redisson.api.RQueue;
import org.redisson.api.RSet;
import org.redisson.api.RSortedSet;
@ -933,4 +934,36 @@ public class RedissonLiveObjectServiceTest extends BaseTest {
}
}
@Test
public void testExpirable() throws InterruptedException {
RLiveObjectService service = redisson.getLiveObjectService();
TestClass myObject = service.create(TestClass.class);
myObject.setValue("123345");
assertTrue(service.asLiveObject(myObject).isExists());
service.asRExpirable(myObject).expire(1, TimeUnit.SECONDS);
Thread.sleep(2000);
assertFalse(service.asLiveObject(myObject).isExists());
}
@Test
public void testMap() {
RLiveObjectService service = redisson.getLiveObjectService();
TestClass myObject = service.create(TestClass.class);
myObject.setValue("123345");
assertEquals("123345", service.asRMap(myObject).get("value"));
service.asRMap(myObject).put("value", "9999");
assertEquals("9999", myObject.getValue());
}
@Test
public void testRObject() {
RLiveObjectService service = redisson.getLiveObjectService();
TestClass myObject = service.create(TestClass.class);
try {
((RObject) myObject).isExists();
} catch (Exception e) {
assertEquals("Please use RLiveObjectService instance for this type of functions", e.getMessage());
}
}
}

Loading…
Cancel
Save