2424import org .apache .commons .pool2 .impl .GenericObjectPoolConfig ;
2525import org .springframework .beans .factory .ObjectProvider ;
2626import org .springframework .boot .autoconfigure .data .redis .*;
27- import org .springframework .boot .ssl .SslBundle ;
28- import org .springframework .boot .ssl .SslBundles ;
29- import org .springframework .boot .ssl .SslOptions ;
3027import org .springframework .data .redis .connection .RedisClusterConfiguration ;
3128import org .springframework .data .redis .connection .RedisSentinelConfiguration ;
3229import org .springframework .data .redis .connection .RedisStandaloneConfiguration ;
@@ -47,26 +44,15 @@ class LettuceMultiSourcesConnectionConfiguration extends RedisMultiSourcesConnec
4744
4845
4946 LettuceMultiSourcesConnectionConfiguration (RedisProperties properties ,
50- ObjectProvider <RedisStandaloneConfiguration > standaloneConfigurationProvider ,
51- ObjectProvider <RedisSentinelConfiguration > sentinelConfigurationProvider ,
52- ObjectProvider <RedisClusterConfiguration > clusterConfigurationProvider ,
53- RedisConnectionDetails connectionDetails , ObjectProvider <SslBundles > sslBundles ) {
54- super (properties , connectionDetails , standaloneConfigurationProvider , sentinelConfigurationProvider ,
55- clusterConfigurationProvider , sslBundles );
47+ ObjectProvider <RedisStandaloneConfiguration > standaloneConfigurationProvider ,
48+ ObjectProvider <RedisSentinelConfiguration > sentinelConfigurationProvider ,
49+ ObjectProvider <RedisClusterConfiguration > clusterConfigurationProvider ) {
50+ super (properties , standaloneConfigurationProvider , sentinelConfigurationProvider , clusterConfigurationProvider );
5651 }
5752
5853
5954
60- LettuceConnectionFactory createConnectionFactory (
61- ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
62- ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
63- ClientResources clientResources ) {
64- LettuceClientConfiguration clientConfig = getLettuceClientConfiguration (clientConfigurationBuilderCustomizers ,
65- clientOptionsBuilderCustomizers , clientResources , getProperties ().getLettuce ().getPool ());
66- return createLettuceConnectionFactory (clientConfig );
67- }
68-
69- private LettuceConnectionFactory createLettuceConnectionFactory (LettuceClientConfiguration clientConfiguration ) {
55+ LettuceConnectionFactory createLettuceConnectionFactory (LettuceClientConfiguration clientConfiguration ) {
7056 if (getSentinelConfig () != null ) {
7157 return new LettuceConnectionFactory (getSentinelConfig (), clientConfiguration );
7258 }
@@ -76,18 +62,17 @@ private LettuceConnectionFactory createLettuceConnectionFactory(LettuceClientCon
7662 return new LettuceConnectionFactory (getStandaloneConfig (), clientConfiguration );
7763 }
7864
79- private LettuceClientConfiguration getLettuceClientConfiguration (
80- ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
81- ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
65+ LettuceClientConfiguration getLettuceClientConfiguration (
66+ ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
8267 ClientResources clientResources , RedisProperties .Pool pool ) {
8368 LettuceClientConfiguration .LettuceClientConfigurationBuilder builder = createBuilder (pool );
8469 applyProperties (builder );
8570 if (StringUtils .hasText (getProperties ().getUrl ())) {
8671 customizeConfigurationFromUrl (builder );
8772 }
88- builder .clientOptions (createClientOptions (clientOptionsBuilderCustomizers ));
73+ builder .clientOptions (createClientOptions ());
8974 builder .clientResources (clientResources );
90- clientConfigurationBuilderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
75+ builderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
9176 return builder .build ();
9277 }
9378
@@ -98,8 +83,9 @@ private LettuceClientConfiguration.LettuceClientConfigurationBuilder createBuild
9883 return LettuceClientConfiguration .builder ();
9984 }
10085
101- private void applyProperties (LettuceClientConfiguration .LettuceClientConfigurationBuilder builder ) {
102- if (isSslEnabled ()) {
86+ private LettuceClientConfiguration .LettuceClientConfigurationBuilder applyProperties (
87+ LettuceClientConfiguration .LettuceClientConfigurationBuilder builder ) {
88+ if (getProperties ().isSsl ()) {
10389 builder .useSsl ();
10490 }
10591 if (getProperties ().getTimeout () != null ) {
@@ -114,32 +100,16 @@ private void applyProperties(LettuceClientConfiguration.LettuceClientConfigurati
114100 if (StringUtils .hasText (getProperties ().getClientName ())) {
115101 builder .clientName (getProperties ().getClientName ());
116102 }
103+ return builder ;
117104 }
118105
119- private ClientOptions createClientOptions (
120- ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientConfigurationBuilderCustomizers ) {
106+ private ClientOptions createClientOptions () {
121107 ClientOptions .Builder builder = initializeClientOptionsBuilder ();
122108 Duration connectTimeout = getProperties ().getConnectTimeout ();
123109 if (connectTimeout != null ) {
124110 builder .socketOptions (SocketOptions .builder ().connectTimeout (connectTimeout ).build ());
125111 }
126- if (isSslEnabled () && getProperties ().getSsl ().getBundle () != null ) {
127- SslBundle sslBundle = getSslBundles ().getBundle (getProperties ().getSsl ().getBundle ());
128- io .lettuce .core .SslOptions .Builder sslOptionsBuilder = io .lettuce .core .SslOptions .builder ();
129- sslOptionsBuilder .keyManager (sslBundle .getManagers ().getKeyManagerFactory ());
130- sslOptionsBuilder .trustManager (sslBundle .getManagers ().getTrustManagerFactory ());
131- SslOptions sslOptions = sslBundle .getOptions ();
132- if (sslOptions .getCiphers () != null ) {
133- sslOptionsBuilder .cipherSuites (sslOptions .getCiphers ());
134- }
135- if (sslOptions .getEnabledProtocols () != null ) {
136- sslOptionsBuilder .protocols (sslOptions .getEnabledProtocols ());
137- }
138- builder .sslOptions (sslOptionsBuilder .build ());
139- }
140- builder .timeoutOptions (TimeoutOptions .enabled ());
141- clientConfigurationBuilderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
142- return builder .build ();
112+ return builder .timeoutOptions (TimeoutOptions .enabled ()).build ();
143113 }
144114
145115 private ClientOptions .Builder initializeClientOptionsBuilder () {
@@ -160,15 +130,16 @@ private ClientOptions.Builder initializeClientOptionsBuilder() {
160130 }
161131
162132 private void customizeConfigurationFromUrl (LettuceClientConfiguration .LettuceClientConfigurationBuilder builder ) {
163- if (urlUsesSsl ()) {
133+ RedisMultiSourcesConnectionConfiguration .ConnectionInfo connectionInfo = parseUrl (getProperties ().getUrl ());
134+ if (connectionInfo .isUseSsl ()) {
164135 builder .useSsl ();
165136 }
166137 }
167138
168139 /**
169140 * Inner class to allow optional commons-pool2 dependency.
170141 */
171- private static final class PoolBuilderFactory {
142+ private static class PoolBuilderFactory {
172143
173144 LettuceClientConfiguration .LettuceClientConfigurationBuilder createBuilder (RedisProperties .Pool properties ) {
174145 return LettucePoolingClientConfiguration .builder ().poolConfig (getPoolConfig (properties ));
0 commit comments