@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2015 the original author or authors .
* Copyright 2002 - 2019 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 .
@ -25,6 +25,7 @@ import java.net.URI;
@@ -25,6 +25,7 @@ import java.net.URI;
import java.net.URL ;
import java.security.AccessControlException ;
import java.security.Permission ;
import java.util.Optional ;
import java.util.Properties ;
import org.apache.commons.logging.Log ;
@ -45,7 +46,7 @@ import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -45,7 +46,7 @@ import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext ;
import org.springframework.context.annotation.AnnotationConfigUtils ;
import org.springframework.context.support.GenericApplicationContext ;
import org.springframework.core.convert.converter.Converter ;
import org.springframework.core.convert.support.DefaultConversionService ;
import org.springframework.core.convert.support.GenericConversionService ;
import org.springframework.core.io.ClassPathResource ;
import org.springframework.core.io.Resource ;
@ -61,6 +62,7 @@ import static org.junit.Assert.*;
@@ -61,6 +62,7 @@ import static org.junit.Assert.*;
/ * *
* @author Juergen Hoeller
* @author Sam Brannen
* @since 3 . 0
* /
public class ApplicationContextExpressionTests {
@ -100,6 +102,8 @@ public class ApplicationContextExpressionTests {
@@ -100,6 +102,8 @@ public class ApplicationContextExpressionTests {
}
} ) ;
ac . getBeanFactory ( ) . setConversionService ( new DefaultConversionService ( ) ) ;
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer ( ) ;
Properties placeholders = new Properties ( ) ;
placeholders . setProperty ( "code" , "123" ) ;
@ -174,6 +178,9 @@ public class ApplicationContextExpressionTests {
@@ -174,6 +178,9 @@ public class ApplicationContextExpressionTests {
System . getProperties ( ) . put ( "country" , "UK" ) ;
assertEquals ( "123 UK" , tb3 . country ) ;
assertEquals ( "123 UK" , tb3 . countryFactory . getObject ( ) ) ;
assertEquals ( "123" , tb3 . optionalValue1 . get ( ) ) ;
assertEquals ( "123" , tb3 . optionalValue2 . get ( ) ) ;
assertFalse ( tb3 . optionalValue3 . isPresent ( ) ) ;
assertSame ( tb0 , tb3 . tb ) ;
tb3 = ( ValueTestBean ) SerializationTestUtils . serializeAndDeserialize ( tb3 ) ;
@ -207,12 +214,7 @@ public class ApplicationContextExpressionTests {
@@ -207,12 +214,7 @@ public class ApplicationContextExpressionTests {
GenericApplicationContext ac = new GenericApplicationContext ( ) ;
AnnotationConfigUtils . registerAnnotationConfigProcessors ( ac ) ;
GenericConversionService cs = new GenericConversionService ( ) ;
cs . addConverter ( String . class , String . class , new Converter < String , String > ( ) {
@Override
public String convert ( String source ) {
return source . trim ( ) ;
}
} ) ;
cs . addConverter ( String . class , String . class , String : : trim ) ;
ac . getBeanFactory ( ) . registerSingleton ( GenericApplicationContext . CONVERSION_SERVICE_BEAN_NAME , cs ) ;
RootBeanDefinition rbd = new RootBeanDefinition ( PrototypeTestBean . class ) ;
rbd . setScope ( RootBeanDefinition . SCOPE_PROTOTYPE ) ;
@ -274,8 +276,7 @@ public class ApplicationContextExpressionTests {
@@ -274,8 +276,7 @@ public class ApplicationContextExpressionTests {
@Test
public void systemPropertiesSecurityManager ( ) {
GenericApplicationContext ac = new GenericApplicationContext ( ) ;
AnnotationConfigUtils . registerAnnotationConfigProcessors ( ac ) ;
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext ( ) ;
GenericBeanDefinition bd = new GenericBeanDefinition ( ) ;
bd . setBeanClass ( TestBean . class ) ;
@ -311,8 +312,7 @@ public class ApplicationContextExpressionTests {
@@ -311,8 +312,7 @@ public class ApplicationContextExpressionTests {
@Test
public void stringConcatenationWithDebugLogging ( ) {
GenericApplicationContext ac = new GenericApplicationContext ( ) ;
AnnotationConfigUtils . registerAnnotationConfigProcessors ( ac ) ;
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext ( ) ;
GenericBeanDefinition bd = new GenericBeanDefinition ( ) ;
bd . setBeanClass ( String . class ) ;
@ -326,11 +326,10 @@ public class ApplicationContextExpressionTests {
@@ -326,11 +326,10 @@ public class ApplicationContextExpressionTests {
@Test
public void resourceInjection ( ) throws IOException {
System . setProperty ( "logfile" , "log4j.properties" ) ;
try {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext ( ResourceInjectionBean . class ) ;
System . setProperty ( "logfile" , "do_not_delete_me.txt" ) ;
try ( AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext ( ResourceInjectionBean . class ) ) {
ResourceInjectionBean resourceInjectionBean = ac . getBean ( ResourceInjectionBean . class ) ;
Resource resource = new ClassPathResource ( "log4j.properties " ) ;
Resource resource = new ClassPathResource ( "do_not_delete_me.txt " ) ;
assertEquals ( resource , resourceInjectionBean . resource ) ;
assertEquals ( resource . getURL ( ) , resourceInjectionBean . url ) ;
assertEquals ( resource . getURI ( ) , resourceInjectionBean . uri ) ;
@ -364,6 +363,15 @@ public class ApplicationContextExpressionTests {
@@ -364,6 +363,15 @@ public class ApplicationContextExpressionTests {
@Value ( "${code} #{systemProperties.country}" )
public ObjectFactory < String > countryFactory ;
@Value ( "${code}" )
private transient Optional < String > optionalValue1 ;
@Value ( "${code:#{null}}" )
private transient Optional < String > optionalValue2 ;
@Value ( "${codeX:#{null}}" )
private transient Optional < String > optionalValue3 ;
@Autowired @Qualifier ( "original" )
public transient TestBean tb ;
}