From a2ebbc979ecb2a92a2748510ccccfe010291dea8 Mon Sep 17 00:00:00 2001 From: zhoukq Date: Wed, 26 Jul 2023 23:16:53 +0800 Subject: [PATCH 1/2] `DefaultRedisSerializationContextBuilder.string()` should assign param to `stringTuple` instead of `hashValueTuple` --- .../DefaultRedisSerializationContext.java | 2 +- .../RedisSerializationContextUnitTests.java | 48 ++++++++++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) 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..2a1ee60831 100644 --- a/src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java +++ b/src/main/java/org/springframework/data/redis/serializer/DefaultRedisSerializationContext.java @@ -127,7 +127,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..a430b8e28d 100644 --- a/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java +++ b/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java @@ -15,11 +15,13 @@ */ 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.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; /** * Unit tests for {@link RedisSerializationContext}. @@ -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() // From 4ac662fa94367943d3d65198c16e6e283a3445a8 Mon Sep 17 00:00:00 2001 From: zhoukq Date: Thu, 27 Jul 2023 00:07:49 +0800 Subject: [PATCH 2/2] format code --- .../redis/serializer/DefaultRedisSerializationContext.java | 1 + .../redis/serializer/RedisSerializationContextUnitTests.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) 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 2a1ee60831..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 { 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 a430b8e28d..61a80c72ac 100644 --- a/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java +++ b/src/test/java/org/springframework/data/redis/serializer/RedisSerializationContextUnitTests.java @@ -20,14 +20,14 @@ import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.assertj.core.api.Assertions.*; /** * Unit tests for {@link RedisSerializationContext}. * * @author Mark Paluch * @author Christoph Strobl + * @author Zhou KQ */ class RedisSerializationContextUnitTests {