From 46f83f7afb5c2c3a8fbadbdc9eb6b408f59e21e2 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 1 Jul 2021 15:28:06 -0400 Subject: [PATCH] Fix NPE for `@Indexed` in the MessagingGatewayReg The `@Indexed` comes without any attributes, but it is included into a chain via `importingClassMetadata.getMetaAnnotationTypes(ann)`. So, skip attributes from meta annotation when it is `null` **Cherry-pick to `5.4.x` & `5.3.x`** --- .../integration/annotation/MessagingGateway.java | 1 - .../integration/config/MessagingGatewayRegistrar.java | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/annotation/MessagingGateway.java b/spring-integration-core/src/main/java/org/springframework/integration/annotation/MessagingGateway.java index 4b12031053..92e6949eb3 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/annotation/MessagingGateway.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/annotation/MessagingGateway.java @@ -45,7 +45,6 @@ import org.springframework.stereotype.Indexed; */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) -@Documented @Indexed public @interface MessagingGateway { diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/MessagingGatewayRegistrar.java b/spring-integration-core/src/main/java/org/springframework/integration/config/MessagingGatewayRegistrar.java index 9980d73903..da9019fbe8 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/MessagingGatewayRegistrar.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/MessagingGatewayRegistrar.java @@ -199,7 +199,10 @@ public class MessagingGatewayRegistrar implements ImportBeanDefinitionRegistrar Set chain = importingClassMetadata.getMetaAnnotationTypes(ann); if (chain.contains(MessagingGateway.class.getName())) { for (String meta : chain) { - valuesHierarchy.add(importingClassMetadata.getAllAnnotationAttributes(meta)); + MultiValueMap attributes = importingClassMetadata.getAllAnnotationAttributes(meta); + if (attributes != null) { + valuesHierarchy.add(attributes); + } } } }