1
1
/*
2
- * Copyright 2012-2019 the original author or authors.
2
+ * Copyright 2012-2023 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
19
19
import java .io .PrintStream ;
20
20
import java .nio .charset .Charset ;
21
21
import java .nio .charset .StandardCharsets ;
22
- import java .util .ArrayList ;
23
22
import java .util .Collections ;
24
23
import java .util .HashMap ;
25
24
import java .util .List ;
33
32
import org .springframework .core .env .MapPropertySource ;
34
33
import org .springframework .core .env .MutablePropertySources ;
35
34
import org .springframework .core .env .PropertyResolver ;
35
+ import org .springframework .core .env .PropertySource ;
36
36
import org .springframework .core .env .PropertySourcesPropertyResolver ;
37
37
import org .springframework .core .io .Resource ;
38
38
import org .springframework .core .log .LogMessage ;
45
45
* @author Phillip Webb
46
46
* @author Vedran Pavic
47
47
* @author Toshiaki Maki
48
+ * @author Krzysztof Krason
48
49
* @since 1.2.0
49
50
*/
50
51
public class ResourceBanner implements Banner {
51
52
52
53
private static final Log logger = LogFactory .getLog (ResourceBanner .class );
53
54
54
- private Resource resource ;
55
+ private final Resource resource ;
55
56
56
57
public ResourceBanner (Resource resource ) {
57
58
Assert .notNull (resource , "Resource must not be null" );
@@ -77,18 +78,25 @@ public void printBanner(Environment environment, Class<?> sourceClass, PrintStre
77
78
}
78
79
79
80
protected List <PropertyResolver > getPropertyResolvers (Environment environment , Class <?> sourceClass ) {
80
- List < PropertyResolver > resolvers = new ArrayList <> ();
81
- resolvers . add ( environment );
82
- resolvers . add ( getVersionResolver (sourceClass ));
83
- resolvers . add ( getAnsiResolver ());
84
- resolvers . add ( getTitleResolver (sourceClass ));
85
- return resolvers ;
81
+ MutablePropertySources propertySources = new MutablePropertySources ();
82
+ propertySources . addLast ( getEnvironmentSource ( environment ) );
83
+ propertySources . addLast ( getTitleSource (sourceClass ));
84
+ propertySources . addLast ( getAnsiSource ());
85
+ propertySources . addLast ( getVersionSource (sourceClass ));
86
+ return Collections . singletonList ( new PropertySourcesPropertyResolver ( propertySources )) ;
86
87
}
87
88
88
- private PropertyResolver getVersionResolver (Class <?> sourceClass ) {
89
- MutablePropertySources propertySources = new MutablePropertySources ();
90
- propertySources .addLast (new MapPropertySource ("version" , getVersionsMap (sourceClass )));
91
- return new PropertySourcesPropertyResolver (propertySources );
89
+ private PropertySource <Environment > getEnvironmentSource (Environment environment ) {
90
+ return new PropertySource <Environment >("environment" , environment ) {
91
+ @ Override
92
+ public Object getProperty (String name ) {
93
+ return environment .getProperty (name );
94
+ }
95
+ };
96
+ }
97
+
98
+ private MapPropertySource getVersionSource (Class <?> sourceClass ) {
99
+ return new MapPropertySource ("version" , getVersionsMap (sourceClass ));
92
100
}
93
101
94
102
private Map <String , Object > getVersionsMap (Class <?> sourceClass ) {
@@ -118,19 +126,15 @@ private String getVersionString(String version, boolean format) {
118
126
return format ? " (v" + version + ")" : version ;
119
127
}
120
128
121
- private PropertyResolver getAnsiResolver () {
122
- MutablePropertySources sources = new MutablePropertySources ();
123
- sources .addFirst (new AnsiPropertySource ("ansi" , true ));
124
- return new PropertySourcesPropertyResolver (sources );
129
+ private AnsiPropertySource getAnsiSource () {
130
+ return new AnsiPropertySource ("ansi" , true );
125
131
}
126
132
127
- private PropertyResolver getTitleResolver (Class <?> sourceClass ) {
128
- MutablePropertySources sources = new MutablePropertySources ();
133
+ private MapPropertySource getTitleSource (Class <?> sourceClass ) {
129
134
String applicationTitle = getApplicationTitle (sourceClass );
130
135
Map <String , Object > titleMap = Collections .singletonMap ("application.title" ,
131
136
(applicationTitle != null ) ? applicationTitle : "" );
132
- sources .addFirst (new MapPropertySource ("title" , titleMap ));
133
- return new PropertySourcesPropertyResolver (sources );
137
+ return new MapPropertySource ("title" , titleMap );
134
138
}
135
139
136
140
protected String getApplicationTitle (Class <?> sourceClass ) {
0 commit comments