Skip to content

Commit 841a6b7

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 796624e commit 841a6b7

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
@@ -531,8 +531,11 @@ public synchronized void addTrustedPackages(String... packages) {
531531

532532
private void addMappingsToTrusted(Map<String, Class<?>> mappings) {
533533
mappings.values().forEach(clazz -> {
534-
doAddTrustedPackages(clazz.getPackage().getName());
535-
doAddTrustedPackages(clazz.getPackage().getName() + ".*");
534+
String packageName = clazz.isArray()
535+
? clazz.getComponentType().getPackage().getName()
536+
: clazz.getPackage().getName();
537+
doAddTrustedPackages(packageName);
538+
doAddTrustedPackages(packageName + ".*");
536539
});
537540
}
538541

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
@@ -310,6 +310,19 @@ void testTrustMappingPackages() {
310310
.contains(Foo.class.getPackageName() + ".*");
311311
}
312312

313+
@SuppressWarnings("unchecked")
314+
@Test
315+
void testTrustMappingPackagesForArray() {
316+
JsonDeserializer<Object> deser = new JsonDeserializer<>();
317+
Map<String, Object> props = Collections.singletonMap(JsonDeserializer.TYPE_MAPPINGS,
318+
"foo:" + Foo[].class.getName());
319+
deser.configure(props, false);
320+
assertThat(KafkaTestUtils.getPropertyValue(deser, "typeMapper.trustedPackages", Set.class))
321+
.contains(Foo.class.getPackageName());
322+
assertThat(KafkaTestUtils.getPropertyValue(deser, "typeMapper.trustedPackages", Set.class))
323+
.contains(Foo.class.getPackageName() + ".*");
324+
}
325+
313326
@SuppressWarnings("unchecked")
314327
@Test
315328
void testTrustMappingPackagesWithAll() {

0 commit comments

Comments
 (0)