Assign 'tuple' to 'stringTuple' in DefaultRedisSerializationContextBuilder.string().

Currently, the builder method incorrectly assigns 'tuple' SerializationPair<String> argument to 'hashValueTuple'.

Closes #2651
Original pull request: #2652
This commit is contained in:
zhoukq
2023-07-26 23:16:53 +08:00
committed by John Blum
parent 2d16225462
commit 31bdc36aba
2 changed files with 48 additions and 3 deletions

View File

@@ -24,6 +24,7 @@ import org.springframework.util.Assert;
* @author Mark Paluch
* @author Christoph Strobl
* @author Shyngys Sapraliyev
* @author Zhou KQ
* @since 2.0
*/
class DefaultRedisSerializationContext<K, V> implements RedisSerializationContext<K, V> {
@@ -127,7 +128,7 @@ class DefaultRedisSerializationContext<K, V> implements RedisSerializationContex
Assert.notNull(tuple, "SerializationPair must not be null");
this.hashValueTuple = tuple;
this.stringTuple = tuple;
return this;
}

View File

@@ -15,17 +15,19 @@
*/
package org.springframework.data.redis.serializer;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.Test;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
/**
* Unit tests for {@link RedisSerializationContext}.
*
* @author Mark Paluch
* @author Christoph Strobl
* @author Zhou KQ
*/
class RedisSerializationContextUnitTests {
@@ -137,6 +139,48 @@ class RedisSerializationContextUnitTests {
assertThat(deserialized).isEqualTo("hello".getBytes());
}
@Test
void shouldEncodeAndDecodeUtf8StringValue() {
RedisSerializationContext<String, String> serializationContext = RedisSerializationContext
.<String, String>newSerializationContext(StringRedisSerializer.UTF_8)
.string(StringRedisSerializer.UTF_8)
.build();
RedisSerializationContext.SerializationPair<String> serializationPair = serializationContext.getStringSerializationPair();
assertThat(serializationPair.write("üߨ"))
.isEqualTo(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.UTF_8)));
assertThat(serializationPair.read(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.UTF_8))))
.isEqualTo("üߨ");
}
@Test
void shouldEncodeAndDecodeAsciiStringValue() {
RedisSerializationContext<String, String> serializationContext = RedisSerializationContext
.<String, String>newSerializationContext(StringRedisSerializer.US_ASCII)
.string(StringRedisSerializer.US_ASCII)
.build();
RedisSerializationContext.SerializationPair<String> serializationPair = serializationContext.getStringSerializationPair();
assertThat(serializationPair.write("üߨ"))
.isEqualTo(ByteBuffer.wrap("???".getBytes(StandardCharsets.US_ASCII)));
assertThat(serializationPair.read(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.US_ASCII))))
.isEqualTo("???");
}
@Test
void shouldEncodeAndDecodeIso88591StringValue() {
RedisSerializationContext<String, String> serializationContext = RedisSerializationContext
.<String, String>newSerializationContext(StringRedisSerializer.ISO_8859_1)
.string(StringRedisSerializer.ISO_8859_1)
.build();
RedisSerializationContext.SerializationPair<String> serializationPair = serializationContext.getStringSerializationPair();
assertThat(serializationPair.write("üߨ"))
.isEqualTo(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.ISO_8859_1)));
assertThat(serializationPair.read(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.ISO_8859_1))))
.isEqualTo("üߨ");
}
private RedisSerializationContext<String, Long> createSerializationContext() {
return RedisSerializationContext.<String, Long> newSerializationContext() //