From f288060ad8f0d007f1541213130d006729b9ec40 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 15 Jun 2011 15:40:12 +0000 Subject: [PATCH] restored support for String-to-ContextResource conversion (SPR-8383) --- .../beans/TypeConverterDelegate.java | 7 +++-- .../support/ResourceEditorRegistrar.java | 4 ++- .../beans/ResourceTestBean.java | 29 +++++++++++++------ ...ApplicationContextTests-resourceImport.xml | 3 ++ 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 0d9d11437a5..b102f3aa334 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 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. @@ -26,12 +26,12 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + import org.springframework.core.CollectionFactory; import org.springframework.core.MethodParameter; import org.springframework.core.convert.ConversionFailedException; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; -import org.springframework.core.type.filter.TypeFilter; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -224,7 +224,8 @@ class TypeConverterDelegate { } if (editor != null) { msg.append(": PropertyEditor [").append(editor.getClass().getName()).append( - "] returned inappropriate value"); + "] returned inappropriate value of type [").append( + ClassUtils.getDescriptiveType(convertedValue)).append("]"); throw new IllegalArgumentException(msg.toString()); } else { diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java b/org.springframework.beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java index 7a746089f77..b1c537ed392 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/support/ResourceEditorRegistrar.java @@ -34,9 +34,10 @@ import org.springframework.beans.propertyeditors.InputSourceEditor; import org.springframework.beans.propertyeditors.InputStreamEditor; import org.springframework.beans.propertyeditors.URIEditor; import org.springframework.beans.propertyeditors.URLEditor; -import org.springframework.core.env.StandardEnvironment; import org.springframework.core.env.Environment; import org.springframework.core.env.PropertyResolver; +import org.springframework.core.env.StandardEnvironment; +import org.springframework.core.io.ContextResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceEditor; import org.springframework.core.io.ResourceLoader; @@ -109,6 +110,7 @@ public class ResourceEditorRegistrar implements PropertyEditorRegistrar { public void registerCustomEditors(PropertyEditorRegistry registry) { ResourceEditor baseEditor = new ResourceEditor(this.resourceLoader, this.propertyResolver); doRegisterEditor(registry, Resource.class, baseEditor); + doRegisterEditor(registry, ContextResource.class, baseEditor); doRegisterEditor(registry, InputStream.class, new InputStreamEditor(baseEditor)); doRegisterEditor(registry, InputSource.class, new InputSourceEditor(baseEditor)); doRegisterEditor(registry, File.class, new FileEditor(baseEditor)); diff --git a/org.springframework.context/src/test/java/org/springframework/beans/ResourceTestBean.java b/org.springframework.context/src/test/java/org/springframework/beans/ResourceTestBean.java index bfe6daffe24..0831e05c584 100644 --- a/org.springframework.context/src/test/java/org/springframework/beans/ResourceTestBean.java +++ b/org.springframework.context/src/test/java/org/springframework/beans/ResourceTestBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 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. @@ -19,6 +19,7 @@ package org.springframework.beans; import java.io.InputStream; import java.util.Map; +import org.springframework.core.io.ContextResource; import org.springframework.core.io.Resource; /** @@ -29,6 +30,8 @@ public class ResourceTestBean { private Resource resource; + private ContextResource contextResource; + private InputStream inputStream; private Resource[] resourceArray; @@ -47,22 +50,30 @@ public class ResourceTestBean { } - public void setResource(Resource resource) { - this.resource = resource; - } - - public void setInputStream(InputStream inputStream) { - this.inputStream = inputStream; - } - public Resource getResource() { return resource; } + public void setResource(Resource resource) { + this.resource = resource; + } + + public ContextResource getContextResource() { + return contextResource; + } + + public void setContextResource(ContextResource contextResource) { + this.contextResource = contextResource; + } + public InputStream getInputStream() { return inputStream; } + public void setInputStream(InputStream inputStream) { + this.inputStream = inputStream; + } + public Resource[] getResourceArray() { return resourceArray; } diff --git a/org.springframework.context/src/test/java/org/springframework/context/support/ClassPathXmlApplicationContextTests-resourceImport.xml b/org.springframework.context/src/test/java/org/springframework/context/support/ClassPathXmlApplicationContextTests-resourceImport.xml index 0788f511084..717148bc4c2 100644 --- a/org.springframework.context/src/test/java/org/springframework/context/support/ClassPathXmlApplicationContextTests-resourceImport.xml +++ b/org.springframework.context/src/test/java/org/springframework/context/support/ClassPathXmlApplicationContextTests-resourceImport.xml @@ -7,6 +7,9 @@ test.properties + + testBeans.properties + classpath:org/springframework/beans/factory/xml/test.properties