From 6fe85c2dd4ab4f9ec2d6cd2c6f78027a40c992ff Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 10 Mar 2015 14:41:55 +0100 Subject: [PATCH] PropertyResourceConfigurerTests accepts "." in operating system name Issue: SPR-12794 --- .../PropertyResourceConfigurerTests.java | 215 +++++++----------- 1 file changed, 88 insertions(+), 127 deletions(-) diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/config/PropertyResourceConfigurerTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/config/PropertyResourceConfigurerTests.java index 12e570774f9..6cccbc6d015 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/config/PropertyResourceConfigurerTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/config/PropertyResourceConfigurerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -27,7 +27,6 @@ import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import java.util.prefs.PreferencesFactory; -import org.junit.Before; import org.junit.Test; import org.springframework.beans.MutablePropertyValues; @@ -53,13 +52,13 @@ import static org.springframework.tests.TestResourceUtils.*; * {@link PropertyPlaceholderConfigurer}, {@link PropertyOverrideConfigurer} and * {@link PreferencesPlaceholderConfigurer}. * - * @see PropertyPlaceholderConfigurerTests - * @since 02.10.2003 * @author Juergen Hoeller * @author Chris Beams * @author Phillip Webb + * @since 02.10.2003 + * @see PropertyPlaceholderConfigurerTests */ -public final class PropertyResourceConfigurerTests { +public class PropertyResourceConfigurerTests { static { System.setProperty("java.util.prefs.PreferencesFactory", MockPreferencesFactory.class.getName()); @@ -70,23 +69,15 @@ public final class PropertyResourceConfigurerTests { private static final Resource XTEST_PROPS = qualifiedResource(CLASS, "xtest.properties"); // does not exist private static final Resource TEST_PROPS_XML = qualifiedResource(CLASS, "test.properties.xml"); - private DefaultListableBeanFactory factory; + private final DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); - @Before - public void setUp() { - factory = new DefaultListableBeanFactory(); - } @Test public void testPropertyOverrideConfigurer() { - BeanDefinition def1 = BeanDefinitionBuilder - .genericBeanDefinition(TestBean.class) - .getBeanDefinition(); + BeanDefinition def1 = BeanDefinitionBuilder.genericBeanDefinition(TestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb1", def1); - BeanDefinition def2 = BeanDefinitionBuilder - .genericBeanDefinition(TestBean.class) - .getBeanDefinition(); + BeanDefinition def2 = BeanDefinitionBuilder.genericBeanDefinition(TestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb2", def2); PropertyOverrideConfigurer poc1; @@ -123,9 +114,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithNestedProperty() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc; @@ -143,9 +132,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithNestedPropertyAndDotInBeanName() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("my.tb", def); PropertyOverrideConfigurer poc; @@ -164,9 +151,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithNestedMapPropertyAndDotInMapKey() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc; @@ -184,9 +169,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithHeldProperties() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(PropertiesHolder.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(PropertiesHolder.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc; @@ -200,23 +183,9 @@ public final class PropertyResourceConfigurerTests { assertEquals("true", tb.getHeldProperties().getProperty("mail.smtp.auth")); } - static class PropertiesHolder { - private Properties props = new Properties(); - - public Properties getHeldProperties() { - return props; - } - - public void setHeldProperties(Properties props) { - this.props = props; - } - } - @Test public void testPropertyOverrideConfigurerWithPropertiesFile() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc = new PropertyOverrideConfigurer(); @@ -230,13 +199,11 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithInvalidPropertiesFile() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc = new PropertyOverrideConfigurer(); - poc.setLocations(new Resource[] { TEST_PROPS, XTEST_PROPS }); + poc.setLocations(TEST_PROPS, XTEST_PROPS); poc.setIgnoreResourceNotFound(true); poc.postProcessBeanFactory(factory); @@ -247,9 +214,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithPropertiesXmlFile() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); PropertyOverrideConfigurer poc = new PropertyOverrideConfigurer(); @@ -263,9 +228,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyOverrideConfigurerWithConvertProperties() { - BeanDefinition def = BeanDefinitionBuilder - .genericBeanDefinition(IndexedTestBean.class) - .getBeanDefinition(); + BeanDefinition def = BeanDefinitionBuilder.genericBeanDefinition(IndexedTestBean.class).getBeanDefinition(); factory.registerBeanDefinition("tb", def); ConvertingOverrideConfigurer bfpp = new ConvertingOverrideConfigurer(); @@ -389,7 +352,6 @@ public final class PropertyResourceConfigurerTests { cas.addGenericArgumentValue("${var}name${age}"); MutablePropertyValues pvs = new MutablePropertyValues(); - pvs.add("stringArray", new String[] {"${os.name}", "${age}"}); List friends = new ManagedList(); @@ -409,7 +371,7 @@ public final class PropertyResourceConfigurerTests { someMap.put("key1", new RuntimeBeanReference("${ref}")); someMap.put("key2", "${age}name"); MutablePropertyValues innerPvs = new MutablePropertyValues(); - innerPvs.add("touchy", "${os.name}"); + innerPvs.add("country", "${os.name}"); RootBeanDefinition innerBd = new RootBeanDefinition(TestBean.class); innerBd.setPropertyValues(innerPvs); someMap.put("key3", innerBd); @@ -459,30 +421,28 @@ public final class PropertyResourceConfigurerTests { TestBean inner2 = (TestBean) tb2.getSomeMap().get("mykey4"); assertEquals(0, inner1.getAge()); assertEquals(null, inner1.getName()); - assertEquals(System.getProperty("os.name"), inner1.getTouchy()); + assertEquals(System.getProperty("os.name"), inner1.getCountry()); assertEquals(98, inner2.getAge()); assertEquals("namemyvarmyvar${", inner2.getName()); - assertEquals(System.getProperty("os.name"), inner2.getTouchy()); + assertEquals(System.getProperty("os.name"), inner2.getCountry()); } @Test public void testPropertyPlaceholderConfigurerWithSystemPropertyFallback() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${os.name}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("country", "${os.name}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.postProcessBeanFactory(factory); TestBean tb = (TestBean) factory.getBean("tb"); - assertEquals(System.getProperty("os.name"), tb.getTouchy()); + assertEquals(System.getProperty("os.name"), tb.getCountry()); } @Test public void testPropertyPlaceholderConfigurerWithSystemPropertyNotUsed() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${os.name}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("country", "${os.name}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); Properties props = new Properties(); @@ -491,14 +451,13 @@ public final class PropertyResourceConfigurerTests { ppc.postProcessBeanFactory(factory); TestBean tb = (TestBean) factory.getBean("tb"); - assertEquals("myos", tb.getTouchy()); + assertEquals("myos", tb.getCountry()); } @Test public void testPropertyPlaceholderConfigurerWithOverridingSystemProperty() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${os.name}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("country", "${os.name}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); Properties props = new Properties(); @@ -508,14 +467,13 @@ public final class PropertyResourceConfigurerTests { ppc.postProcessBeanFactory(factory); TestBean tb = (TestBean) factory.getBean("tb"); - assertEquals(System.getProperty("os.name"), tb.getTouchy()); + assertEquals(System.getProperty("os.name"), tb.getCountry()); } @Test public void testPropertyPlaceholderConfigurerWithUnresolvableSystemProperty() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${user.dir}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("touchy", "${user.dir}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_NEVER); @@ -532,9 +490,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithUnresolvablePlaceholder() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${ref}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${ref}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); @@ -550,9 +507,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithIgnoreUnresolvablePlaceholder() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${ref}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${ref}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.setIgnoreUnresolvablePlaceholders(true); @@ -564,9 +520,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithEmptyStringAsNull() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.setNullValue(""); @@ -578,9 +533,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithEmptyStringInPlaceholderAsNull() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${ref}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${ref}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.setNullValue(""); @@ -595,9 +549,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithNestedPlaceholderInKey() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${my${key}key}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${my${key}key}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); Properties props = new Properties(); @@ -612,8 +565,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithPlaceholderInAlias() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class).getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class).getBeanDefinition()); factory.registerAlias("tb", "${alias}"); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); @@ -629,8 +581,7 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithSelfReferencingPlaceholderInAlias() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class).getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class).getBeanDefinition()); factory.registerAlias("tb", "${alias}"); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); @@ -646,11 +597,10 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithCircularReference() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("age", "${age}") - .addPropertyValue("name", "name${var}") - .getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("age", "${age}") + .addPropertyValue("name", "name${var}") + .getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); Properties props = new Properties(); @@ -670,9 +620,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithDefaultProperties() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${test}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("touchy", "${test}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); Properties props = new Properties(); @@ -686,9 +635,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithInlineDefault() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${test:mytest}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("touchy", "${test:mytest}").getBeanDefinition()); PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); ppc.postProcessBeanFactory(factory); @@ -699,9 +647,8 @@ public final class PropertyResourceConfigurerTests { @Test public void testPropertyPlaceholderConfigurerWithAliases() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("touchy", "${test}").getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("touchy", "${test}").getBeanDefinition()); factory.registerAlias("tb", "${myAlias}"); factory.registerAlias("${myTarget}", "alias2"); @@ -724,12 +671,11 @@ public final class PropertyResourceConfigurerTests { @Test public void testPreferencesPlaceholderConfigurer() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${myName}") - .addPropertyValue("age", "${myAge}") - .addPropertyValue("touchy", "${myTouchy}") - .getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${myName}") + .addPropertyValue("age", "${myAge}") + .addPropertyValue("touchy", "${myTouchy}") + .getBeanDefinition()); PreferencesPlaceholderConfigurer ppc = new PreferencesPlaceholderConfigurer(); Properties props = new Properties(); @@ -752,12 +698,11 @@ public final class PropertyResourceConfigurerTests { @Test public void testPreferencesPlaceholderConfigurerWithCustomTreePaths() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${myName}") - .addPropertyValue("age", "${myAge}") - .addPropertyValue("touchy", "${myTouchy}") - .getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${myName}") + .addPropertyValue("age", "${myAge}") + .addPropertyValue("touchy", "${myTouchy}") + .getBeanDefinition()); PreferencesPlaceholderConfigurer ppc = new PreferencesPlaceholderConfigurer(); Properties props = new Properties(); @@ -782,12 +727,11 @@ public final class PropertyResourceConfigurerTests { @Test public void testPreferencesPlaceholderConfigurerWithPathInPlaceholder() { - factory.registerBeanDefinition("tb", - genericBeanDefinition(TestBean.class) - .addPropertyValue("name", "${mypath/myName}") - .addPropertyValue("age", "${myAge}") - .addPropertyValue("touchy", "${myotherpath/myTouchy}") - .getBeanDefinition()); + factory.registerBeanDefinition("tb", genericBeanDefinition(TestBean.class) + .addPropertyValue("name", "${mypath/myName}") + .addPropertyValue("age", "${myAge}") + .addPropertyValue("touchy", "${myotherpath/myTouchy}") + .getBeanDefinition()); PreferencesPlaceholderConfigurer ppc = new PreferencesPlaceholderConfigurer(); Properties props = new Properties(); @@ -811,6 +755,20 @@ public final class PropertyResourceConfigurerTests { } + static class PropertiesHolder { + + private Properties props = new Properties(); + + public Properties getHeldProperties() { + return props; + } + + public void setHeldProperties(Properties props) { + this.props = props; + } + } + + private static class ConvertingOverrideConfigurer extends PropertyOverrideConfigurer { @Override @@ -819,26 +777,28 @@ public final class PropertyResourceConfigurerTests { } } + /** * {@link PreferencesFactory} to create {@link MockPreferences}. */ public static class MockPreferencesFactory implements PreferencesFactory { - private Preferences systemRoot = new MockPreferences(); + private final Preferences userRoot = new MockPreferences(); - private Preferences userRoot = new MockPreferences(); + private final Preferences systemRoot = new MockPreferences(); @Override public Preferences systemRoot() { - return systemRoot; + return this.systemRoot; } @Override public Preferences userRoot() { - return userRoot; + return this.userRoot; } } + /** * Mock implementation of {@link Preferences} that behaves the same regardless of the * underlying operating system and will never throw security exceptions. @@ -904,4 +864,5 @@ public final class PropertyResourceConfigurerTests { protected void flushSpi() throws BackingStoreException { } } + }