From dca40fec5945af963c5dc16cd4aca72f167223a7 Mon Sep 17 00:00:00 2001 From: Marius Bogoevici Date: Tue, 21 Jul 2015 21:21:46 -0400 Subject: [PATCH] Generate proper qualifiers for channel beans --- ...ageChannelBeanDefinitionRegistryUtils.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/utils/MessageChannelBeanDefinitionRegistryUtils.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/utils/MessageChannelBeanDefinitionRegistryUtils.java index 92dcbe259..9274a87b5 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/utils/MessageChannelBeanDefinitionRegistryUtils.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/utils/MessageChannelBeanDefinitionRegistryUtils.java @@ -48,22 +48,40 @@ import org.springframework.util.StringUtils; */ public abstract class MessageChannelBeanDefinitionRegistryUtils { + public static final String DEFAULT_INPUT_QUALIFIER_VALUE; + + public static final String DEFAULT_OUTPUT_QUALIFIER_VALUE; + + static { + DEFAULT_INPUT_QUALIFIER_VALUE = (String) ReflectionUtils.findMethod(Input.class, "value").getDefaultValue(); + DEFAULT_OUTPUT_QUALIFIER_VALUE = (String) ReflectionUtils.findMethod(Output.class, "value").getDefaultValue(); + } + public static void registerInputChannelBeanDefinition(String name, BeanDefinitionRegistry registry) { - registerChannelBeanDefinition(Input.class, name, registry); + registerInputChannelBeanDefinition(DEFAULT_INPUT_QUALIFIER_VALUE, name, registry); + } + + public static void registerInputChannelBeanDefinition(String qualifierValue, String name, + BeanDefinitionRegistry registry) { + registerChannelBeanDefinition(Input.class, qualifierValue, name, registry); } public static void registerOutputChannelBeanDefinition(String name, BeanDefinitionRegistry registry) { - registerChannelBeanDefinition(Output.class, name, registry); + registerOutputChannelBeanDefinition(DEFAULT_OUTPUT_QUALIFIER_VALUE, name, registry); + } + public static void registerOutputChannelBeanDefinition(String qualifierValue, String name,BeanDefinitionRegistry registry) { + registerChannelBeanDefinition(Output.class, qualifierValue, name, registry); } private static void registerChannelBeanDefinition( - Class qualifier, String name, + Class qualifier, String qualifierValue, String name, BeanDefinitionRegistry registry) { + RootBeanDefinition rootBeanDefinition = new RootBeanDefinition( DirectChannelFactoryBean.class); - rootBeanDefinition.addQualifier(new AutowireCandidateQualifier(qualifier)); + rootBeanDefinition.addQualifier(new AutowireCandidateQualifier(qualifier, qualifierValue)); registry.registerBeanDefinition(name, rootBeanDefinition); } @@ -76,12 +94,12 @@ public abstract class MessageChannelBeanDefinitionRegistryUtils { Input input = AnnotationUtils.findAnnotation(method, Input.class); if (input != null) { String name = getName(input, method); - registerInputChannelBeanDefinition(name, registry); + registerInputChannelBeanDefinition(name, input.value(), registry); } Output output = AnnotationUtils.findAnnotation(method, Output.class); if (output != null) { String name = getName(output, method); - registerOutputChannelBeanDefinition(name, registry); + registerOutputChannelBeanDefinition(name, output.value(), registry); } }