From eccefd13438641b9d9d0086f35c4e4b7a92e1d77 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Fri, 23 Dec 2016 16:23:20 -0500 Subject: [PATCH] Make use of new extensions point in IntegrationComponentScanRegistrar SI 5 has made IntegrationComponentScanRegistrar more extensible by offering a method for getting the back packages that can be overridden. This commit takes advantage of that change by removing our creation of "fake" annotation metadata and overriding getBackPackages to return the auto-configuration packages instead. Closes gh-7744 --- ...grationAutoConfigurationScanRegistrar.java | 40 +++++-------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationScanRegistrar.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationScanRegistrar.java index 87f2653b60..9836a578bb 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationScanRegistrar.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationScanRegistrar.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,8 @@ package org.springframework.boot.autoconfigure.integration; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.Collection; +import java.util.Collections; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; @@ -50,33 +49,16 @@ class IntegrationAutoConfigurationScanRegistrar extends IntegrationComponentScan @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, final BeanDefinitionRegistry registry) { - super.registerBeanDefinitions( - new IntegrationComponentScanConfigurationMetaData(this.beanFactory), - registry); + super.registerBeanDefinitions(new StandardAnnotationMetadata( + IntegrationComponentScanConfiguration.class, true), registry); } - private static class IntegrationComponentScanConfigurationMetaData - extends StandardAnnotationMetadata { - - private final BeanFactory beanFactory; - - IntegrationComponentScanConfigurationMetaData(BeanFactory beanFactory) { - super(IntegrationComponentScanConfiguration.class, true); - this.beanFactory = beanFactory; - } - - @Override - public Map getAnnotationAttributes(String annotationName) { - Map attributes = super.getAnnotationAttributes( - annotationName); - if (IntegrationComponentScan.class.getName().equals(annotationName) - && AutoConfigurationPackages.has(this.beanFactory)) { - List packages = AutoConfigurationPackages.get(this.beanFactory); - attributes = new LinkedHashMap(attributes); - attributes.put("value", packages.toArray(new String[packages.size()])); - } - return attributes; - } + @Override + protected Collection getBasePackages( + AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { + return AutoConfigurationPackages.has(this.beanFactory) + ? AutoConfigurationPackages.get(this.beanFactory) + : Collections.emptyList(); } @IntegrationComponentScan