Skip to content

Commit

Permalink
ResolverProvider removed. #1187
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikita committed Dec 12, 2017
1 parent e7bc790 commit ecd7880
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 160 deletions.
10 changes: 1 addition & 9 deletions redisson/src/main/java/org/redisson/Redisson.java
Expand Up @@ -76,7 +76,6 @@
import org.redisson.config.ConfigSupport; import org.redisson.config.ConfigSupport;
import org.redisson.connection.ConnectionManager; import org.redisson.connection.ConnectionManager;
import org.redisson.eviction.EvictionScheduler; import org.redisson.eviction.EvictionScheduler;
import org.redisson.liveobject.provider.ResolverProvider;
import org.redisson.misc.RedissonObjectFactory; import org.redisson.misc.RedissonObjectFactory;
import org.redisson.pubsub.SemaphorePubSub; import org.redisson.pubsub.SemaphorePubSub;
import org.redisson.remote.ResponseEntry; import org.redisson.remote.ResponseEntry;
Expand All @@ -103,7 +102,6 @@ public class Redisson implements RedissonClient {


protected final ConcurrentMap<Class<?>, Class<?>> liveObjectClassCache = PlatformDependent.newConcurrentHashMap(); protected final ConcurrentMap<Class<?>, Class<?>> liveObjectClassCache = PlatformDependent.newConcurrentHashMap();
protected final ReferenceCodecProvider codecProvider; protected final ReferenceCodecProvider codecProvider;
protected final ResolverProvider resolverProvider;
protected final Config config; protected final Config config;
protected final SemaphorePubSub semaphorePubSub = new SemaphorePubSub(); protected final SemaphorePubSub semaphorePubSub = new SemaphorePubSub();


Expand All @@ -117,7 +115,6 @@ protected Redisson(Config config) {
connectionManager = ConfigSupport.createConnectionManager(configCopy); connectionManager = ConfigSupport.createConnectionManager(configCopy);
evictionScheduler = new EvictionScheduler(connectionManager.getCommandExecutor()); evictionScheduler = new EvictionScheduler(connectionManager.getCommandExecutor());
codecProvider = configCopy.getReferenceCodecProvider(); codecProvider = configCopy.getReferenceCodecProvider();
resolverProvider = configCopy.getResolverProvider();
} }


