From 4d3383242e5655631e44dee48ca7060add84f957 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 3 Jun 2013 12:15:47 -0700 Subject: [PATCH] Support EnvironmentAware ImportSelector/Registrar Add support for the EnvironmentAware interface with ImportSelector and ImportBeanDefinitionRegistrar implementations. Issue: SPR-10602 --- .../annotation/ConfigurationClassParser.java | 4 + .../ImportBeanDefinitionRegistrar.java | 3 +- .../context/annotation/ImportSelector.java | 1 + .../ImportBeanDefinitionRegistrarTests.java | 20 +++-- .../annotation/ImportSelectorTests.java | 80 ++++++++++++++++--- 5 files changed, 92 insertions(+), 16 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java index 294d94bb04f..0ac8c31e824 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java @@ -47,6 +47,7 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionReader; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanNameGenerator; +import org.springframework.context.EnvironmentAware; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.NestedIOException; import org.springframework.core.annotation.AnnotationAttributes; @@ -486,6 +487,9 @@ class ConfigurationClassParser { */ private void invokeAwareMethods(Object importStrategyBean) { if (importStrategyBean instanceof Aware) { + if (importStrategyBean instanceof EnvironmentAware) { + ((EnvironmentAware) importStrategyBean).setEnvironment(this.environment); + } if (importStrategyBean instanceof ResourceLoaderAware) { ((ResourceLoaderAware) importStrategyBean).setResourceLoader(this.resourceLoader); } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java b/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java index 648a8e92113..6795d6172c3 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2013 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. @@ -33,6 +33,7 @@ import org.springframework.core.type.AnnotationMetadata; * {@link org.springframework.beans.factory.Aware Aware} interfaces, and their respective * methods will be called prior to {@link #registerBeanDefinitions}: *