Convert tx results in DefaultStringRedisConnection

DATAREDIS-208
This commit is contained in:
Jennifer Hickey
2013-07-23 11:13:56 -07:00
parent bd839ddf0f
commit 893b9f5007
9 changed files with 3494 additions and 617 deletions

View File

@@ -34,7 +34,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
*/
public class StringRedisTemplate extends RedisTemplate<String, String> {
private boolean deserializePipelineResults = true;
private boolean deserializePipelineAndTxResults = true;
/**
* Constructs a new <code>StringRedisTemplate</code> instance.
@@ -61,19 +61,19 @@ public class StringRedisTemplate extends RedisTemplate<String, String> {
}
/**
* Specifies if pipelined results should be deserialized to Strings.
* If false, results of {@link StringRedisConnection#closePipeline()} will be of the
* type returned by the underlying connection
* Specifies if pipelined and tx results should be deserialized to Strings.
* If false, results of {@link StringRedisConnection#closePipeline()} and {@link StringRedisConnection#exec()}
* will be of the type returned by the underlying connection
*
* @param deserializePipelineResults Whether or not to deserialize pipeline results
* @param deserializePipelineAndTxResults Whether or not to deserialize pipeline and tx results
*/
public void setDeserializePipelineResults(boolean deserializePipelineResults) {
this.deserializePipelineResults = deserializePipelineResults;
public void setDeserializePipelineAndTxResults(boolean deserializePipelineAndTxResults) {
this.deserializePipelineAndTxResults = deserializePipelineAndTxResults;
}
protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
DefaultStringRedisConnection stringConn = new DefaultStringRedisConnection(connection);
stringConn.setDeserializePipelineResults(deserializePipelineResults);
stringConn.setDeserializePipelineAndTxResults(deserializePipelineAndTxResults);
return stringConn;
}
}

View File

@@ -12,6 +12,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.dao.DataAccessException;
@@ -29,6 +30,12 @@ abstract public class AbstractConnectionTransactionIntegrationTests extends
protected boolean convertStringToProps = false;
@Before
public void setUp() {
super.setUp();
((DefaultStringRedisConnection)connection).setDeserializePipelineAndTxResults(false);
}
@Ignore
public void testMultiDiscard() {
}

View File

@@ -142,13 +142,6 @@ public class DefaultStringRedisConnectionPipelineTests extends DefaultStringRedi
super.testEcho();
}
@Test
public void testExec() {
List<Object> results = Arrays.asList(new Object[] { barBytes });
doReturn(Arrays.asList(new Object[] { results })).when(nativeConnection).closePipeline();
super.testExec();
}
@Test
public void testTxResultsNotPipelined() {
doReturn(true).when(nativeConnection).isQueueing();
@@ -1408,7 +1401,7 @@ public class DefaultStringRedisConnectionPipelineTests extends DefaultStringRedi
@Test
public void testDisablePipelineDeserialize() {
connection.setDeserializePipelineResults(false);
connection.setDeserializePipelineAndTxResults(false);
doReturn(Arrays.asList(new Object[] { barBytes })).when(nativeConnection).closePipeline();
doReturn(barBytes).when(nativeConnection).get(fooBytes);
connection.get(foo);

View File

@@ -211,14 +211,6 @@ public class DefaultStringRedisConnectionTests {
verifyResults(Arrays.asList(new Object[] { bar }));
}
@Test
public void testExec() {
List<Object> results = Arrays.asList(new Object[] { barBytes });
doReturn(results).when(nativeConnection).exec();
actual.add(connection.exec());
verifyResults(Arrays.asList(new Object[] { results }));
}
@Test
public void testExistsBytes() {
doReturn(true).when(nativeConnection).exists(fooBytes);

View File

@@ -131,7 +131,7 @@ public class StringRedisTemplateTests {
@Test
public void testStringTemplateExecutePipelineResultsNotConverted() {
final StringRedisTemplate template2 = new StringRedisTemplate(redisTemplate.getConnectionFactory());
template2.setDeserializePipelineResults(false);
template2.setDeserializePipelineAndTxResults(false);
template2.afterPropertiesSet();
String result = template2.execute(new RedisCallback<String>() {
public String doInRedis(RedisConnection connection) {