|
1 | 1 | /* |
2 | | - * Copyright 2012-2022 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; |
|
29 | 28 | import org.apache.commons.logging.LogFactory; |
30 | 29 |
|
31 | 30 | import org.springframework.boot.ansi.AnsiPropertySource; |
| 31 | +import org.springframework.core.env.ConfigurableEnvironment; |
32 | 32 | import org.springframework.core.env.Environment; |
33 | 33 | import org.springframework.core.env.MapPropertySource; |
34 | 34 | import org.springframework.core.env.MutablePropertySources; |
|
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 { |
@@ -77,18 +78,18 @@ 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 | + 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)); |
86 | 89 | } |
87 | 90 |
|
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)); |
92 | 93 | } |
93 | 94 |
|
94 | 95 | private Map<String, Object> getVersionsMap(Class<?> sourceClass) { |
@@ -118,19 +119,15 @@ private String getVersionString(String version, boolean format) { |
118 | 119 | return format ? " (v" + version + ")" : version; |
119 | 120 | } |
120 | 121 |
|
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); |
125 | 124 | } |
126 | 125 |
|
127 | | - private PropertyResolver getTitleResolver(Class<?> sourceClass) { |
128 | | - MutablePropertySources sources = new MutablePropertySources(); |
| 126 | + private MapPropertySource getTitleSource(Class<?> sourceClass) { |
129 | 127 | String applicationTitle = getApplicationTitle(sourceClass); |
130 | 128 | Map<String, Object> titleMap = Collections.singletonMap("application.title", |
131 | 129 | (applicationTitle != null) ? applicationTitle : ""); |
132 | | - sources.addFirst(new MapPropertySource("title", titleMap)); |
133 | | - return new PropertySourcesPropertyResolver(sources); |
| 130 | + return new MapPropertySource("title", titleMap); |
134 | 131 | } |
135 | 132 |
|
136 | 133 | protected String getApplicationTitle(Class<?> sourceClass) { |
|
0 commit comments