11/*
2- * Copyright 2012-2019 the original author or authors.
2+ * Copyright 2012-2023 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
1919import java .io .PrintStream ;
2020import java .nio .charset .Charset ;
2121import java .nio .charset .StandardCharsets ;
22- import java .util .ArrayList ;
2322import java .util .Collections ;
2423import java .util .HashMap ;
2524import java .util .List ;
2928import org .apache .commons .logging .LogFactory ;
3029
3130import org .springframework .boot .ansi .AnsiPropertySource ;
31+ import org .springframework .core .env .ConfigurableEnvironment ;
3232import org .springframework .core .env .Environment ;
3333import org .springframework .core .env .MapPropertySource ;
3434import org .springframework .core .env .MutablePropertySources ;
4545 * @author Phillip Webb
4646 * @author Vedran Pavic
4747 * @author Toshiaki Maki
48+ * @author Krzysztof Krason
4849 * @since 1.2.0
4950 */
5051public class ResourceBanner implements Banner {
5152
5253 private static final Log logger = LogFactory .getLog (ResourceBanner .class );
5354
54- private Resource resource ;
55+ private final Resource resource ;
5556
5657 public ResourceBanner (Resource resource ) {
5758 Assert .notNull (resource , "Resource must not be null" );
@@ -77,18 +78,18 @@ public void printBanner(Environment environment, Class<?> sourceClass, PrintStre
7778 }
7879
7980 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+ if (environment instanceof ConfigurableEnvironment ) {
83+ ((ConfigurableEnvironment ) environment ).getPropertySources ().forEach (propertySources ::addLast );
84+ }
85+ propertySources .addLast (getTitleSource (sourceClass ));
86+ propertySources .addLast (getAnsiSource ());
87+ propertySources .addLast (getVersionSource (sourceClass ));
88+ return Collections .singletonList (new PropertySourcesPropertyResolver (propertySources ));
8689 }
8790
88- private PropertyResolver getVersionResolver (Class <?> sourceClass ) {
89- MutablePropertySources propertySources = new MutablePropertySources ();
90- propertySources .addLast (new MapPropertySource ("version" , getVersionsMap (sourceClass )));
91- return new PropertySourcesPropertyResolver (propertySources );
91+ private MapPropertySource getVersionSource (Class <?> sourceClass ) {
92+ return new MapPropertySource ("version" , getVersionsMap (sourceClass ));
9293 }
9394
9495 private Map <String , Object > getVersionsMap (Class <?> sourceClass ) {
@@ -118,19 +119,15 @@ private String getVersionString(String version, boolean format) {
118119 return format ? " (v" + version + ")" : version ;
119120 }
120121
121- private PropertyResolver getAnsiResolver () {
122- MutablePropertySources sources = new MutablePropertySources ();
123- sources .addFirst (new AnsiPropertySource ("ansi" , true ));
124- return new PropertySourcesPropertyResolver (sources );
122+ private AnsiPropertySource getAnsiSource () {
123+ return new AnsiPropertySource ("ansi" , true );
125124 }
126125
127- private PropertyResolver getTitleResolver (Class <?> sourceClass ) {
128- MutablePropertySources sources = new MutablePropertySources ();
126+ private MapPropertySource getTitleSource (Class <?> sourceClass ) {
129127 String applicationTitle = getApplicationTitle (sourceClass );
130128 Map <String , Object > titleMap = Collections .singletonMap ("application.title" ,
131129 (applicationTitle != null ) ? applicationTitle : "" );
132- sources .addFirst (new MapPropertySource ("title" , titleMap ));
133- return new PropertySourcesPropertyResolver (sources );
130+ return new MapPropertySource ("title" , titleMap );
134131 }
135132
136133 protected String getApplicationTitle (Class <?> sourceClass ) {
0 commit comments