Add password to SrpConnectionFactory

DATAREDIS-203
This commit is contained in:
Jennifer Hickey
2013-08-16 15:15:33 -07:00
parent f9cdad751c
commit 6290cbad06
3 changed files with 82 additions and 1 deletions

View File

@@ -213,6 +213,15 @@ public class SrpConnection implements RedisConnection {
}
}
public SrpConnection(String host, int port, String password, BlockingQueue<SrpConnection> queue) {
this(host, port, queue);
try {
this.client.auth(password);
} catch(RedisException e) {
throw new RedisConnectionFailureException("Could not connect", e);
}
}
protected DataAccessException convertSrpAccessException(Exception ex) {
return SrpConverters.toDataAccessException(ex);
}

View File

@@ -36,6 +36,7 @@ public class SrpConnectionFactory implements InitializingBean, DisposableBean, R
private int port = 6379;
private BlockingQueue<SrpConnection> trackedConnections = new ArrayBlockingQueue<SrpConnection>(50);
private boolean convertPipelineAndTxResults = true;
private String password;
/**
@@ -72,7 +73,8 @@ public class SrpConnectionFactory implements InitializingBean, DisposableBean, R
}
public RedisConnection getConnection() {
SrpConnection connection = new SrpConnection(hostName, port, trackedConnections);
SrpConnection connection = password != null ? new SrpConnection(hostName, port, password, trackedConnections) :
new SrpConnection(hostName, port, trackedConnections);
connection.setConvertPipelineAndTxResults(convertPipelineAndTxResults);
return connection;
}
@@ -117,6 +119,24 @@ public class SrpConnectionFactory implements InitializingBean, DisposableBean, R
this.port = port;
}
/**
* Returns the password used for authenticating with the Redis server.
*
* @return password for authentication
*/
public String getPassword() {
return password;
}
/**
* Sets the password used for authenticating with the Redis server.
*
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* Specifies if pipelined results should be converted to the expected data
* type. If false, results of {@link SrpConnection#closePipeline()} and {@link SrpConnection#exec()}

View File

@@ -0,0 +1,52 @@
/*
* Copyright 2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.redis.connection.srp;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.data.redis.SettingsUtils;
import org.springframework.data.redis.connection.RedisConnection;
/**
* Integration test of {@link SrpConnectionFactory}
*
* @author Jennifer Hickey
*
*/
public class SrpConnectionFactoryTests {
@Test
public void testConnect() {
SrpConnectionFactory factory = new SrpConnectionFactory(SettingsUtils.getHost(),
SettingsUtils.getPort());
factory.afterPropertiesSet();
RedisConnection connection = factory.getConnection();
connection.ping();
}
@Ignore("Redis must have requirepass set to run this test")
@Test
public void testConnectWithPassword() {
SrpConnectionFactory factory = new SrpConnectionFactory(SettingsUtils.getHost(),
SettingsUtils.getPort());
factory.setPassword("foob");
factory.afterPropertiesSet();
RedisConnection connection = factory.getConnection();
connection.ping();
RedisConnection connection2 = factory.getConnection();
connection2.ping();
}
}