Skip to content

Commit 26593a3

Browse files
committed
Modify config pattern
1 parent 264019b commit 26593a3

12 files changed

+159
-60
lines changed

src/main/java/redis/clients/jedis/BinaryJedis.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -150,27 +150,27 @@ public BinaryJedis(final String host, final int port, final int timeout, final b
150150
public BinaryJedis(final String host, final int port, final int connectionTimeout,
151151
final int soTimeout) {
152152
this(host, port, DefaultJedisClientConfig.builder()
153-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).build());
153+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).build());
154154
}
155155

156156
public BinaryJedis(final String host, final int port, final int connectionTimeout,
157157
final int soTimeout, final int infiniteSoTimeout) {
158158
this(host, port, DefaultJedisClientConfig.builder()
159-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
160-
.withInfiniteSoTimeout(infiniteSoTimeout).build());
159+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
160+
.withInfiniteSoTimeoutMillis(infiniteSoTimeout).build());
161161
}
162162

163163
public BinaryJedis(final String host, final int port, final int connectionTimeout,
164164
final int soTimeout, final boolean ssl) {
165165
this(host, port, DefaultJedisClientConfig.builder()
166-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).withSsl(ssl).build());
166+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).withSsl(ssl).build());
167167
}
168168

169169
public BinaryJedis(final String host, final int port, final int connectionTimeout,
170170
final int soTimeout, final boolean ssl, final SSLSocketFactory sslSocketFactory,
171171
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
172172
this(host, port, DefaultJedisClientConfig.builder()
173-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).withSsl(ssl)
173+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).withSsl(ssl)
174174
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
175175
.withHostnameVerifier(hostnameVerifier).build());
176176
}
@@ -180,15 +180,15 @@ public BinaryJedis(final String host, final int port, final int connectionTimeou
180180
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
181181
final HostnameVerifier hostnameVerifier) {
182182
this(host, port, DefaultJedisClientConfig.builder()
183-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
184-
.withInfiniteSoTimeout(infiniteSoTimeout).withSsl(ssl)
183+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
184+
.withInfiniteSoTimeoutMillis(infiniteSoTimeout).withSsl(ssl)
185185
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
186186
.withHostnameVerifier(hostnameVerifier).build());
187187
}
188188

189189
public BinaryJedis(final JedisShardInfo shardInfo) {
190190
this(shardInfo.getHost(), shardInfo.getPort(), DefaultJedisClientConfig.builder()
191-
.withConnectionTimeout(shardInfo.getConnectionTimeout()).withSoTimeout(shardInfo.getSoTimeout())
191+
.withConnectionTimeoutMillis(shardInfo.getConnectionTimeout()).withSoTimeoutMillis(shardInfo.getSoTimeout())
192192
.withUser(shardInfo.getUser()).withPassword(shardInfo.getPassword()).withDatabse(shardInfo.getDb())
193193
.withSsl(shardInfo.getSsl()).withSslSocketFactory(shardInfo.getSslSocketFactory())
194194
.withSslParameters(shardInfo.getSslParameters()).withHostnameVerifier(shardInfo.getHostnameVerifier()).build());
@@ -217,14 +217,14 @@ public BinaryJedis(final URI uri, final int timeout, final SSLSocketFactory sslS
217217

218218
public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout) {
219219
this(uri, DefaultJedisClientConfig.builder()
220-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).build());
220+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout).build());
221221
}
222222

223223
public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout,
224224
final SSLSocketFactory sslSocketFactory,final SSLParameters sslParameters,
225225
final HostnameVerifier hostnameVerifier) {
226226
this(uri, DefaultJedisClientConfig.builder()
227-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
227+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
228228
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
229229
.withHostnameVerifier(hostnameVerifier).build());
230230
}
@@ -233,8 +233,8 @@ public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeo
233233
final int infiniteSoTimeout, final SSLSocketFactory sslSocketFactory,
234234
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
235235
this(uri, DefaultJedisClientConfig.builder()
236-
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
237-
.withInfiniteSoTimeout(infiniteSoTimeout).withSslSocketFactory(sslSocketFactory)
236+
.withConnectionTimeoutMillis(connectionTimeout).withSoTimeoutMillis(soTimeout)
237+
.withInfiniteSoTimeoutMillis(infiniteSoTimeout).withSslSocketFactory(sslSocketFactory)
238238
.withSslParameters(sslParameters).withHostnameVerifier(hostnameVerifier).build());
239239
}
240240

