Live object refactoring and simplifying

pull/605/head
jackygurui 9 years ago
parent 0e6b61ac0f
commit 2476bca078

@ -70,8 +70,6 @@ import org.redisson.config.Config;
import org.redisson.config.ConfigSupport;
import org.redisson.connection.ConnectionManager;
import org.redisson.codec.CodecProvider;
import org.redisson.codec.DefaultCodecProvider;
import org.redisson.liveobject.provider.DefaultResolverProvider;
import org.redisson.liveobject.provider.ResolverProvider;
import org.redisson.pubsub.SemaphorePubSub;
@ -499,11 +497,6 @@ public class Redisson implements RedissonClient {
return new RedissonLiveObjectService(this, liveObjectClassCache, codecProvider, resolverProvider);
}
@Override
public RLiveObjectService getLiveObjectService(CodecProvider codecProvider, ResolverProvider resolverProvider) {
return new RedissonLiveObjectService(this, liveObjectClassCache, codecProvider, resolverProvider);
}
@Override
public void shutdown() {
connectionManager.shutdown();

@ -325,7 +325,7 @@ public class RedissonLiveObjectService implements RLiveObjectService {
.or(ElementMatchers.isSetter()))
.and(ElementMatchers.isPublic()))
.intercept(MethodDelegation.to(
new AccessorInterceptor(redisson, codecProvider, resolverProvider)))
new AccessorInterceptor(redisson)))
.make().load(getClass().getClassLoader(),
ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();

@ -656,15 +656,6 @@ public interface RedissonClient {
*/
RLiveObjectService getLiveObjectService();
/**
* Returns RedissonAttachedLiveObjectService which can be used to
* retrieve live REntity(s)
*
* @param codecProvider the CodecProvider to be used to create the service
* @return
*/
RLiveObjectService getLiveObjectService(CodecProvider codecProvider, ResolverProvider resolverProvider);
/**
* Shutdown Redisson instance but <b>NOT</b> Redis server
*

@ -33,7 +33,6 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentMap;
import org.redisson.RedissonBitSet;
import org.redisson.RedissonBlockingDeque;
import org.redisson.RedissonBlockingQueue;
import org.redisson.RedissonDeque;
@ -56,7 +55,6 @@ import org.redisson.api.annotation.REntity.TransformationMode;
import org.redisson.liveobject.misc.Introspectior;
import org.redisson.liveobject.misc.RedissonObjectFactory;
import org.redisson.codec.CodecProvider;
import org.redisson.liveobject.provider.ResolverProvider;
import org.redisson.liveobject.resolver.NamingScheme;
import io.netty.util.internal.PlatformDependent;
@ -78,14 +76,12 @@ public class AccessorInterceptor {
private final RedissonClient redisson;
private final CodecProvider codecProvider;
private final ResolverProvider resolverProvider;
private final ConcurrentMap<String, NamingScheme> namingSchemeCache = PlatformDependent.newConcurrentHashMap();
private static final LinkedHashMap<Class, Class<? extends RObject>> supportedClassMapping;
public AccessorInterceptor(RedissonClient redisson, CodecProvider codecProvider, ResolverProvider resolverProvider) {
public AccessorInterceptor(RedissonClient redisson) {
this.redisson = redisson;
this.codecProvider = codecProvider;
this.resolverProvider = resolverProvider;
this.codecProvider = redisson.getCodecProvider();
}
static {
@ -116,7 +112,7 @@ public class AccessorInterceptor {
if (isGetter(method, fieldName)) {
Object result = liveMap.get(fieldName);
if (result instanceof RedissonReference) {
return RedissonObjectFactory.fromReference(redisson, codecProvider, resolverProvider, (RedissonReference) result, method.getReturnType());
return RedissonObjectFactory.fromReference(redisson, (RedissonReference) result, method.getReturnType());
// if (BitSet.class.isAssignableFrom(method.getReturnType()) && RBitSet.class.isAssignableFrom(((RedissonReference) result).getType())) {
// return ((RBitSet) rObject).asBitSet();
// }
@ -125,7 +121,7 @@ public class AccessorInterceptor {
}
if (isSetter(method, fieldName)) {
Class idFieldType = me.getClass().getSuperclass().getDeclaredField(fieldName).getType();
if (args[0].getClass().getSuperclass().isAnnotationPresent(REntity.class)) {
if (args[0] instanceof RLiveObject) {
Class<? extends Object> rEntity = args[0].getClass().getSuperclass();
REntity anno = rEntity.getAnnotation(REntity.class);
NamingScheme ns = anno.namingScheme()

@ -67,19 +67,11 @@ public class RedissonObjectFactory {
}
public static <T> T fromReference(RedissonClient redisson, RedissonReference rr, Class<?> expected) throws Exception {
return fromReference(redisson, null, null, rr, expected);
}
public static <T> T fromReference(RedissonClient redisson, CodecProvider codecProvider, ResolverProvider resolverProvider, RedissonReference rr, Class<?> expected) throws Exception {
Class<? extends Object> type = rr.getType();
if (codecProvider == null) {
codecProvider = redisson.getConfig().getCodecProvider();
}
CodecProvider codecProvider = redisson.getConfig().getCodecProvider();
if (type != null) {
if (type.isAnnotationPresent(REntity.class)) {
RLiveObjectService liveObjectService = resolverProvider == null
? redisson.getLiveObjectService()
: redisson.getLiveObjectService(codecProvider, resolverProvider);
RLiveObjectService liveObjectService = redisson.getLiveObjectService();
REntity anno = type.getAnnotation(REntity.class);
NamingScheme ns = anno.namingScheme()
.getDeclaredConstructor(Codec.class)
@ -106,7 +98,7 @@ public class RedissonObjectFactory {
return new RedissonReference(object.getClass(), ((RObject) object).getName(), ((RObject) object).getCodec());
}
try {
if (object.getClass().getSuperclass().isAnnotationPresent(REntity.class)) {
if (object instanceof RLiveObject) {
Class<? extends Object> rEntity = object.getClass().getSuperclass();
REntity anno = rEntity.getAnnotation(REntity.class);
NamingScheme ns = anno.namingScheme()

Loading…
Cancel
Save