Skip to content

Commit dad2061

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 864a318 commit dad2061

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,9 @@ public synchronized void addTrustedPackages(String... packages) {
531531

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

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

+13
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)