diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePool.java b/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePool.java index 9939195b8f..be52945a96 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePool.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePool.java @@ -120,26 +120,18 @@ public void afterPropertiesSet() { */ private RedisURI getRedisURI() { - if (isRedisSentinelAware()) { - RedisURI redisURI = LettuceConverters.sentinelConfigurationToRedisURI(sentinelConfiguration); + RedisURI redisUri = isRedisSentinelAware() + ? LettuceConverters.sentinelConfigurationToRedisURI(sentinelConfiguration) : createSimpleHostRedisURI(); - if (StringUtils.hasText(password)) { - redisURI.setPassword(password); - } - - return redisURI; + if (StringUtils.hasText(password)) { + redisUri.setPassword(password); } - return createSimpleHostRedisURI(); + return redisUri; } private RedisURI createSimpleHostRedisURI() { - RedisURI.Builder builder = RedisURI.Builder.redis(hostName, port); - if (password != null) { - builder.withPassword(password); - } - builder.withTimeout(timeout, TimeUnit.MILLISECONDS); - return builder.build(); + return RedisURI.Builder.redis(hostName, port).withTimeout(timeout, TimeUnit.MILLISECONDS).build(); } @SuppressWarnings("unchecked") diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java index f403508b5a..1e8e305816 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java @@ -68,6 +68,7 @@ * @author Costin Leau * @author Jennifer Hickey * @author Thomas Darimont + * @author Christoph Strobl * @author Mark Paluch * @author Balázs Németh */ @@ -608,13 +609,13 @@ private AbstractRedisClient createRedisClient() { private RedisURI getSentinelRedisURI() { - RedisURI redisURI = LettuceConverters.sentinelConfigurationToRedisURI(sentinelConfiguration); + RedisURI redisUri = LettuceConverters.sentinelConfigurationToRedisURI(sentinelConfiguration); if (StringUtils.hasText(password)) { - redisURI.setPassword(password); + redisUri.setPassword(password); } - return redisURI; + return redisUri; } /** @@ -634,6 +635,7 @@ public boolean isClusterAware() { @Override public RedisSentinelConnection getSentinelConnection() { + if (!(client instanceof RedisClient)) { throw new InvalidDataAccessResourceUsageException("Unable to connect to sentinels using " + client.getClass()); } diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePoolTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePoolTests.java index 4eb1d32d13..dc76348ff8 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePoolTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/DefaultLettucePoolTests.java @@ -27,7 +27,6 @@ import org.junit.Ignore; import org.junit.Test; import org.springframework.data.redis.SettingsUtils; -import org.springframework.data.redis.connection.PoolConfig; import org.springframework.data.redis.connection.PoolException; import org.springframework.data.redis.connection.RedisSentinelConfiguration; @@ -49,20 +48,22 @@ public class DefaultLettucePoolTests { @After public void tearDown() { - if (this.pool != null) { - if (this.pool.getClient() != null) { - this.pool.getClient().shutdown(0, 0, TimeUnit.MILLISECONDS); + if (pool != null) { + + if (pool.getClient() != null) { + pool.getClient().shutdown(0, 0, TimeUnit.MILLISECONDS); } - this.pool.destroy(); + pool.destroy(); } } @Test public void testGetResource() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.afterPropertiesSet(); RedisAsyncConnection client = pool.getResource(); assertNotNull(client); @@ -72,11 +73,12 @@ public void testGetResource() { @Test public void testGetResourcePoolExhausted() { + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(1); poolConfig.setMaxWaitMillis(1); - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.afterPropertiesSet(); RedisAsyncConnection client = pool.getResource(); assertNotNull(client); @@ -90,10 +92,11 @@ public void testGetResourcePoolExhausted() { @Test public void testGetResourceValidate() { - PoolConfig poolConfig = new PoolConfig(); + + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setTestOnBorrow(true); - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.afterPropertiesSet(); RedisAsyncConnection client = pool.getResource(); assertNotNull(client); @@ -102,19 +105,21 @@ public void testGetResourceValidate() { @Test(expected = PoolException.class) public void testGetResourceCreationUnsuccessful() throws Exception { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), 3333); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), 3333); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.afterPropertiesSet(); pool.getResource(); } @Test public void testReturnResource() { + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(1); poolConfig.setMaxWaitMillis(1); - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.afterPropertiesSet(); RedisAsyncConnection client = pool.getResource(); assertNotNull(client); @@ -125,11 +130,12 @@ public void testReturnResource() { @Test public void testReturnBrokenResource() { + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(1); poolConfig.setMaxWaitMillis(1); - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort(), poolConfig); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.afterPropertiesSet(); RedisAsyncConnection client = pool.getResource(); assertNotNull(client); @@ -147,8 +153,9 @@ public void testReturnBrokenResource() { @Test public void testCreateWithDbIndex() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.setDatabase(1); pool.afterPropertiesSet(); assertNotNull(pool.getResource()); @@ -156,8 +163,9 @@ public void testCreateWithDbIndex() { @Test(expected = PoolException.class) public void testCreateWithDbIndexInvalid() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.setDatabase(17); pool.afterPropertiesSet(); pool.getResource(); @@ -165,8 +173,9 @@ public void testCreateWithDbIndexInvalid() { @Test(expected = PoolException.class) public void testCreateWithPasswordNoPassword() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.setPassword("notthepassword"); pool.afterPropertiesSet(); pool.getResource(); @@ -175,8 +184,9 @@ public void testCreateWithPasswordNoPassword() { @Ignore("Redis must have requirepass set to run this test") @Test public void testCreatePassword() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.setPassword("foo"); pool.afterPropertiesSet(); RedisAsyncConnection conn = pool.getResource(); @@ -187,8 +197,9 @@ public void testCreatePassword() { @Ignore("Redis must have requirepass set to run this test") @Test(expected = PoolException.class) public void testCreateInvalidPassword() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); - this.pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); + + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool.setClientResources(LettuceTestClientResources.getSharedClientResources()); pool.setPassword("bad"); pool.afterPropertiesSet(); pool.getResource(); @@ -205,9 +216,9 @@ public void testCreateSentinelWithPassword() { pool.setPassword("foo"); pool.afterPropertiesSet(); - RedisURI redisURI = (RedisURI) getField(pool.getClient(), "redisURI"); + RedisURI redisUri = (RedisURI) getField(pool.getClient(), "redisURI"); - assertThat(redisURI.getPassword(), is(equalTo(pool.getPassword().toCharArray()))); + assertThat(redisUri.getPassword(), is(equalTo(pool.getPassword().toCharArray()))); } /** @@ -216,7 +227,7 @@ public void testCreateSentinelWithPassword() { @Test public void poolWorksWithoutClientResources() { - this.pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); + pool = new DefaultLettucePool(SettingsUtils.getHost(), SettingsUtils.getPort()); pool.setDatabase(1); pool.afterPropertiesSet(); assertNotNull(pool.getResource()); diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java index f6856c7401..da2e5e4e42 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java @@ -133,9 +133,9 @@ public void passwordShouldBeSetCorrectlyOnSentinelClient() { AbstractRedisClient client = (AbstractRedisClient) getField(connectionFactory, "client"); assertThat(client, instanceOf(RedisClient.class)); - RedisURI redisURI = (RedisURI) getField(client, "redisURI"); + RedisURI redisUri = (RedisURI) getField(client, "redisURI"); - assertThat(redisURI.getPassword(), is(equalTo(connectionFactory.getPassword().toCharArray()))); + assertThat(redisUri.getPassword(), is(equalTo(connectionFactory.getPassword().toCharArray()))); } /**