Skip to content

Commit 675c617

Browse files
imzhoukunqiangjxblum
authored andcommitted
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
1 parent fb093bb commit 675c617

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* @author Mark Paluch
2525
* @author Christoph Strobl
2626
* @author Shyngys Sapraliyev
27+
* @author Zhou KQ
2728
* @since 2.0
2829
*/
2930
class DefaultRedisSerializationContext<K, V> implements RedisSerializationContext<K, V> {
@@ -127,7 +128,7 @@ public RedisSerializationContextBuilder<K, V> string(SerializationPair<String> t
127128

128129
Assert.notNull(tuple, "SerializationPair must not be null");
129130

130-
this.hashValueTuple = tuple;
131+
this.stringTuple = tuple;
131132
return this;
132133
}
133134

src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java

+46-2
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,19 @@
1515
*/
1616
package org.springframework.data.redis.serializer;
1717

18-
import static org.assertj.core.api.Assertions.*;
18+
import org.junit.jupiter.api.Test;
1919

2020
import java.nio.ByteBuffer;
21+
import java.nio.charset.StandardCharsets;
2122

22-
import org.junit.jupiter.api.Test;
23+
import static org.assertj.core.api.Assertions.*;
2324

2425
/**
2526
* Unit tests for {@link RedisSerializationContext}.
2627
*
2728
* @author Mark Paluch
2829
* @author Christoph Strobl
30+
* @author Zhou KQ
2931
*/
3032
class RedisSerializationContextUnitTests {
3133

@@ -137,6 +139,48 @@ void shouldEncodeAndDecodeByteArrayValue() {
137139
assertThat(deserialized).isEqualTo("hello".getBytes());
138140
}
139141

142+
@Test
143+
void shouldEncodeAndDecodeUtf8StringValue() {
144+
RedisSerializationContext<String, String> serializationContext = RedisSerializationContext
145+
.<String, String>newSerializationContext(StringRedisSerializer.UTF_8)
146+
.string(StringRedisSerializer.UTF_8)
147+
.build();
148+
RedisSerializationContext.SerializationPair<String> serializationPair = serializationContext.getStringSerializationPair();
149+
150+
assertThat(serializationPair.write("üߨ"))
151+
.isEqualTo(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.UTF_8)));
152+
assertThat(serializationPair.read(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.UTF_8))))
153+
.isEqualTo("üߨ");
154+
}
155+
156+
@Test
157+
void shouldEncodeAndDecodeAsciiStringValue() {
158+
RedisSerializationContext<String, String> serializationContext = RedisSerializationContext
159+
.<String, String>newSerializationContext(StringRedisSerializer.US_ASCII)
160+
.string(StringRedisSerializer.US_ASCII)
161+
.build();
162+
RedisSerializationContext.SerializationPair<String> serializationPair = serializationContext.getStringSerializationPair();
163+
164+
assertThat(serializationPair.write("üߨ"))
165+
.isEqualTo(ByteBuffer.wrap("???".getBytes(StandardCharsets.US_ASCII)));
166+
assertThat(serializationPair.read(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.US_ASCII))))
167+
.isEqualTo("???");
168+
}
169+
170+
@Test
171+
void shouldEncodeAndDecodeIso88591StringValue() {
172+
RedisSerializationContext<String, String> serializationContext = RedisSerializationContext
173+
.<String, String>newSerializationContext(StringRedisSerializer.ISO_8859_1)
174+
.string(StringRedisSerializer.ISO_8859_1)
175+
.build();
176+
RedisSerializationContext.SerializationPair<String> serializationPair = serializationContext.getStringSerializationPair();
177+
178+
assertThat(serializationPair.write("üߨ"))
179+
.isEqualTo(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.ISO_8859_1)));
180+
assertThat(serializationPair.read(ByteBuffer.wrap("üߨ".getBytes(StandardCharsets.ISO_8859_1))))
181+
.isEqualTo("üߨ");
182+
}
183+
140184
private RedisSerializationContext<String, Long> createSerializationContext() {
141185

142186
return RedisSerializationContext.<String, Long> newSerializationContext() //

0 commit comments

Comments
 (0)