From 82050c404af09a481be06a9e3b3f8a75e1228b88 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Tue, 13 Nov 2018 14:11:53 +0300 Subject: [PATCH] Fixed - Spring Boot Starter doesn't convert properly list of sentinel addresses. #1731 --- .../starter/RedissonAutoConfiguration.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) 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 61ac7eed5..a0849eabd 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 @@ -19,6 +19,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.redisson.Redisson; @@ -102,9 +103,9 @@ public class RedissonAutoConfiguration { String[] nodes; if (nodesValue instanceof String) { - nodes = ((String)nodesValue).split(","); + nodes = convert(Arrays.asList(((String)nodesValue).split(","))); } else { - nodes = ((List)nodesValue).toArray(new String[((List)nodesValue).size()]); + nodes = convert((List)nodesValue); } config = new Config(); @@ -119,18 +120,11 @@ public class RedissonAutoConfiguration { Method nodesMethod = ReflectionUtils.findMethod(clusterObject.getClass(), "getNodes"); List nodesObject = (List) ReflectionUtils.invokeMethod(nodesMethod, clusterObject); - List nodes = new ArrayList(); - for (String node : nodesObject) { - if (!node.startsWith("redis://") && !node.startsWith("rediss://")) { - nodes.add("redis://" + node); - } else { - nodes.add(node); - } - } + String[] nodes = convert(nodesObject); config = new Config(); config.useClusterServers() - .addNodeAddress(nodes.toArray(new String[nodes.size()])) + .addNodeAddress(nodes) .setConnectTimeout(timeout) .setPassword(redisProperties.getPassword()); } else { @@ -151,7 +145,19 @@ public class RedissonAutoConfiguration { return Redisson.create(config); } - protected InputStream getConfigStream() throws IOException { + private String[] convert(List nodesObject) { + List nodes = new ArrayList(nodesObject.size()); + for (String node : nodesObject) { + if (!node.startsWith("redis://") && !node.startsWith("rediss://")) { + nodes.add("redis://" + node); + } else { + nodes.add(node); + } + } + return nodes.toArray(new String[nodes.size()]); + } + + private InputStream getConfigStream() throws IOException { Resource resource = ctx.getResource(redissonProperties.getConfig()); InputStream is = resource.getInputStream(); return is; -- GitLab