diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java index 7236aa61c0f..8cdd39f1ed0 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java @@ -27,6 +27,7 @@ import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; @@ -58,6 +59,7 @@ import org.springframework.beans.factory.support.ManagedProperties; import org.springframework.beans.factory.support.ManagedSet; import org.springframework.beans.factory.support.MethodOverrides; import org.springframework.beans.factory.support.ReplaceOverride; +import org.springframework.core.env.DefaultEnvironment; import org.springframework.core.env.Environment; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -265,6 +267,17 @@ public class BeanDefinitionParserDelegate { this.environment = environment; } + /** + * Create a new BeanDefinitionParserDelegate associated with the + * supplied {@link XmlReaderContext} and a new {@link DefaultEnvironment}. + * @deprecated since Spring 3.1 in favor of + * {@link #BeanDefinitionParserDelegate(XmlReaderContext, Environment)} + */ + @Deprecated + public BeanDefinitionParserDelegate(XmlReaderContext readerContext) { + this(readerContext, new DefaultEnvironment()); + } + /** * Get the {@link XmlReaderContext} associated with this helper instance. */ diff --git a/org.springframework.context/src/main/java/org/springframework/context/config/AbstractSpecificationBeanDefinitionParser.java b/org.springframework.context/src/main/java/org/springframework/context/config/AbstractSpecificationBeanDefinitionParser.java index 61756a97e85..58472b55142 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/config/AbstractSpecificationBeanDefinitionParser.java +++ b/org.springframework.context/src/main/java/org/springframework/context/config/AbstractSpecificationBeanDefinitionParser.java @@ -24,6 +24,7 @@ import org.springframework.beans.factory.parsing.ProblemReporter; import org.springframework.beans.factory.parsing.ReaderContext; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; +import org.springframework.core.env.DefaultEnvironment; import org.w3c.dom.Element; /** @@ -54,11 +55,19 @@ public abstract class AbstractSpecificationBeanDefinitionParser implements BeanD specContext.setRegistry(parserContext.getRegistry()); specContext.setRegistrar(new ComponentRegistrarAdapter(parserContext)); specContext.setResourceLoader(parserContext.getReaderContext().getResourceLoader()); - specContext.setEnvironment(parserContext.getDelegate().getEnvironment()); + try { + // again, STS constraints around the addition of the new getEnvironment() + // method in 3.1.0 (it's not present in STS current spring version, 3.0.5) + // TODO 3.1 GA: remove this block prior to 3.1 GA + specContext.setEnvironment(parserContext.getDelegate().getEnvironment()); + } catch (NoSuchMethodError ex) { + specContext.setEnvironment(new DefaultEnvironment()); + } try { // access the reader context's problem reporter reflectively in order to // compensate for tooling (STS) constraints around introduction of changes // to parser context / reader context classes. + // TODO 3.1 GA: remove this block prior to 3.1 GA Field field = ReaderContext.class.getDeclaredField("problemReporter"); field.setAccessible(true); ProblemReporter problemReporter = (ProblemReporter)field.get(parserContext.getReaderContext());