refactoring

pull/6329/head
Nikita Koksharov 2 months ago
parent 621ec9425b
commit 01919c7bbc

@ -26,7 +26,6 @@ import org.redisson.client.codec.Codec;
import org.redisson.codec.JsonCodec;
import org.redisson.command.CommandAsyncExecutor;
import org.redisson.config.Config;
import org.redisson.config.ConfigSupport;
import org.redisson.connection.ConnectionManager;
import org.redisson.connection.ServiceManager;
import org.redisson.eviction.EvictionScheduler;
@ -64,7 +63,7 @@ public final class Redisson implements RedissonClient {
this.config = config;
Config configCopy = new Config(config);
connectionManager = ConfigSupport.createConnectionManager(configCopy);
connectionManager = ConnectionManager.create(configCopy);
RedissonObjectBuilder objectBuilder = null;
if (config.isReferenceEnabled()) {
objectBuilder = new RedissonObjectBuilder(this);

@ -150,10 +150,6 @@ public class Config {
if (oldConf.getReplicatedServersConfig() != null) {
setReplicatedServersConfig(new ReplicatedServersConfig(oldConf.getReplicatedServersConfig()));
}
if (oldConf.getConnectionManager() != null) {
useCustomServers(oldConf.getConnectionManager());
}
}
public NettyHook getNettyHook() {
@ -270,29 +266,6 @@ public class Config {
this.replicatedServersConfig = replicatedServersConfig;
}
/**
* Returns the connection manager if supplied via
* {@link #useCustomServers(ConnectionManager)}
*
* @return ConnectionManager
*/
@Deprecated
ConnectionManager getConnectionManager() {
return connectionManager;
}
/**
* This is an extension point to supply custom connection manager.
*
* @see ReplicatedConnectionManager on how to implement a connection
* manager.
* @param connectionManager for supply
*/
@Deprecated
public void useCustomServers(ConnectionManager connectionManager) {
this.connectionManager = connectionManager;
}
/**
* Init single server configuration.
*

@ -32,9 +32,9 @@ import org.redisson.api.RedissonNodeInitializer;
import org.redisson.client.FailedNodeDetector;
import org.redisson.client.NettyHook;
import org.redisson.client.codec.Codec;
import org.redisson.cluster.ClusterConnectionManager;
import org.redisson.codec.ReferenceCodecProvider;
import org.redisson.connection.*;
import org.redisson.connection.AddressResolverGroupFactory;
import org.redisson.connection.ConnectionListener;
import org.redisson.connection.balancer.LoadBalancer;
import javax.net.ssl.KeyManagerFactory;
@ -188,34 +188,25 @@ public class ConfigSupport {
return yamlMapper.writeValueAsString(config);
}
public static ConnectionManager createConnectionManager(Config configCopy) {
ConnectionManager cm = null;
public static BaseConfig<?> getConfig(Config configCopy) {
if (configCopy.getMasterSlaveServersConfig() != null) {
validate(configCopy.getMasterSlaveServersConfig());
cm = new MasterSlaveConnectionManager(configCopy.getMasterSlaveServersConfig(), configCopy);
return configCopy.getMasterSlaveServersConfig();
} else if (configCopy.getSingleServerConfig() != null) {
validate(configCopy.getSingleServerConfig());
cm = new SingleConnectionManager(configCopy.getSingleServerConfig(), configCopy);
return configCopy.getSingleServerConfig();
} else if (configCopy.getSentinelServersConfig() != null) {
validate(configCopy.getSentinelServersConfig());
cm = new SentinelConnectionManager(configCopy.getSentinelServersConfig(), configCopy);
return configCopy.getSentinelServersConfig();
} else if (configCopy.getClusterServersConfig() != null) {
validate(configCopy.getClusterServersConfig());
cm = new ClusterConnectionManager(configCopy.getClusterServersConfig(), configCopy);
return configCopy.getClusterServersConfig();
} else if (configCopy.getReplicatedServersConfig() != null) {
validate(configCopy.getReplicatedServersConfig());
cm = new ReplicatedConnectionManager(configCopy.getReplicatedServersConfig(), configCopy);
} else if (configCopy.getConnectionManager() != null) {
cm = configCopy.getConnectionManager();
return configCopy.getReplicatedServersConfig();
}
if (cm == null) {
throw new IllegalArgumentException("server(s) address(es) not defined!");
}
if (!configCopy.isLazyInitialization()) {
cm.connect();
}
return cm;
throw new IllegalArgumentException("server(s) address(es) not defined!");
}
private static void validate(SingleServerConfig config) {

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.redisson.cluster;
package org.redisson.connection;
import io.netty.buffer.ByteBuf;
import io.netty.util.Timeout;
@ -23,10 +23,11 @@ import org.redisson.client.*;
import org.redisson.client.codec.StringCodec;
import org.redisson.client.protocol.RedisCommands;
import org.redisson.client.protocol.RedisStrictCommand;
import org.redisson.cluster.ClusterNodeInfo;
import org.redisson.cluster.ClusterNodeInfo.Flag;
import org.redisson.cluster.ClusterPartition;
import org.redisson.cluster.ClusterPartition.Type;
import org.redisson.config.*;
import org.redisson.connection.*;
import org.redisson.misc.RedisURI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -66,7 +67,7 @@ public class ClusterConnectionManager extends MasterSlaveConnectionManager {
private ClusterServersConfig cfg;
public ClusterConnectionManager(ClusterServersConfig cfg, Config configCopy) {
ClusterConnectionManager(ClusterServersConfig cfg, Config configCopy) {
super(cfg, configCopy);
this.serviceManager.setNatMapper(cfg.getNatMapper());
}

@ -19,6 +19,7 @@ import io.netty.buffer.ByteBuf;
import org.redisson.api.NodeType;
import org.redisson.client.RedisClient;
import org.redisson.command.CommandAsyncExecutor;
import org.redisson.config.*;
import org.redisson.liveobject.core.RedissonObjectBuilder;
import org.redisson.misc.RedisURI;
import org.redisson.pubsub.PublishSubscribeService;
@ -75,4 +76,28 @@ public interface ConnectionManager {
CommandAsyncExecutor createCommandExecutor(RedissonObjectBuilder objectBuilder,
RedissonObjectBuilder.ReferenceType referenceType);
static ConnectionManager create(Config configCopy) {
BaseConfig<?> cfg = ConfigSupport.getConfig(configCopy);
ConnectionManager cm = null;
if (cfg instanceof MasterSlaveServersConfig) {
cm = new MasterSlaveConnectionManager((MasterSlaveServersConfig) cfg, configCopy);
} else if (cfg instanceof SingleServerConfig) {
cm = new SingleConnectionManager((SingleServerConfig) cfg, configCopy);
} else if (cfg instanceof SentinelServersConfig) {
cm = new SentinelConnectionManager((SentinelServersConfig) cfg, configCopy);
} else if (cfg instanceof ClusterServersConfig) {
cm = new ClusterConnectionManager((ClusterServersConfig) cfg, configCopy);
} else if (cfg instanceof ReplicatedServersConfig) {
cm = new ReplicatedConnectionManager((ReplicatedServersConfig) cfg, configCopy);
}
if (cm == null) {
throw new IllegalArgumentException("server(s) address(es) not defined!");
}
if (!configCopy.isLazyInitialization()) {
cm.connect();
}
return cm;
}
}

@ -64,7 +64,7 @@ public class MasterSlaveConnectionManager implements ConnectionManager {
private boolean lastAttempt;
public MasterSlaveConnectionManager(BaseMasterSlaveServersConfig<?> cfg, Config configCopy) {
MasterSlaveConnectionManager(BaseMasterSlaveServersConfig<?> cfg, Config configCopy) {
if (cfg instanceof MasterSlaveServersConfig) {
this.config = (MasterSlaveServersConfig) cfg;
if (this.config.getSlaveAddresses().isEmpty()

@ -65,7 +65,7 @@ public class ReplicatedConnectionManager extends MasterSlaveConnectionManager {
private ReplicatedServersConfig cfg;
public ReplicatedConnectionManager(ReplicatedServersConfig cfg, Config configCopy) {
ReplicatedConnectionManager(ReplicatedServersConfig cfg, Config configCopy) {
super(cfg, configCopy);
}

@ -60,7 +60,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
private String scheme;
private SentinelServersConfig cfg;
public SentinelConnectionManager(SentinelServersConfig cfg, Config configCopy) {
SentinelConnectionManager(SentinelServersConfig cfg, Config configCopy) {
super(cfg, configCopy);
this.serviceManager.setNatMapper(cfg.getNatMapper());

@ -24,7 +24,7 @@ import org.redisson.config.*;
*/
public class SingleConnectionManager extends MasterSlaveConnectionManager {
public SingleConnectionManager(SingleServerConfig cfg, Config configCopy) {
SingleConnectionManager(SingleServerConfig cfg, Config configCopy) {
super(create(cfg), configCopy);
}

Loading…
Cancel
Save