From 6c8e6313a4d7ae314221bbd3d039bb388366921b Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 21 Sep 2015 14:19:07 +0100 Subject: [PATCH] Use AnnotationUtils to synthesise annotation --- .../stream/config/BindingBeansRegistrar.java | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingBeansRegistrar.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingBeansRegistrar.java index eb5046de6..8103b2b00 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingBeansRegistrar.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingBeansRegistrar.java @@ -16,15 +16,13 @@ package org.springframework.cloud.stream.config; -import java.util.ArrayList; -import java.util.List; - import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.cloud.stream.binding.BindingBeanDefinitionRegistryUtils; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationAttributes; +import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.type.AnnotationMetadata; import org.springframework.util.ClassUtils; @@ -41,7 +39,7 @@ public class BindingBeansRegistrar implements ImportBeanDefinitionRegistrar { AnnotationAttributes attrs = AnnotatedElementUtils.getMergedAnnotationAttributes( ClassUtils.resolveClassName(metadata.getClassName(), null), EnableBinding.class); - for (Class type : collectClasses(attrs.get("value"))) { + for (Class type : collectClasses(attrs, metadata.getClassName())) { BindingBeanDefinitionRegistryUtils.registerChannelBeanDefinitions(type, type.getName(), registry); BindingBeanDefinitionRegistryUtils.registerChannelsQualifiedBeanDefinitions( @@ -50,14 +48,10 @@ public class BindingBeansRegistrar implements ImportBeanDefinitionRegistrar { } } - private List> collectClasses(Object object) { - ArrayList> result = new ArrayList>(); - for (Object value : (Object[]) object) { - if (value instanceof Class && void.class != value) { - result.add((Class) value); - } - } - return result; + private Class[] collectClasses(AnnotationAttributes attrs, String className) { + EnableBinding enableBinding = AnnotationUtils.synthesizeAnnotation(attrs, + EnableBinding.class, ClassUtils.resolveClassName(className, null)); + return enableBinding.value(); } }