From 4520ea8690fa8769a2d45658883eac51ea2453ed Mon Sep 17 00:00:00 2001 From: Chris Beams Date: Wed, 18 May 2011 08:53:46 +0000 Subject: [PATCH] Revert #processConfigBeanDefinitions to 3.0.x API Revert signature of ConfigurationClassPostProcessor#processConfigBeanDefinitions to its form found in the 3.0.x line. Refactorings made during 3.1 development caused otherwise package-private types such as ConfigurationClassBeanDefinitionReader to escape through this public method, causing issues for STS as well as being a general design issue. Upon review, the refactorings could easily be backed out in favor of a simpler approach, and this has been done. This also means that ConfigurationClassBeanDefinitionReader can return to package-private visibility, and this change has been made as well. Issue: SPR-8200 --- .../ConfigurationClassBeanDefinitionReader.java | 2 +- .../annotation/ConfigurationClassParser.java | 16 ++++------------ .../ConfigurationClassPostProcessor.java | 7 +++---- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java index d9e687b59e..d029dd93cc 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java @@ -64,7 +64,7 @@ import org.springframework.util.StringUtils; * @since 3.0 * @see ConfigurationClassParser */ -public class ConfigurationClassBeanDefinitionReader { +class ConfigurationClassBeanDefinitionReader { private static final Log logger = LogFactory.getLog(ConfigurationClassBeanDefinitionReader.class); diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index 0885b72a9d..43d567a57b 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -27,8 +27,6 @@ import java.util.Map; import java.util.Set; import java.util.Stack; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.parsing.Location; @@ -36,9 +34,7 @@ import org.springframework.beans.factory.parsing.Problem; import org.springframework.beans.factory.parsing.ProblemReporter; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.Environment; -import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourcePropertySource; @@ -70,8 +66,6 @@ import org.springframework.util.StringUtils; */ class ConfigurationClassParser { - private static final Log logger = LogFactory.getLog(ConfigurationClassParser.class); - private final MetadataReaderFactory metadataReaderFactory; private final ProblemReporter problemReporter; @@ -333,12 +327,10 @@ class ConfigurationClassParser { public CircularImportProblem(ConfigurationClass attemptedImport, Stack importStack, AnnotationMetadata metadata) { super(String.format("A circular @Import has been detected: " + - "Illegal attempt by @Configuration class '%s' to import class '%s' as '%s' is " + - "already present in the current import stack [%s]", - importStack.peek().getSimpleName(), attemptedImport.getSimpleName(), - attemptedImport.getSimpleName(), importStack), - new Location(importStack.peek().getResource(), metadata) - ); + "Illegal attempt by @Configuration class '%s' to import class '%s' as '%s' is " + + "already present in the current import stack [%s]", importStack.peek().getSimpleName(), + attemptedImport.getSimpleName(), attemptedImport.getSimpleName(), importStack), + new Location(importStack.peek().getResource(), metadata)); } } diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java index 597f452454..982741a406 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java @@ -196,8 +196,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo * Find and process all @Configuration classes in the given registry. */ private void processConfigurationClasses(BeanDefinitionRegistry registry) { - ConfigurationClassBeanDefinitionReader reader = getConfigurationClassBeanDefinitionReader(registry); - processConfigBeanDefinitions(reader, registry); + processConfigBeanDefinitions(registry); enhanceConfigurationClasses((ConfigurableListableBeanFactory)registry); } @@ -213,7 +212,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo * Build and validate a configuration model based on the registry of * {@link Configuration} classes. */ - public void processConfigBeanDefinitions(ConfigurationClassBeanDefinitionReader reader, BeanDefinitionRegistry registry) { + public void processConfigBeanDefinitions(BeanDefinitionRegistry registry) { Set configCandidates = new LinkedHashSet(); for (String beanName : registry.getBeanDefinitionNames()) { BeanDefinition beanDef = registry.getBeanDefinition(beanName); @@ -262,7 +261,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo } // Read the model and create bean definitions based on its content - reader.loadBeanDefinitions(parser.getConfigurationClasses()); + this.getConfigurationClassBeanDefinitionReader(registry).loadBeanDefinitions(parser.getConfigurationClasses()); // Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes if (registry instanceof SingletonBeanRegistry) {