Skip to content
4 changes: 0 additions & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ executors:
linux-8-jdk:
docker:
- image: circleci/openjdk:8-jdk
linux-7-jdk:
docker:
- image: circleci/openjdk:7-jdk

jobs:
build:
Expand Down Expand Up @@ -70,5 +67,4 @@ workflows:
- build:
matrix:
parameters:
# os: [linux-8-jdk, linux-7-jdk]
os: [linux-8-jdk]
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
Expand Down
36 changes: 33 additions & 3 deletions src/main/java/redis/clients/jedis/BinaryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ public class BinaryClient extends Connection {

private boolean isInMulti;

private String user;
private String password;
@Deprecated private String user;
@Deprecated private String password;

private int db;

Expand All @@ -52,6 +52,12 @@ public BinaryClient() {
super();
}

/**
* @param host
* @deprecated This constructor will be removed in future. It can be replaced with
* {@link #BinaryClient(java.lang.String, int)} with the host and {@link Protocol#DEFAULT_PORT}.
*/
@Deprecated
public BinaryClient(final String host) {
super(host);
}
Expand All @@ -60,16 +66,28 @@ public BinaryClient(final String host, final int port) {
super(host, port);
}

/**
* @deprecated This constructor will be removed in future.
*/
@Deprecated
public BinaryClient(final String host, final int port, final boolean ssl) {
super(host, port, ssl);
}

/**
* @deprecated This constructor will be removed in future.
*/
@Deprecated
public BinaryClient(final String host, final int port, final boolean ssl,
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
final HostnameVerifier hostnameVerifier) {
super(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
}

public BinaryClient(final String host, final int port, final JedisSocketConfig jedisSocketConfig) {
super(host, port, jedisSocketConfig);
}

public BinaryClient(final JedisSocketFactory jedisSocketFactory) {
super(jedisSocketFactory);
}
Expand Down Expand Up @@ -97,8 +115,20 @@ private byte[][] joinParameters(byte[] first, byte[] second, byte[][] rest) {
return result;
}

public void setUser(final String user) { this.user = user; }
/**
* @param user
* @deprecated This method will be removed in future.
*/
@Deprecated
public void setUser(final String user) {
this.user = user;
}

/**
* @param password
* @deprecated This method will be removed in future.
*/
@Deprecated
public void setPassword(final String password) {
this.password = password;
}
Expand Down
172 changes: 111 additions & 61 deletions src/main/java/redis/clients/jedis/BinaryJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKeyBinaryCommands,
AdvancedBinaryJedisCommands, BinaryScriptingCommands, Closeable {

protected Client client = null;
protected final Client client;
protected Transaction transaction = null;
protected Pipeline pipeline = null;
protected static final byte[][] DUMMY_ARRAY = new byte[0][];
Expand All @@ -52,31 +52,50 @@ public BinaryJedis() {
client = new Client();
}

public BinaryJedis(final String host) {
URI uri = URI.create(host);
/**
* @deprecated This constructor will not support a host string in future. It will accept only a
* uri string. {@link JedisURIHelper#isValid(java.net.URI)} can used before this. If this
* constructor was being used with a host, it can be replaced with
* {@link #BinaryJedis(java.lang.String, int)} with the host and {@link Protocol#DEFAULT_PORT}.
* @param uriString
*/
@Deprecated
public BinaryJedis(final String uriString) {
URI uri = URI.create(uriString);
if (JedisURIHelper.isValid(uri)) {
initializeClientFromURI(uri);
client = createClientFromURI(uri);
initializeFromURI(uri);
} else {
client = new Client(host);
client = new Client(uriString);
}
}

public BinaryJedis(final HostAndPort hp) {
this(hp.getHost(), hp.getPort());
}

public BinaryJedis(final HostAndPort hp, final JedisSocketConfig config) {
this(hp.getHost(), hp.getPort(), config);
}

public BinaryJedis(final String host, final int port) {
client = new Client(host, port);
}

public BinaryJedis(final String host, final int port, final JedisSocketConfig config) {
client = new Client(host, port, config);
}

public BinaryJedis(final String host, final int port, final boolean ssl) {
client = new Client(host, port, ssl);
this(host, port, DefaultJedisSocketConfig.builder().withSsl(ssl).build());
}

public BinaryJedis(final String host, final int port, final boolean ssl,
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
final HostnameVerifier hostnameVerifier) {
client = new Client(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
this(host, port, DefaultJedisSocketConfig.builder().withSsl(ssl)
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
.withHostnameVerifier(hostnameVerifier).build());
}

public BinaryJedis(final String host, final int port, final int timeout) {
Expand All @@ -95,62 +114,82 @@ public BinaryJedis(final String host, final int port, final int timeout, final b

public BinaryJedis(final String host, final int port, final int connectionTimeout,
final int soTimeout) {
client = new Client(host, port);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(host, port, DefaultJedisSocketConfig.builder()
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).build());
}

public BinaryJedis(final String host, final int port, final int connectionTimeout,
final int soTimeout, final int infiniteSoTimeout) {
client = new Client(host, port);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(host, port, connectionTimeout, soTimeout);
client.setInfiniteSoTimeout(infiniteSoTimeout);
}

public BinaryJedis(final String host, final int port, final int connectionTimeout,
final int soTimeout, final boolean ssl) {
client = new Client(host, port, ssl);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(host, port, DefaultJedisSocketConfig.builder()
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).withSsl(ssl).build());
}

public BinaryJedis(final String host, final int port, final int connectionTimeout,
final int soTimeout, final boolean ssl, final SSLSocketFactory sslSocketFactory,
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
client = new Client(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(host, port, DefaultJedisSocketConfig.builder()
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).withSsl(ssl)
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
.withHostnameVerifier(hostnameVerifier).build());
}

public BinaryJedis(final String host, final int port, final int connectionTimeout,
final int soTimeout, final int infiniteSoTimeout, final boolean ssl,
final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters,
final HostnameVerifier hostnameVerifier) {
client = new Client(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(host, port, connectionTimeout, soTimeout, ssl, sslSocketFactory, sslParameters, hostnameVerifier);
client.setInfiniteSoTimeout(infiniteSoTimeout);
}

public BinaryJedis(final HostAndPort hostAndPort, final JedisSocketConfig config, final int infiniteSoTimeout) {
this(hostAndPort, config);
client.setInfiniteSoTimeout(infiniteSoTimeout);
}

/**
* @param shardInfo
* @deprecated Internal behavior of this constructor has been changed.
*/
@Deprecated
public BinaryJedis(final JedisShardInfo shardInfo) {
client = new Client(shardInfo.getHost(), shardInfo.getPort(), shardInfo.getSsl(),
shardInfo.getSslSocketFactory(), shardInfo.getSslParameters(),
shardInfo.getHostnameVerifier());
client.setConnectionTimeout(shardInfo.getConnectionTimeout());
client.setSoTimeout(shardInfo.getSoTimeout());
client.setUser(shardInfo.getUser());
client.setPassword(shardInfo.getPassword());
client.setDb(shardInfo.getDb());
this(shardInfo.getHost(), shardInfo.getPort(), shardInfo.getConnectionTimeout(),
shardInfo.getSoTimeout(), shardInfo.getSsl(), shardInfo.getSslSocketFactory(),
shardInfo.getSslParameters(), shardInfo.getHostnameVerifier());
initializeFromShardInfo(shardInfo);
}

private void initializeFromShardInfo(JedisShardInfo shardInfo) {
String password = shardInfo.getPassword();
if (password != null) {
String user = shardInfo.getUser();
if (user != null) {
auth(user, password);
} else {
auth(password);
}
}
int dbIndex = shardInfo.getDb();
if (dbIndex > 0) {
select(dbIndex);
}
}

public BinaryJedis(URI uri) {
initializeClientFromURI(uri);
client = createClientFromURI(uri);
initializeFromURI(uri);
}

public BinaryJedis(URI uri, final SSLSocketFactory sslSocketFactory,
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
initializeClientFromURI(uri, sslSocketFactory, sslParameters, hostnameVerifier);
this(uri, DefaultJedisSocketConfig.builder()
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
.withHostnameVerifier(hostnameVerifier).build());
}

public BinaryJedis(final URI uri, final int timeout) {
Expand All @@ -163,65 +202,75 @@ public BinaryJedis(final URI uri, final int timeout, final SSLSocketFactory sslS
}

public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout) {
initializeClientFromURI(uri);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(uri, DefaultJedisSocketConfig.builder()
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout).build());
}

public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout,
final SSLSocketFactory sslSocketFactory,final SSLParameters sslParameters,
final HostnameVerifier hostnameVerifier) {
initializeClientFromURI(uri, sslSocketFactory, sslParameters, hostnameVerifier);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(uri, DefaultJedisSocketConfig.builder()
.withConnectionTimeout(connectionTimeout).withSoTimeout(soTimeout)
.withSslSocketFactory(sslSocketFactory).withSslParameters(sslParameters)
.withHostnameVerifier(hostnameVerifier).build());
}

public BinaryJedis(final URI uri, final int connectionTimeout, final int soTimeout,
final int infiniteSoTimeout, final SSLSocketFactory sslSocketFactory,
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
initializeClientFromURI(uri, sslSocketFactory, sslParameters, hostnameVerifier);
client.setConnectionTimeout(connectionTimeout);
client.setSoTimeout(soTimeout);
this(uri, connectionTimeout, soTimeout, sslSocketFactory, sslParameters, hostnameVerifier);
client.setInfiniteSoTimeout(infiniteSoTimeout);
}

public BinaryJedis(final JedisSocketFactory jedisSocketFactory) {
client = new Client(jedisSocketFactory);
public BinaryJedis(final URI uri, final JedisSocketConfig config, final int infiniteSoTimeout) {
this(uri, config);
client.setInfiniteSoTimeout(infiniteSoTimeout);
}

private void initializeClientFromURI(URI uri) {
initializeClientFromURI(uri, null, null, null);
public BinaryJedis(final URI uri, JedisSocketConfig config) {
if (!JedisURIHelper.isValid(uri)) {
throw new InvalidURIException(String.format("Cannot open Redis connection due invalid URI \"%s\".", uri.toString()));
}
client = new Client(uri.getHost(), uri.getPort(),
DefaultJedisSocketConfig.withSsl(JedisURIHelper.isRedisSSLScheme(uri), config));
initializeFromURI(uri);
}

private void initializeClientFromURI(URI uri, final SSLSocketFactory sslSocketFactory,
final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) {
private static Client createClientFromURI(URI uri) {
if (!JedisURIHelper.isValid(uri)) {
throw new InvalidURIException(String.format(
"Cannot open Redis connection due invalid URI. %s", uri.toString()));
throw new InvalidURIException(String.format("Cannot open Redis connection due invalid URI \"%s\".", uri.toString()));
}
return new Client(uri.getHost(), uri.getPort(),
DefaultJedisSocketConfig.builder().withSsl(JedisURIHelper.isRedisSSLScheme(uri)).build());
}

client = new Client(uri.getHost(), uri.getPort(), JedisURIHelper.isRedisSSLScheme(uri),
sslSocketFactory, sslParameters, hostnameVerifier);

private void initializeFromURI(URI uri) {
String password = JedisURIHelper.getPassword(uri);
if (password != null) {
String user = JedisURIHelper.getUser(uri);
if (user == null) {
client.auth(password);
if (user != null) {
auth(user, password);
} else {
client.auth(user, password);
auth(password);
}
client.getStatusCodeReply();
}

int dbIndex = JedisURIHelper.getDBIndex(uri);
if (dbIndex > 0) {
client.select(dbIndex);
client.getStatusCodeReply();
client.setDb(dbIndex);
select(dbIndex);
}
}

public BinaryJedis(final JedisSocketFactory jedisSocketFactory) {
client = new Client(jedisSocketFactory);
}

public boolean isBroken() {
return client.isBroken();
}

/**
* @return <code>PONG</code>
*/
@Override
public String ping() {
checkIsInMultiOrPipeline();
Expand All @@ -230,7 +279,7 @@ public String ping() {
}

/**
* Works same as <tt>ping()</tt> but returns argument message instead of <tt>PONG</tt>.
* Works same as {@link #ping()} but returns argument message instead of <code>PONG</code>.
* @param message
* @return message
*/
Expand Down Expand Up @@ -1430,6 +1479,7 @@ public Long lpos(final byte[] key, final byte[] element, final LPosParams params
* @see #lpos(byte[], byte[], LPosParams, long)
* @param key
* @param element
* @param params
* @param count
* @return Returns value will be a list containing position of the matching elements inside the list.
*/
Expand Down
Loading