From d349ea9ea669cce4bbcf7c15b0bc6195628406b1 Mon Sep 17 00:00:00 2001 From: David Syer Date: Tue, 17 Nov 2009 09:53:10 +0000 Subject: [PATCH] RESOLVED - issue SPR-6366: Cannot import bean definitions using classpath*: resource location http://jira.springframework.org/browse/SPR-6366 git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2444 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../xml/DefaultBeanDefinitionDocumentReader.java | 4 +++- .../factory/xml/XmlBeanDefinitionReaderTests.java | 14 ++++++++++++++ .../springframework/beans/factory/xml/import.xml | 8 ++++++++ .../beans/factory/xml/importPattern.xml | 8 ++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/import.xml create mode 100644 org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/importPattern.xml diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java index aa5ccc0ec2d..a7f35c93987 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.core.io.Resource; +import org.springframework.core.io.support.ResourcePatternUtils; import org.springframework.util.ResourceUtils; import org.springframework.util.StringUtils; import org.springframework.util.SystemPropertyUtils; @@ -172,9 +173,10 @@ public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocume boolean absoluteLocation = false; try { - absoluteLocation = ResourceUtils.toURI(location).isAbsolute(); + absoluteLocation = ResourcePatternUtils.isUrl(location) || ResourceUtils.toURI(location).isAbsolute(); } catch (Exception ex) { // cannot convert to an URI, considering the location relative + // unless it is the well-known Spring prefix classpath*: } // check the diff --git a/org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReaderTests.java b/org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReaderTests.java index ca4090771c6..8af531ca8f9 100644 --- a/org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReaderTests.java +++ b/org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReaderTests.java @@ -82,6 +82,20 @@ public class XmlBeanDefinitionReaderTests extends TestCase { testBeanDefinitions(registry); } + public void testWithImport() { + SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();; + Resource resource = new ClassPathResource("import.xml", getClass()); + new XmlBeanDefinitionReader(registry).loadBeanDefinitions(resource); + testBeanDefinitions(registry); + } + + public void testWithWildcardImport() { + SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();; + Resource resource = new ClassPathResource("importPattern.xml", getClass()); + new XmlBeanDefinitionReader(registry).loadBeanDefinitions(resource); + testBeanDefinitions(registry); + } + public void testWithInputSource() { try { SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();; diff --git a/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/import.xml b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/import.xml new file mode 100644 index 00000000000..278e5dff811 --- /dev/null +++ b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/import.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/importPattern.xml b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/importPattern.xml new file mode 100644 index 00000000000..085a29d85fd --- /dev/null +++ b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/importPattern.xml @@ -0,0 +1,8 @@ + + + + + + + +