diff --git a/src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java b/src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java index 9bdae1a459..9662fedd57 100644 --- a/src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java +++ b/src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java @@ -24,6 +24,7 @@ * @author Mark Paluch * @author Christoph Strobl * @author Shyngys Sapraliyev + * @author Zhou KQ * @since 2.0 */ class DefaultRedisSerializationContext implements RedisSerializationContext { @@ -127,7 +128,7 @@ public RedisSerializationContextBuilder string(SerializationPair t Assert.notNull(tuple, "SerializationPair must not be null"); - this.hashValueTuple = tuple; + this.stringTuple = tuple; return this; } diff --git a/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java b/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java index 40a56b29ef..61a80c72ac 100644 --- a/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java +++ b/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java @@ -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 @@ void shouldEncodeAndDecodeByteArrayValue() { assertThat(deserialized).isEqualTo("hello".getBytes()); } + @Test + void shouldEncodeAndDecodeUtf8StringValue() { + RedisSerializationContext serializationContext = RedisSerializationContext + .newSerializationContext(StringRedisSerializer.UTF_8) + .string(StringRedisSerializer.UTF_8) + .build(); + RedisSerializationContext.SerializationPair 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 serializationContext = RedisSerializationContext + .newSerializationContext(StringRedisSerializer.US_ASCII) + .string(StringRedisSerializer.US_ASCII) + .build(); + RedisSerializationContext.SerializationPair 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 serializationContext = RedisSerializationContext + .newSerializationContext(StringRedisSerializer.ISO_8859_1) + .string(StringRedisSerializer.ISO_8859_1) + .build(); + RedisSerializationContext.SerializationPair 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 createSerializationContext() { return RedisSerializationContext. newSerializationContext() //