Skip to content

Commit 682ff7a

Browse files
m-ibotgaryrussell
authored andcommitted
GH-2135: Fix NPE in JsonDeserializer
Resolves #2135 NPE when getting the package of an array class.
1 parent 4d34cb9 commit 682ff7a

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

spring-kafka/src/main/java/org/springframework/kafka/support/serializer/JsonDeserializer.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,8 +483,11 @@ public void addTrustedPackages(String... packages) {
483483

484484
private void addMappingsToTrusted(Map<String, Class<?>> mappings) {
485485
mappings.values().forEach(clazz -> {
486-
doAddTrustedPackages(clazz.getPackage().getName());
487-
doAddTrustedPackages(clazz.getPackage().getName() + ".*");
486+
String packageName = clazz.isArray()
487+
? clazz.getComponentType().getPackage().getName()
488+
: clazz.getPackage().getName();
489+
doAddTrustedPackages(packageName);
490+
doAddTrustedPackages(packageName + ".*");
488491
});
489492
}
490493

spring-kafka/src/test/java/org/springframework/kafka/support/serializer/JsonSerializationTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,19 @@ void testTrustMappingPackages() {
304304
.contains(Foo.class.getPackageName() + ".*");
305305
}
306306

307+
@SuppressWarnings("unchecked")
308+
@Test
309+
void testTrustMappingPackagesForArray() {
310+
JsonDeserializer<Object> deser = new JsonDeserializer<>();
311+
Map<String, Object> props = Collections.singletonMap(JsonDeserializer.TYPE_MAPPINGS,
312+
"foo:" + Foo[].class.getName());
313+
deser.configure(props, false);
314+
assertThat(KafkaTestUtils.getPropertyValue(deser, "typeMapper.trustedPackages", Set.class))
315+
.contains(Foo.class.getPackageName());
316+
assertThat(KafkaTestUtils.getPropertyValue(deser, "typeMapper.trustedPackages", Set.class))
317+
.contains(Foo.class.getPackageName() + ".*");
318+
}
319+
307320
@SuppressWarnings("unchecked")
308321
@Test
309322
void testTrustMappingPackagesWithAll() {

0 commit comments

Comments
 (0)