public EvictionScheduler getEvictionScheduler() { public EvictionScheduler getEvictionScheduler() {
Expand Down Expand Up @@ -574,7 +571,7 @@ public RBatch createBatch() {


@Override @Override
public RLiveObjectService getLiveObjectService() { public RLiveObjectService getLiveObjectService() {
return new RedissonLiveObjectService(this, liveObjectClassCache, codecProvider, resolverProvider); return new RedissonLiveObjectService(this, liveObjectClassCache, codecProvider);
} }


@Override @Override
Expand All @@ -598,11 +595,6 @@ public ReferenceCodecProvider getCodecProvider() {
return codecProvider; return codecProvider;
} }


@Override
public ResolverProvider getResolverProvider() {
return resolverProvider;
}

@Override @Override
public NodesGroup<Node> getNodesGroup() { public NodesGroup<Node> getNodesGroup() {
return new RedisNodes<Node>(connectionManager); return new RedisNodes<Node>(connectionManager);
Expand Down
22 changes: 16 additions & 6 deletions redisson/src/main/java/org/redisson/RedissonLiveObjectService.java
Expand Up @@ -15,6 +15,7 @@
*/ */
package org.redisson; package org.redisson;


import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
Expand Down Expand Up @@ -65,9 +66,9 @@
import org.redisson.liveobject.misc.AdvBeanCopy; import org.redisson.liveobject.misc.AdvBeanCopy;
import org.redisson.liveobject.misc.ClassUtils; import org.redisson.liveobject.misc.ClassUtils;
import org.redisson.liveobject.misc.Introspectior; import org.redisson.liveobject.misc.Introspectior;
import org.redisson.liveobject.provider.ResolverProvider;
import org.redisson.liveobject.resolver.Resolver; import org.redisson.liveobject.resolver.Resolver;


import io.netty.util.internal.PlatformDependent;
import jodd.bean.BeanCopy; import jodd.bean.BeanCopy;
import jodd.bean.BeanUtil; import jodd.bean.BeanUtil;
import net.bytebuddy.ByteBuddy; import net.bytebuddy.ByteBuddy;
Expand All @@ -81,17 +82,16 @@


public class RedissonLiveObjectService implements RLiveObjectService { public class RedissonLiveObjectService implements RLiveObjectService {


private static final ConcurrentMap<Class<? extends Resolver>, Resolver<?, ?, ?>> providerCache = PlatformDependent.newConcurrentHashMap();
private final ConcurrentMap<Class<?>, Class<?>> classCache; private final ConcurrentMap<Class<?>, Class<?>> classCache;
private final RedissonClient redisson; private final RedissonClient redisson;
private final ReferenceCodecProvider codecProvider; private final ReferenceCodecProvider codecProvider;
private final ResolverProvider resolverProvider;
private final RedissonObjectBuilder objectBuilder; private final RedissonObjectBuilder objectBuilder;


public RedissonLiveObjectService(RedissonClient redisson, ConcurrentMap<Class<?>, Class<?>> classCache, ReferenceCodecProvider codecProvider, ResolverProvider resolverProvider) { public RedissonLiveObjectService(RedissonClient redisson, ConcurrentMap<Class<?>, Class<?>> classCache, ReferenceCodecProvider codecProvider) {
this.redisson = redisson; this.redisson = redisson;
this.classCache = classCache; this.classCache = classCache;
this.codecProvider = codecProvider; this.codecProvider = codecProvider;
this.resolverProvider = resolverProvider;
this.objectBuilder = new RedissonObjectBuilder(redisson, codecProvider); this.objectBuilder = new RedissonObjectBuilder(redisson, codecProvider);
} }


Expand All @@ -114,11 +114,21 @@ private <T> Object generateId(Class<T> entityClass) throws NoSuchFieldException
String idFieldName = getRIdFieldName(entityClass); String idFieldName = getRIdFieldName(entityClass);
RId annotation = ClassUtils.getDeclaredField(entityClass, idFieldName) RId annotation = ClassUtils.getDeclaredField(entityClass, idFieldName)
.getAnnotation(RId.class); .getAnnotation(RId.class);
Resolver resolver = resolverProvider.getResolver(entityClass, Resolver resolver = getResolver(entityClass, annotation.generator(), annotation);
annotation.generator(), annotation);
Object id = resolver.resolve(entityClass, annotation, idFieldName, redisson); Object id = resolver.resolve(entityClass, annotation, idFieldName, redisson);
return id; return id;
} }

private Resolver<?, ?, ?> getResolver(Class<?> cls, Class<? extends Resolver> resolverClass, Annotation anno) {
if (!providerCache.containsKey(resolverClass)) {
try {
providerCache.putIfAbsent(resolverClass, resolverClass.newInstance());
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
return providerCache.get(resolverClass);
}


@Override @Override
public <T, K> T get(Class<T> entityClass, K id) { public <T, K> T get(Class<T> entityClass, K id) {
Expand Down
9 changes: 0 additions & 9 deletions redisson/src/main/java/org/redisson/api/RedissonClient.java
Expand Up @@ -20,7 +20,6 @@
import org.redisson.client.codec.Codec; import org.redisson.client.codec.Codec;
import org.redisson.codec.ReferenceCodecProvider; import org.redisson.codec.ReferenceCodecProvider;
import org.redisson.config.Config; import org.redisson.config.Config;
import org.redisson.liveobject.provider.ResolverProvider;


/** /**
* Main Redisson interface for access * Main Redisson interface for access
Expand Down Expand Up @@ -904,14 +903,6 @@ public interface RedissonClient {
*/ */
public ReferenceCodecProvider getCodecProvider(); public ReferenceCodecProvider getCodecProvider();


/**
* Returns the ResolverProvider instance
*
* @return ResolverProvider object
*/
public ResolverProvider getResolverProvider();


/** /**
* Get Redis nodes group for server operations * Get Redis nodes group for server operations
* *
Expand Down
30 changes: 1 addition & 29 deletions redisson/src/main/java/org/redisson/config/Config.java
Expand Up @@ -23,13 +23,11 @@
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;


import org.redisson.client.codec.Codec; import org.redisson.client.codec.Codec;
import org.redisson.codec.ReferenceCodecProvider;
import org.redisson.codec.DefaultReferenceCodecProvider; import org.redisson.codec.DefaultReferenceCodecProvider;
import org.redisson.codec.JsonJacksonCodec; import org.redisson.codec.JsonJacksonCodec;
import org.redisson.codec.ReferenceCodecProvider;
import org.redisson.connection.ConnectionManager; import org.redisson.connection.ConnectionManager;
import org.redisson.connection.ReplicatedConnectionManager; import org.redisson.connection.ReplicatedConnectionManager;
import org.redisson.liveobject.provider.DefaultResolverProvider;
import org.redisson.liveobject.provider.ResolverProvider;


import io.netty.channel.EventLoopGroup; import io.netty.channel.EventLoopGroup;


Expand Down Expand Up @@ -72,11 +70,6 @@ public class Config {
*/ */
private ReferenceCodecProvider referenceCodecProvider = new DefaultReferenceCodecProvider(); private ReferenceCodecProvider referenceCodecProvider = new DefaultReferenceCodecProvider();


/**
* For resolver registry and look up. DefaultResolverProvider used by default
*/
private ResolverProvider resolverProvider = new DefaultResolverProvider();

private ExecutorService executor; private ExecutorService executor;


/** /**
Expand Down Expand Up @@ -111,7 +104,6 @@ public Config(Config oldConf) {
setThreads(oldConf.getThreads()); setThreads(oldConf.getThreads());
setCodec(oldConf.getCodec()); setCodec(oldConf.getCodec());
setReferenceCodecProvider(oldConf.getReferenceCodecProvider()); setReferenceCodecProvider(oldConf.getReferenceCodecProvider());
setResolverProvider(oldConf.getResolverProvider());
setReferenceEnabled(oldConf.isReferenceEnabled()); setReferenceEnabled(oldConf.isReferenceEnabled());
setEventLoopGroup(oldConf.getEventLoopGroup()); setEventLoopGroup(oldConf.getEventLoopGroup());
if (oldConf.getSingleServerConfig() != null) { if (oldConf.getSingleServerConfig() != null) {
Expand Down Expand Up @@ -177,26 +169,6 @@ public ReferenceCodecProvider getReferenceCodecProvider() {
return referenceCodecProvider; return referenceCodecProvider;
} }


/**
* For resolver registry and look up. DefaultResolverProvider used by default.
*
* @param resolverProvider object
* @return this
*/
public Config setResolverProvider(ResolverProvider resolverProvider) {
this.resolverProvider = resolverProvider;
return this;
}

/**
* Returns the ResolverProvider instance
*
* @return resolverProvider
*/
public ResolverProvider getResolverProvider() {
return resolverProvider;
}

/** /**
* Config option indicate whether Redisson Reference feature is enabled. * Config option indicate whether Redisson Reference feature is enabled.
* <p> * <p>
Expand Down
2 changes: 0 additions & 2 deletions redisson/src/main/java/org/redisson/config/ConfigSupport.java
Expand Up @@ -37,7 +37,6 @@
import org.redisson.connection.SentinelConnectionManager; import org.redisson.connection.SentinelConnectionManager;
import org.redisson.connection.SingleConnectionManager; import org.redisson.connection.SingleConnectionManager;
import org.redisson.connection.balancer.LoadBalancer; import org.redisson.connection.balancer.LoadBalancer;
import org.redisson.liveobject.provider.ResolverProvider;


import com.fasterxml.jackson.annotation.JsonFilter; import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
Expand Down Expand Up @@ -272,7 +271,6 @@ private ObjectMapper createMapper(JsonFactory mapping, ClassLoader classLoader)
mapper.addMixIn(SingleServerConfig.class, SingleSeverConfigMixIn.class); mapper.addMixIn(SingleServerConfig.class, SingleSeverConfigMixIn.class);
mapper.addMixIn(Config.class, ConfigMixIn.class); mapper.addMixIn(Config.class, ConfigMixIn.class);
mapper.addMixIn(ReferenceCodecProvider.class, ClassMixIn.class); mapper.addMixIn(ReferenceCodecProvider.class, ClassMixIn.class);
mapper.addMixIn(ResolverProvider.class, ClassMixIn.class);
mapper.addMixIn(Codec.class, ClassMixIn.class); mapper.addMixIn(Codec.class, ClassMixIn.class);
mapper.addMixIn(RedissonNodeInitializer.class, ClassMixIn.class); mapper.addMixIn(RedissonNodeInitializer.class, ClassMixIn.class);
mapper.addMixIn(LoadBalancer.class, ClassMixIn.class); mapper.addMixIn(LoadBalancer.class, ClassMixIn.class);
Expand Down

This file was deleted.

This file was deleted.

@@ -1,25 +1,31 @@
package org.redisson.spring.support; package org.redisson.spring.support;


import io.netty.channel.EventLoopGroup; import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;

import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import static org.hamcrest.Matchers.*;
import org.junit.Test; import org.junit.Test;
import org.redisson.ClusterRunner; import org.redisson.ClusterRunner;
import org.redisson.RedisRunner; import org.redisson.RedisRunner;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import static org.junit.Assert.*;
import org.redisson.client.RedisClient; import org.redisson.client.RedisClient;
import org.redisson.client.RedisConnection; import org.redisson.client.RedisConnection;
import org.redisson.client.codec.Codec; import org.redisson.client.codec.Codec;
import org.redisson.client.protocol.RedisCommands; import org.redisson.client.protocol.RedisCommands;
import org.redisson.codec.ReferenceCodecProvider; import org.redisson.codec.ReferenceCodecProvider;
import org.redisson.config.Config;
import org.redisson.config.SingleServerConfig; import org.redisson.config.SingleServerConfig;
import org.redisson.liveobject.provider.ResolverProvider; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import io.netty.channel.EventLoopGroup;


/** /**
* *
Expand Down Expand Up @@ -118,7 +124,6 @@ public void testSingleWithPlaceholder() throws Exception {
assertEquals(false, config.isUseLinuxNativeEpoll()); assertEquals(false, config.isUseLinuxNativeEpoll());
assertEquals(false, config.isReferenceEnabled()); assertEquals(false, config.isReferenceEnabled());
assertSame(context.getBean("myCodecProvider", ReferenceCodecProvider.class), config.getReferenceCodecProvider()); assertSame(context.getBean("myCodecProvider", ReferenceCodecProvider.class), config.getReferenceCodecProvider());
assertSame(context.getBean("myResolverProvider", ResolverProvider.class), config.getResolverProvider());
assertSame(context.getBean("myExecutor", Executor.class), config.getExecutor()); assertSame(context.getBean("myExecutor", Executor.class), config.getExecutor());
assertSame(context.getBean("myEventLoopGroup", EventLoopGroup.class), config.getEventLoopGroup()); assertSame(context.getBean("myEventLoopGroup", EventLoopGroup.class), config.getEventLoopGroup());
Method method = Config.class.getDeclaredMethod("getSingleServerConfig", (Class<?>[]) null); Method method = Config.class.getDeclaredMethod("getSingleServerConfig", (Class<?>[]) null);
Expand Down

0 comments on commit ecd7880

Please sign in to comment.