diff --git a/redisson-spring-boot-starter/src/main/java/org/redisson/spring/starter/RedissonAutoConfiguration.java b/redisson-spring-boot-starter/src/main/java/org/redisson/spring/starter/RedissonAutoConfiguration.java index 1ec3a3bf4..c339eded6 100644 --- a/redisson-spring-boot-starter/src/main/java/org/redisson/spring/starter/RedissonAutoConfiguration.java +++ b/redisson-spring-boot-starter/src/main/java/org/redisson/spring/starter/RedissonAutoConfiguration.java @@ -20,6 +20,7 @@ import org.redisson.api.RedissonClient; import org.redisson.api.RedissonReactiveClient; import org.redisson.api.RedissonRxClient; import org.redisson.config.*; +import org.redisson.misc.RedisURI; import org.redisson.spring.data.connection.RedissonConnectionFactory; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; @@ -69,9 +70,6 @@ import java.util.List; @EnableConfigurationProperties({RedissonProperties.class, RedisProperties.class}) public class RedissonAutoConfiguration { - private static final String REDIS_PROTOCOL_PREFIX = "redis://"; - private static final String REDISS_PROTOCOL_PREFIX = "rediss://"; - @Autowired(required = false) private List<RedissonAutoConfigurationCustomizer> redissonAutoConfigurationCustomizers; @@ -358,12 +356,12 @@ public class RedissonAutoConfiguration { } private String getPrefix() { - String prefix = REDIS_PROTOCOL_PREFIX; + String prefix = RedisURI.REDIS_PROTOCOL; Method isSSLMethod = ReflectionUtils.findMethod(RedisProperties.class, "isSsl"); Method getSSLMethod = ReflectionUtils.findMethod(RedisProperties.class, "getSsl"); if (isSSLMethod != null) { if ((Boolean) ReflectionUtils.invokeMethod(isSSLMethod, redisProperties)) { - prefix = REDISS_PROTOCOL_PREFIX; + prefix = RedisURI.REDIS_SSL_PROTOCOL; } } else if (getSSLMethod != null) { Object ss = ReflectionUtils.invokeMethod(getSSLMethod, redisProperties); @@ -371,7 +369,7 @@ public class RedissonAutoConfiguration { Method isEnabledMethod = ReflectionUtils.findMethod(ss.getClass(), "isEnabled"); Boolean enabled = (Boolean) ReflectionUtils.invokeMethod(isEnabledMethod, ss); if (enabled) { - prefix = REDISS_PROTOCOL_PREFIX; + prefix = RedisURI.REDIS_SSL_PROTOCOL; } } } @@ -395,7 +393,7 @@ public class RedissonAutoConfiguration { private String[] convert(String prefix, List<String> nodesObject) { List<String> nodes = new ArrayList<>(nodesObject.size()); for (String node : nodesObject) { - if (!node.startsWith(REDIS_PROTOCOL_PREFIX) && !node.startsWith(REDISS_PROTOCOL_PREFIX)) { + if (!RedisURI.isValid(node)) { nodes.add(prefix + node); } else { nodes.add(node); diff --git a/redisson-spring-data/redisson-spring-data-17/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-17/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-17/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-17/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-18/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-18/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-18/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-18/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index ee08838df..89324ecc2 100644 --- a/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -62,7 +62,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-30/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-30/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index 59cd5798f..b158382fc 100644 --- a/redisson-spring-data/redisson-spring-data-30/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-30/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -63,7 +63,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-31/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-31/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index 59cd5798f..b158382fc 100644 --- a/redisson-spring-data/redisson-spring-data-31/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-31/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -63,7 +63,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> RedisURI address = null; if (!flags.contains(Flag.NOADDR)) { String addr = params[1].split("@")[0]; - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); } String masterId = params[3]; diff --git a/redisson-spring-data/redisson-spring-data-32/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-32/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index 8c3304e06..696917ccd 100644 --- a/redisson-spring-data/redisson-spring-data-32/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-32/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -71,7 +71,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> continue; } - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); address = serviceManager.toURI("redis", address.getHost(), String.valueOf(address.getPort())); } diff --git a/redisson-spring-data/redisson-spring-data-33/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-33/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index 8c3304e06..696917ccd 100644 --- a/redisson-spring-data/redisson-spring-data-33/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-33/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -71,7 +71,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> continue; } - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); address = serviceManager.toURI("redis", address.getHost(), String.valueOf(address.getPort())); } diff --git a/redisson-spring-data/redisson-spring-data-34/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java b/redisson-spring-data/redisson-spring-data-34/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java index 8c3304e06..696917ccd 100644 --- a/redisson-spring-data/redisson-spring-data-34/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java +++ b/redisson-spring-data/redisson-spring-data-34/src/main/java/org/redisson/spring/data/connection/RedisClusterNodeDecoder.java @@ -71,7 +71,7 @@ public class RedisClusterNodeDecoder implements Decoder<List<RedisClusterNode>> continue; } - address = new RedisURI("redis://" + addr); + address = new RedisURI(RedisURI.REDIS_PROTOCOL + addr); address = serviceManager.toURI("redis", address.getHost(), String.valueOf(address.getPort())); } diff --git a/redisson/src/main/java/org/redisson/client/RedisClientConfig.java b/redisson/src/main/java/org/redisson/client/RedisClientConfig.java index 64c01a920..b159a877f 100644 --- a/redisson/src/main/java/org/redisson/client/RedisClientConfig.java +++ b/redisson/src/main/java/org/redisson/client/RedisClientConfig.java @@ -150,7 +150,7 @@ public class RedisClientConfig { } public RedisClientConfig setAddress(String host, int port) { - this.address = new RedisURI("redis://" + host + ":" + port); + this.address = new RedisURI(RedisURI.REDIS_PROTOCOL + host + ":" + port); return this; } public RedisClientConfig setAddress(String address) { diff --git a/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java b/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java index 3c997e18e..c7479b608 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java +++ b/redisson/src/main/java/org/redisson/client/protocol/RedisCommands.java @@ -741,9 +741,9 @@ public interface RedisCommands { Arrays.asList(HSCAN.getName(), SCAN.getName(), ZSCAN.getName(), SSCAN.getName())); RedisStrictCommand<List<ClusterNodeInfo>> CLUSTER_NODES = new RedisStrictCommand<List<ClusterNodeInfo>>("CLUSTER", "NODES", - new ObjectDecoder(new ClusterNodesDecoder(false))); + new ObjectDecoder(new ClusterNodesDecoder(RedisURI.REDIS_PROTOCOL))); RedisStrictCommand<List<ClusterNodeInfo>> CLUSTER_NODES_SSL = new RedisStrictCommand<List<ClusterNodeInfo>>("CLUSTER", "NODES", - new ObjectDecoder(new ClusterNodesDecoder(true))); + new ObjectDecoder(new ClusterNodesDecoder(RedisURI.REDIS_SSL_PROTOCOL))); RedisStrictCommand<Long> TIME_LONG = new RedisStrictCommand<Long>("TIME", new TimeLongObjectDecoder()); RedisStrictCommand<Time> TIME = new RedisStrictCommand<Time>("TIME", new TimeObjectDecoder()); RedisStrictCommand<Map<String, String>> CLUSTER_INFO = new RedisStrictCommand<Map<String, String>>("CLUSTER", "INFO", new StringMapDataDecoder()); diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/ClusterNodesDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/ClusterNodesDecoder.java index c63c35127..2cf84225a 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/ClusterNodesDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/ClusterNodesDecoder.java @@ -34,11 +34,11 @@ import java.util.List; */ public class ClusterNodesDecoder implements Decoder<List<ClusterNodeInfo>> { - private final boolean ssl; + private final String protocol; - public ClusterNodesDecoder(boolean ssl) { + public ClusterNodesDecoder(String protocol) { super(); - this.ssl = ssl; + this.protocol = protocol; } @Override @@ -97,11 +97,6 @@ public class ClusterNodesDecoder implements Decoder<List<ClusterNodeInfo>> { } private String createUri(String[] params) { - String protocol = "redis://"; - if (ssl) { - protocol = "rediss://"; - } - String[] parts = params[1].split(","); String addr = parts[0].split("@")[0]; String name = addr.substring(0, addr.lastIndexOf(":")); diff --git a/redisson/src/main/java/org/redisson/misc/RedisURI.java b/redisson/src/main/java/org/redisson/misc/RedisURI.java index ae31f7c61..acabfc759 100644 --- a/redisson/src/main/java/org/redisson/misc/RedisURI.java +++ b/redisson/src/main/java/org/redisson/misc/RedisURI.java @@ -32,6 +32,9 @@ import java.util.Objects; */ public final class RedisURI { + public static final String REDIS_PROTOCOL= "redis://"; + public static final String REDIS_SSL_PROTOCOL = "rediss://"; + private final boolean ssl; private final String host; private final int port; @@ -39,6 +42,10 @@ public final class RedisURI { private String password; private int hashCode; + public static boolean isValid(String url) { + return url.startsWith(REDIS_PROTOCOL) || url.startsWith(REDIS_SSL_PROTOCOL); + } + public RedisURI(String scheme, String host, int port) { this.ssl = "rediss".equals(scheme); this.host = host; @@ -47,7 +54,7 @@ public final class RedisURI { } public RedisURI(String uri) { - if (!uri.startsWith("redis://") && !uri.startsWith("rediss://")) { + if (!isValid(uri)) { throw new IllegalArgumentException("Redis url should start with redis:// or rediss:// (for SSL connection)"); } diff --git a/redisson/src/test/java/org/redisson/client/protocol/decoder/ClusterNodesDecoderTest.java b/redisson/src/test/java/org/redisson/client/protocol/decoder/ClusterNodesDecoderTest.java index fc5614c42..73ca55cb6 100644 --- a/redisson/src/test/java/org/redisson/client/protocol/decoder/ClusterNodesDecoderTest.java +++ b/redisson/src/test/java/org/redisson/client/protocol/decoder/ClusterNodesDecoderTest.java @@ -9,12 +9,13 @@ import org.redisson.cluster.ClusterNodeInfo; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; +import org.redisson.misc.RedisURI; public class ClusterNodesDecoderTest { @Test public void testIPs() throws IOException { - ClusterNodesDecoder decoder = new ClusterNodesDecoder(false); + ClusterNodesDecoder decoder = new ClusterNodesDecoder(RedisURI.REDIS_PROTOCOL); ByteBuf buf = Unpooled.buffer(); String info = "7af253f8c20a3b3fbd481801bd361ec6643c6f0b 192.168.234.129:7001@17001 master - 0 1478865073260 8 connected 5461-10922\n" + @@ -34,7 +35,7 @@ public class ClusterNodesDecoderTest { @Test public void testHostnames() throws IOException { - ClusterNodesDecoder decoder = new ClusterNodesDecoder(false); + ClusterNodesDecoder decoder = new ClusterNodesDecoder(RedisURI.REDIS_PROTOCOL); ByteBuf buf = Unpooled.buffer(); String info = "7af253f8c20a3b3fbd481801bd361ec6643c6f0b 192.168.234.129:7001@17001,hostname1 master - 0 1478865073260 8 connected 5461-10922\n" +