Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 88d8f84

Browse files
Return Jackson3 serializer for RedisSerializer.json()
Updated test to cover Jackson3 based serializer variants. See: #3219
1 parent 97e36a5 commit 88d8f84

File tree

5 files changed

+27
-8
lines changed

5 files changed

+27
-8
lines changed

‎src/main/java/org/springframework/data/redis/serializer/GenericJacksonJsonRedisSerializer.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ protected JavaType resolveType(byte[] source, Class<?> type) throws IOException
479479
JsonNode root = readTree(source);
480480
JsonNode jsonNode = root.get(hintName.get());
481481

482-
if (jsonNode.isString() && jsonNode.asString() != null) {
482+
if (jsonNode != null && jsonNode.isString() && jsonNode.asString() != null) {
483483
return typeFactory.get().constructFromCanonical(jsonNode.asString());
484484
}
485485

‎src/main/java/org/springframework/data/redis/serializer/RedisSerializer.java‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ static RedisSerializer<Object> java(@Nullable ClassLoader classLoader) {
5555

5656
/**
5757
* Obtain a {@link RedisSerializer} that can read and write JSON using
58-
* <a href="https://github.com/FasterXML/jackson-core">Jackson</a>.
58+
* <a href="https://github.com/FasterXML/jackson-core">Jackson</a> with default typing enabled.
5959
*
6060
* @return never {@literal null}.
6161
* @since 2.1
6262
*/
6363
static RedisSerializer<Object> json() {
64-
return new GenericJackson2JsonRedisSerializer();
64+
return GenericJacksonJsonRedisSerializer
65+
.create(it -> it.enableSpringCacheNullValueSupport().enableUnsafeDefaultTyping());
6566
}
6667

6768
/**

‎src/test/java/org/springframework/data/redis/cache/CacheTestParams.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
3131
import org.springframework.data.redis.connection.lettuce.extension.LettuceConnectionFactoryExtension;
3232
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
33+
import org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer;
3334
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
3435
import org.springframework.data.redis.serializer.OxmSerializer;
3536
import org.springframework.data.redis.serializer.RedisSerializer;
@@ -89,10 +90,13 @@ static Collection<Object[]> connectionFactoriesAndSerializers() {
8990

9091
OxmSerializer oxmSerializer = XstreamOxmSerializerSingleton.getInstance();
9192
GenericJackson2JsonRedisSerializer jackson2Serializer = new GenericJackson2JsonRedisSerializer();
93+
GenericJacksonJsonRedisSerializer jacksonSerializer = GenericJacksonJsonRedisSerializer
94+
.create(it -> it.enableSpringCacheNullValueSupport().enableUnsafeDefaultTyping());
9295
JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer();
9396

9497
return connectionFactories().stream().flatMap(factory -> Arrays.asList( //
9598
new Object[] { factory, new FixDamnedJunitParameterizedNameForRedisSerializer(jdkSerializer) }, //
99+
new Object[] { factory, new FixDamnedJunitParameterizedNameForRedisSerializer(jacksonSerializer) }, //
96100
new Object[] { factory, new FixDamnedJunitParameterizedNameForRedisSerializer(jackson2Serializer) }, //
97101
new Object[] { factory, new FixDamnedJunitParameterizedNameForRedisSerializer(oxmSerializer) }).stream())
98102
.collect(Collectors.toList());

‎src/test/java/org/springframework/data/redis/core/DefaultReactiveStreamOperationsIntegrationTests.java‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.springframework.data.redis.connection.stream.StreamRecords;
4949
import org.springframework.data.redis.core.ReactiveOperationsTestParams.Fixture;
5050
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
51+
import org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer;
5152
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
5253
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
5354
import org.springframework.data.redis.serializer.OxmSerializer;
@@ -143,6 +144,7 @@ void addShouldAddReadSimpleMessage() {
143144

144145
assumeTrue(!(serializer instanceof Jackson2JsonRedisSerializer)
145146
&& !(serializer instanceof GenericJackson2JsonRedisSerializer)
147+
&& !(serializer instanceof GenericJacksonJsonRedisSerializer)
146148
&& !(serializer instanceof JdkSerializationRedisSerializer) && !(serializer instanceof OxmSerializer));
147149

148150
K key = keyFactory.instance();
@@ -165,7 +167,8 @@ void addShouldAddReadSimpleMessage() {
165167
void addShouldAddReadSimpleMessageWithRawSerializer() {
166168

167169
assumeTrue(!(serializer instanceof Jackson2JsonRedisSerializer)
168-
&& !(serializer instanceof GenericJackson2JsonRedisSerializer));
170+
&& !(serializer instanceof GenericJackson2JsonRedisSerializer)
171+
&& !(serializer instanceof GenericJacksonJsonRedisSerializer));
169172

170173
SerializationPair<K> keySerializer = redisTemplate.getSerializationContext().getKeySerializationPair();
171174

@@ -223,6 +226,7 @@ void addMaxLenShouldLimitSimpleMessagesSize() {
223226

224227
assumeTrue(!(serializer instanceof Jackson2JsonRedisSerializer)
225228
&& !(serializer instanceof GenericJackson2JsonRedisSerializer)
229+
&& !(serializer instanceof GenericJacksonJsonRedisSerializer)
226230
&& !(serializer instanceof JdkSerializationRedisSerializer) && !(serializer instanceof OxmSerializer));
227231

228232
K key = keyFactory.instance();
@@ -249,7 +253,8 @@ void addMaxLenShouldLimitSimpleMessagesSize() {
249253
void addMaxLenShouldLimitSimpleMessageWithRawSerializerSize() {
250254

251255
assumeTrue(!(serializer instanceof Jackson2JsonRedisSerializer)
252-
&& !(serializer instanceof GenericJackson2JsonRedisSerializer));
256+
&& !(serializer instanceof GenericJackson2JsonRedisSerializer)
257+
&& !(serializer instanceof GenericJacksonJsonRedisSerializer));
253258

254259
SerializationPair<K> keySerializer = redisTemplate.getSerializationContext().getKeySerializationPair();
255260

@@ -378,8 +383,9 @@ void reverseRangeShouldReportMessages() {
378383
@Test // DATAREDIS-864
379384
void reverseRangeShouldConvertSimpleMessages() {
380385

381-
assumeTrue(!(serializer instanceof Jackson2JsonRedisSerializer)
382-
&& !(serializer instanceof GenericJackson2JsonRedisSerializer));
386+
assumeTrue(!(serializer instanceof Jackson2JsonRedisSerializer)
387+
&& !(serializer instanceof GenericJackson2JsonRedisSerializer)
388+
&& !(serializer instanceof GenericJacksonJsonRedisSerializer));
383389

384390
K key = keyFactory.instance();
385391
HK hashKey = hashKeyFactory.instance();

‎src/test/java/org/springframework/data/redis/core/ReactiveOperationsTestParams.java‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
3434
import org.springframework.data.redis.connection.lettuce.extension.LettuceConnectionFactoryExtension;
3535
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
36+
import org.springframework.data.redis.serializer.GenericJacksonJsonRedisSerializer;
3637
import org.springframework.data.redis.serializer.GenericToStringSerializer;
3738
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
3839
import org.springframework.data.redis.serializer.JacksonJsonRedisSerializer;
@@ -109,6 +110,11 @@ RedisSerializationContext.<String, Double> newSerializationContext(jdkSerializat
109110
ReactiveRedisTemplate<String, Person> genericJackson2JsonPersonTemplate = new ReactiveRedisTemplate(
110111
lettuceConnectionFactory, RedisSerializationContext.fromSerializer(genericJackson2JsonSerializer));
111112

113+
GenericJacksonJsonRedisSerializer genericJacksonJsonSerializer = GenericJacksonJsonRedisSerializer
114+
.create(it -> it.enableSpringCacheNullValueSupport().enableUnsafeDefaultTyping());
115+
ReactiveRedisTemplate<String, Person> genericJacksonJsonPersonTemplate = new ReactiveRedisTemplate(
116+
lettuceConnectionFactory, RedisSerializationContext.fromSerializer(genericJacksonJsonSerializer));
117+
112118
List<Fixture<?, ?>> list = Arrays.asList( //
113119
new Fixture<>(stringTemplate, stringFactory, stringFactory, stringRedisSerializer, "String"), //
114120
new Fixture<>(objectTemplate, personFactory, personFactory, jdkSerializationRedisSerializer, "Person/JDK"), //
@@ -122,7 +128,9 @@ RedisSerializationContext.<String, Double> newSerializationContext(jdkSerializat
122128
new Fixture<>(jackson2JsonPersonTemplate, stringFactory, personFactory, jackson2JsonSerializer, "Jackson2"), //
123129
new Fixture<>(jackson3JsonPersonTemplate, stringFactory, personFactory, jackson2JsonSerializer, "Jackson3"), //
124130
new Fixture<>(genericJackson2JsonPersonTemplate, stringFactory, personFactory, genericJackson2JsonSerializer,
125-
"Generic Jackson 2"));
131+
"Generic Jackson 2"),
132+
new Fixture<>(genericJacksonJsonPersonTemplate, stringFactory, personFactory, genericJacksonJsonSerializer,
133+
"Generic Jackson 3"));
126134

127135
if (clusterAvailable()) {
128136

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /