Skip to content

Commit 6c3e6d2

Browse files
authored
Reduce code redundancy (#1705)
* Reduce code redundancy * Safer/independent String.equals()
1 parent ca4415f commit 6c3e6d2

File tree

8 files changed

+109
-197
lines changed

8 files changed

+109
-197
lines changed

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

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public BinaryJedis() {
4343

4444
public BinaryJedis(final String host) {
4545
URI uri = URI.create(host);
46-
if (uri.getScheme() != null && (uri.getScheme().equals("redis") || uri.getScheme().equals("rediss"))) {
46+
if (JedisURIHelper.isValid(uri)) {
4747
initializeClientFromURI(uri);
4848
} else {
4949
client = new Client(host);
@@ -69,23 +69,17 @@ public BinaryJedis(final String host, final int port, final boolean ssl,
6969
}
7070

7171
public BinaryJedis(final String host, final int port, final int timeout) {
72-
client = new Client(host, port);
73-
client.setConnectionTimeout(timeout);
74-
client.setSoTimeout(timeout);
72+
this(host, port, timeout, timeout);
7573
}
7674

7775
public BinaryJedis(final String host, final int port, final int timeout, final boolean ssl) {
78-
client = new Client(host, port, ssl);
79-
client.setConnectionTimeout(timeout);
80-
client.setSoTimeout(timeout);
76+
this(host, port, timeout, timeout, ssl);
8177
}
8278

8379
public BinaryJedis(final String host, final int port, final int timeout, final boolean ssl,
8480
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
8581
final HostnameVerifier hostnameVerifier) {
86-
client = new Client(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
87-
client.setConnectionTimeout(timeout);
88-
client.setSoTimeout(timeout);
82+
this(host, port, timeout, timeout, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
8983
}
9084

9185
public BinaryJedis(final String host, final int port, final int connectionTimeout,
@@ -130,16 +124,12 @@ public BinaryJedis(URI uri, final SSLSocketFactory sslSocketFactory,
130124
}
131125

132126
public BinaryJedis(final URI uri, final int timeout) {
133-
initializeClientFromURI(uri);
134-
client.setConnectionTimeout(timeout);
135-
client.setSoTimeout(timeout);
127+
this(uri, timeout, timeout);
136128
}
137129

138130
public BinaryJedis(final URI uri, final int timeout, final SSLSocketFactory sslSocketFactory,
139131
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
140-
initializeClientFromURI(uri, sslSocketFactory, sslParameters, hostnameVerifier);
141-
client.setConnectionTimeout(timeout);
142-
client.setSoTimeout(timeout);
132+
this(uri, timeout, timeout, sslSocketFactory, sslParameters, hostnameVerifier);
143133
}
144134

145135
public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout) {
@@ -157,25 +147,7 @@ public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeo
157147
}
158148

159149
private void initializeClientFromURI(URI uri) {
160-
if (!JedisURIHelper.isValid(uri)) {
161-
throw new InvalidURIException(String.format(
162-
"Cannot open Redis connection due invalid URI. %s", uri.toString()));
163-
}
164-
165-
client = new Client(uri.getHost(), uri.getPort(), uri.getScheme().equals("rediss"));
166-
167-
String password = JedisURIHelper.getPassword(uri);
168-
if (password != null) {
169-
client.auth(password);
170-
client.getStatusCodeReply();
171-
}
172-
173-
int dbIndex = JedisURIHelper.getDBIndex(uri);
174-
if (dbIndex > 0) {
175-
client.select(dbIndex);
176-
client.getStatusCodeReply();
177-
client.setDb(dbIndex);
178-
}
150+
initializeClientFromURI(uri, null, null, null);
179151
}
180152

181153
private void initializeClientFromURI(URI uri, final SSLSocketFactory sslSocketFactory,
@@ -185,7 +157,7 @@ private void initializeClientFromURI(URI uri, final SSLSocketFactory sslSocketFa
185157
"Cannot open Redis connection due invalid URI. %s", uri.toString()));
186158
}
187159

188-
client = new Client(uri.getHost(), uri.getPort(), uri.getScheme().equals("rediss"),
160+
client = new Client(uri.getHost(), uri.getPort(), JedisURIHelper.isRedisSSLScheme(uri),
189161
sslSocketFactory, sslParameters, hostnameVerifier);
190162

191163
String password = JedisURIHelper.getPassword(uri);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public void connect() {
185185
if (null == sslSocketFactory) {
186186
sslSocketFactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
187187
}
188-
socket = (SSLSocket) sslSocketFactory.createSocket(socket, host, port, true);
188+
socket = sslSocketFactory.createSocket(socket, host, port, true);
189189
if (null != sslParameters) {
190190
((SSLSocket) socket).setSSLParameters(sslParameters);
191191
}

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

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88
import java.util.concurrent.locks.Lock;
99
import java.util.concurrent.locks.ReentrantReadWriteLock;
1010

11-
import javax.net.ssl.HostnameVerifier;
12-
import javax.net.ssl.SSLParameters;
13-
import javax.net.ssl.SSLSocketFactory;
14-
1511
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
1612

1713
import redis.clients.jedis.exceptions.JedisConnectionException;
@@ -166,40 +162,6 @@ public JedisPool setupNodeIfNotExist(HostAndPort node) {
166162
}
167163
}
168164

169-
public JedisPool setupNodeIfNotExist(HostAndPort node, boolean ssl) {
170-
w.lock();
171-
try {
172-
String nodeKey = getNodeKey(node);
173-
JedisPool existingPool = nodes.get(nodeKey);
174-
if (existingPool != null) return existingPool;
175-
176-
JedisPool nodePool = new JedisPool(poolConfig, node.getHost(), node.getPort(),
177-
connectionTimeout, soTimeout, password, 0, null, ssl, null, null, null);
178-
nodes.put(nodeKey, nodePool);
179-
return nodePool;
180-
} finally {
181-
w.unlock();
182-
}
183-
}
184-
185-
public JedisPool setupNodeIfNotExist(HostAndPort node, boolean ssl, SSLSocketFactory sslSocketFactory,
186-
SSLParameters sslParameters, HostnameVerifier hostnameVerifier) {
187-
w.lock();
188-
try {
189-
String nodeKey = getNodeKey(node);
190-
JedisPool existingPool = nodes.get(nodeKey);
191-
if (existingPool != null) return existingPool;
192-
193-
JedisPool nodePool = new JedisPool(poolConfig, node.getHost(), node.getPort(),
194-
connectionTimeout, soTimeout, password, 0, null, ssl, sslSocketFactory, sslParameters,
195-
hostnameVerifier);
196-
nodes.put(nodeKey, nodePool);
197-
return nodePool;
198-
} finally {
199-
w.unlock();
200-
}
201-
}
202-
203165
public void assignSlotToNode(int slot, HostAndPort targetNode) {
204166
w.lock();
205167
try {

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

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ class JedisFactory implements PooledObjectFactory<Jedis> {
2727
private final String clientName;
2828
private final boolean ssl;
2929
private final SSLSocketFactory sslSocketFactory;
30-
private SSLParameters sslParameters;
31-
private HostnameVerifier hostnameVerifier;
30+
private final SSLParameters sslParameters;
31+
private final HostnameVerifier hostnameVerifier;
3232

33-
public JedisFactory(final String host, final int port, final int connectionTimeout,
33+
JedisFactory(final String host, final int port, final int connectionTimeout,
34+
final int soTimeout, final String password, final int database, final String clientName) {
35+
this(host, port, connectionTimeout, soTimeout, password, database, clientName,
36+
false, null, null, null);
37+
}
38+
39+
JedisFactory(final String host, final int port, final int connectionTimeout,
3440
final int soTimeout, final String password, final int database, final String clientName,
3541
final boolean ssl, final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
3642
final HostnameVerifier hostnameVerifier) {
@@ -46,8 +52,13 @@ public JedisFactory(final String host, final int port, final int connectionTimeo
4652
this.hostnameVerifier = hostnameVerifier;
4753
}
4854

49-
public JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,
50-
final String clientName, final boolean ssl, final SSLSocketFactory sslSocketFactory,
55+
JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,
56+
final String clientName) {
57+
this(uri, connectionTimeout, soTimeout, clientName, null, null, null);
58+
}
59+
60+
JedisFactory(final URI uri, final int connectionTimeout, final int soTimeout,
61+
final String clientName, final SSLSocketFactory sslSocketFactory,
5162
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
5263
if (!JedisURIHelper.isValid(uri)) {
5364
throw new InvalidURIException(String.format(
@@ -60,7 +71,7 @@ public JedisFactory(final URI uri, final int connectionTimeout, final int soTime
6071
this.password = JedisURIHelper.getPassword(uri);
6172
this.database = JedisURIHelper.getDBIndex(uri);
6273
this.clientName = clientName;
63-
this.ssl = ssl;
74+
this.ssl = JedisURIHelper.isRedisSSLScheme(uri);
6475
this.sslSocketFactory = sslSocketFactory;
6576
this.sslParameters = sslParameters;
6677
this.hostnameVerifier = hostnameVerifier;

0 commit comments

Comments
 (0)