@@ -243,8 +243,8 @@ public BinaryJedis(final URI uri, JedisClientConfig config) {
243243
throw new InvalidURIException(String.format("Cannot open Redis connection due invalid URI \"%s\".", uri.toString()));
244244
}
245245
client = new Client(new HostAndPort(uri.getHost(), uri.getPort()),
246-
DefaultJedisClientConfig.builder().withConnectionTimeout(config.getConnectionTimeout())
247-
.withSoTimeout(config.getSoTimeout()).withInfiniteSoTimeout(config.getInfiniteSoTimeout())
246+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(config.getConnectionTimeoutMillis())
247+
.withSoTimeoutMillis(config.getSoTimeoutMillis()).withInfiniteSoTimeoutMillis(config.getInfiniteSoTimeoutMillis())
248248
.withUser(JedisURIHelper.getUser(uri)).withPassword(JedisURIHelper.getPassword(uri))
249249
.withDatabse(JedisURIHelper.getDBIndex(uri)).withClientName(config.getClientName())
250250
.withSsl(JedisURIHelper.isRedisSSLScheme(uri))

src/main/java/redis/clients/jedis/Connection.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class Connection implements Closeable {
2424
private static final byte[][] EMPTY_ARGS = new byte[0][];
2525

2626
private boolean socketParamModified = false; // for backward compatibility
27-
private JedisSocketFactory socketFactory; // TODO: sould be final
27+
private JedisSocketFactory socketFactory; // TODO: should be final
2828
private Socket socket;
2929
private RedisOutputStream outputStream;
3030
private RedisInputStream inputStream;
@@ -72,8 +72,8 @@ public Connection(final String host, final int port, final boolean ssl,
7272

7373
public Connection(final HostAndPort hostAndPort, final JedisClientConfig clientConfig) {
7474
this(new DefaultJedisSocketFactory(hostAndPort, clientConfig));
75-
this.soTimeout = clientConfig.getSoTimeout();
76-
this.infiniteSoTimeout = clientConfig.getInfiniteSoTimeout();
75+
this.soTimeout = clientConfig.getSoTimeoutMillis();
76+
this.infiniteSoTimeout = clientConfig.getInfiniteSoTimeoutMillis();
7777
}
7878

7979
public Connection(final JedisSocketFactory jedisSocketFactory) {

src/main/java/redis/clients/jedis/DefaultJedisClientConfig.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
public final class DefaultJedisClientConfig implements JedisClientConfig {
88

9-
private final int connectionTimeout;
10-
private final int soTimeout;
11-
private final int infiniteSoTimeout;
9+
private final int connectionTimeoutMillis;
10+
private final int soTimeoutMillis;
11+
private final int infiniteSoTimeoutMillis;
1212

1313
private final String user;
1414
private final String password;
@@ -26,9 +26,9 @@ private DefaultJedisClientConfig(int connectionTimeout, int soTimeout, int infin
2626
String user, String password, int database, String clientName,
2727
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
2828
HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMapper) {
29-
this.connectionTimeout = connectionTimeout;
30-
this.soTimeout = soTimeout;
31-
this.infiniteSoTimeout = infiniteSoTimeout;
29+
this.connectionTimeoutMillis = connectionTimeout;
30+
this.soTimeoutMillis = soTimeout;
31+
this.infiniteSoTimeoutMillis = infiniteSoTimeout;
3232
this.user = user;
3333
this.password = password;
3434
this.database = database;
@@ -41,18 +41,18 @@ private DefaultJedisClientConfig(int connectionTimeout, int soTimeout, int infin
4141
}
4242

4343
@Override
44-
public int getConnectionTimeout() {
45-
return connectionTimeout;
44+
public int getConnectionTimeoutMillis() {
45+
return connectionTimeoutMillis;
4646
}
4747

4848
@Override
49-
public int getSoTimeout() {
50-
return soTimeout;
49+
public int getSoTimeoutMillis() {
50+
return soTimeoutMillis;
5151
}
5252

5353
@Override
54-
public int getInfiniteSoTimeout() {
55-
return infiniteSoTimeout;
54+
public int getInfiniteSoTimeoutMillis() {
55+
return infiniteSoTimeoutMillis;
5656
}
5757

5858
@Override
@@ -131,17 +131,17 @@ public DefaultJedisClientConfig build() {
131131
ssl, sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMapper);
132132
}
133133

134-
public Builder withConnectionTimeout(int connectionTimeout) {
134+
public Builder withConnectionTimeoutMillis(int connectionTimeout) {
135135
this.connectionTimeout = connectionTimeout;
136136
return this;
137137
}
138138

139-
public Builder withSoTimeout(int soTimeout) {
139+
public Builder withSoTimeoutMillis(int soTimeout) {
140140
this.soTimeout = soTimeout;
141141
return this;
142142
}
143143

144-
public Builder withInfiniteSoTimeout(int infiniteSoTimeout) {
144+
public Builder withInfiniteSoTimeoutMillis(int infiniteSoTimeout) {
145145
this.infiniteSoTimeout = infiniteSoTimeout;
146146
return this;
147147
}
@@ -193,8 +193,8 @@ public Builder withHostAndPortMapper(HostAndPortMapper hostAndPortMapper) {
193193
}
194194

195195
public static DefaultJedisClientConfig copyConfig(JedisClientConfig copy) {
196-
return new DefaultJedisClientConfig(copy.getConnectionTimeout(), copy.getSoTimeout(),
197-
copy.getInfiniteSoTimeout(), copy.getUser(), copy.getPassword(), copy.getDatabase(),
196+
return new DefaultJedisClientConfig(copy.getConnectionTimeoutMillis(), copy.getSoTimeoutMillis(),
197+
copy.getInfiniteSoTimeoutMillis(), copy.getUser(), copy.getPassword(), copy.getDatabase(),
198198
copy.getClientName(), copy.isSsl(), copy.getSslSocketFactory(), copy.getSslParameters(),
199199
copy.getHostnameVerifier(), copy.getHostAndPortMapper());
200200
}

src/main/java/redis/clients/jedis/DefaultJedisSocketFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public DefaultJedisSocketFactory(String host, int port, int connectionTimeout, i
4747
public DefaultJedisSocketFactory(HostAndPort hostAndPort, JedisClientConfig config) {
4848
this.hostAndPort = hostAndPort;
4949
if (config != null) {
50-
this.connectionTimeout = config.getConnectionTimeout();
51-
this.soTimeout = config.getSoTimeout();
50+
this.connectionTimeout = config.getConnectionTimeoutMillis();
51+
this.soTimeout = config.getSoTimeoutMillis();
5252
this.ssl = config.isSsl();
5353
this.sslSocketFactory = config.getSslSocketFactory();
5454
this.sslParameters = config.getSslParameters();

src/main/java/redis/clients/jedis/JedisClientConfig.java

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,68 @@
66

77
public interface JedisClientConfig {
88

9-
int getConnectionTimeout();
9+
/**
10+
* @return Connection timeout in milliseconds
11+
*/
12+
default int getConnectionTimeoutMillis() {
13+
return Protocol.DEFAULT_TIMEOUT;
14+
}
1015

11-
int getSoTimeout();
16+
/**
17+
* @return Socket timeout in milliseconds
18+
*/
19+
default int getSoTimeoutMillis() {
20+
return Protocol.DEFAULT_TIMEOUT;
21+
}
1222

1323
/**
1424
* @return Socket timeout (in milliseconds) to use during blocking operation. Default is '0',
1525
* which means to block forever.
1626
*/
17-
int getInfiniteSoTimeout();
27+
default int getInfiniteSoTimeoutMillis() {
28+
return 0;
29+
}
1830

19-
String getUser();
31+
/**
32+
* @return Redis ACL user
33+
*/
34+
default String getUser() {
35+
return null;
36+
}
2037

21-
String getPassword();
38+
default String getPassword() {
39+
return null;
40+
}
2241

23-
int getDatabase();
42+
default int getDatabase() {
43+
return Protocol.DEFAULT_DATABASE;
44+
}
2445

25-
String getClientName();
46+
default String getClientName() {
47+
return null;
48+
}
2649

27-
boolean isSsl();
50+
/**
51+
* @return <code>true</code> - to create a TLS connection. <code>false</code> - otherwise.
52+
*/
53+
default boolean isSsl() {
54+
return false;
55+
}
2856

29-
SSLSocketFactory getSslSocketFactory();
57+
default SSLSocketFactory getSslSocketFactory() {
58+
return null;
59+
}
3060

31-
SSLParameters getSslParameters();
61+
default SSLParameters getSslParameters() {
62+
return null;
63+
}
3264

33-
HostnameVerifier getHostnameVerifier();
65+
default HostnameVerifier getHostnameVerifier() {
66+
return null;
67+
}
3468

35-
HostAndPortMapper getHostAndPortMapper();
69+
default HostAndPortMapper getHostAndPortMapper() {
70+
return null;
71+
}
3672

3773
}

src/main/java/redis/clients/jedis/JedisClusterConnectionHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ public JedisClusterConnectionHandler(Set<HostAndPort> nodes, final GenericObject
6565
boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
6666
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap portMap) {
6767
this(nodes,
68-
DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
69-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
68+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
69+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
7070
.withUser(user).withPassword(password).withClientName(clientName)
7171
.withSsl(ssl).withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
7272
.withHostnameVerifier(hostnameVerifier).build(),
7373
poolConfig,
74-
DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
75-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
74+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
75+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
7676
.withUser(user).withPassword(password).withClientName(clientName)
7777
.withSsl(ssl).withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
7878
.withHostnameVerifier(hostnameVerifier).withHostAndPortMapper(portMap).build());

src/main/java/redis/clients/jedis/JedisClusterInfoCache.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
111111
SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
112112
HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMap) {
113113
this(poolConfig,
114-
DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
115-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
114+
DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
115+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
116116
.withUser(user).withPassword(password).withClientName(clientName)
117117
.withSsl(ssl).withSslSocketFactory(sslSocketFactory)
118118
.withSslParameters(sslParameters) .withHostnameVerifier(hostnameVerifier)

src/main/java/redis/clients/jedis/JedisFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ class JedisFactory implements PooledObjectFactory<Jedis> {
6767
final String clientName, final boolean ssl, final SSLSocketFactory sslSocketFactory,
6868
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
6969
this.hostAndPort.set(new HostAndPort(host, port));
70-
this.config = DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
71-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout).withUser(user)
70+
this.config = DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
71+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout).withUser(user)
7272
.withPassword(password).withDatabse(database).withClientName(clientName)
7373
.withSsl(ssl).withSslSocketFactory(sslSocketFactory)
7474
.withSslParameters(sslParameters).withHostnameVerifier(hostnameVerifier).build();
@@ -93,8 +93,8 @@ class JedisFactory implements PooledObjectFactory<Jedis> {
9393
"Cannot open Redis connection due invalid URI. %s", uri.toString()));
9494
}
9595
this.hostAndPort.set(new HostAndPort(uri.getHost(), uri.getPort()));
96-
this.config = DefaultJedisClientConfig.builder().withConnectionTimeout(connectionTimeout)
97-
.withSoTimeout(soTimeout).withInfiniteSoTimeout(infiniteSoTimeout)
96+
this.config = DefaultJedisClientConfig.builder().withConnectionTimeoutMillis(connectionTimeout)
97+
.withSoTimeoutMillis(soTimeout).withInfiniteSoTimeoutMillis(infiniteSoTimeout)
9898
.withUser(JedisURIHelper.getUser(uri)).withPassword(JedisURIHelper.getPassword(uri))
9999
.withDatabse(JedisURIHelper.getDBIndex(uri)).withClientName(clientName)
100100
.withSsl(JedisURIHelper.isRedisSSLScheme(uri)).withSslSocketFactory(sslSocketFactory)

src/test/java/redis/clients/jedis/tests/JedisClusterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ public void testJedisClusterTimeout() {
601601
public void testJedisClusterTimeoutWithConfig() {
602602
HostAndPort hp = nodeInfo1;
603603
try (JedisCluster jc = new JedisCluster(hp, DefaultJedisClientConfig.builder()
604-
.withConnectionTimeout(4000).withSoTimeout(4000).withPassword("cluster").build(),
604+
.withConnectionTimeoutMillis(4000).withSoTimeoutMillis(4000).withPassword("cluster").build(),
605605
DEFAULT_REDIRECTIONS, DEFAULT_POOL_CONFIG)) {
606606

607607
jc.getClusterNodes().values().forEach(pool -> {

src/test/java/redis/clients/jedis/tests/JedisTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import redis.clients.jedis.BinaryJedis;
2121
import redis.clients.jedis.DefaultJedisClientConfig;
2222
import redis.clients.jedis.Jedis;
23+
import redis.clients.jedis.JedisClientConfig;
2324
import redis.clients.jedis.JedisShardInfo;
2425
import redis.clients.jedis.Protocol;
2526
import redis.clients.jedis.exceptions.InvalidURIException;
@@ -67,6 +68,26 @@ public void connectWithConfig() {
6768
jedis.auth("foobared");
6869
assertEquals("PONG", jedis.ping());
6970
}
71+
try (Jedis jedis = new Jedis(hnp, DefaultJedisClientConfig.builder()
72+
.withPassword("foobared").build())) {
73+
assertEquals("PONG", jedis.ping());
74+
}
75+
}
76+
77+
@Test
78+
public void connectWithConfigInterface() {
79+
try (Jedis jedis = new Jedis(hnp, new JedisClientConfig() {})) {
80+
jedis.auth("foobared");
81+
assertEquals("PONG", jedis.ping());
82+
}
83+
try (Jedis jedis = new Jedis(hnp, new JedisClientConfig() {
84+
@Override
85+
public String getPassword() {
86+
return "foobared";
87+
}
88+
})) {
89+
assertEquals("PONG", jedis.ping());
90+
}
7091
}
7192

7293
@Test

0 commit comments

Comments
 (0)