Skip to content

Commit a68ec76

Browse files
kedar-joshisnicoll
authored andcommitted
Adds support for useCodeAsDefaultMessage
See gh-10466
1 parent 9102eb3 commit a68ec76

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/context/MessageSourceAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public MessageSource messageSource() {
7575
messageSource.setFallbackToSystemLocale(properties.isFallbackToSystemLocale());
7676
messageSource.setCacheSeconds(properties.getCacheSeconds());
7777
messageSource.setAlwaysUseMessageFormat(properties.isAlwaysUseMessageFormat());
78+
messageSource.setUseCodeAsDefaultMessage(properties.isUseCodeAsDefaultMessage());
7879
return messageSource;
7980
}
8081

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/context/MessageSourceProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* Configuration properties for Message Source.
2323
*
2424
* @author Stephane Nicoll
25+
* @author Kedar Joshi
2526
* @since 2.0.0
2627
*/
2728
public class MessageSourceProperties {
@@ -57,6 +58,11 @@ public class MessageSourceProperties {
5758
*/
5859
private boolean alwaysUseMessageFormat = false;
5960

61+
/**
62+
* Set whether to use the message code as default message instead of throwing a NoSuchMessageException.
63+
*/
64+
private boolean useCodeAsDefaultMessage = false;
65+
6066
public String getBasename() {
6167
return this.basename;
6268
}
@@ -97,4 +103,11 @@ public void setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat) {
97103
this.alwaysUseMessageFormat = alwaysUseMessageFormat;
98104
}
99105

106+
public boolean isUseCodeAsDefaultMessage() {
107+
return this.useCodeAsDefaultMessage;
108+
}
109+
110+
public void setUseCodeAsDefaultMessage(final boolean useCodeAsDefaultMessage) {
111+
this.useCodeAsDefaultMessage = useCodeAsDefaultMessage;
112+
}
100113
}

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/context/MessageSourceAutoConfigurationTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
* @author Dave Syer
4242
* @author Eddú Meléndez
4343
* @author Stephane Nicoll
44+
* @author Kedar Joshi
4445
*/
4546
public class MessageSourceAutoConfigurationTests {
4647

@@ -142,6 +143,26 @@ private boolean isAlwaysUseMessageFormat(MessageSource messageSource) {
142143
.getPropertyValue("alwaysUseMessageFormat");
143144
}
144145

146+
@Test
147+
public void testUseCodeAsDefaultMessageDefault() throws Exception {
148+
load("spring.messages.basename:test/messages");
149+
assertThat(isUseCodeAsDefaultMessage(this.context.getBean(MessageSource.class)))
150+
.isFalse();
151+
}
152+
153+
@Test
154+
public void testUseCodeAsDefaultMessageOn() throws Exception {
155+
load("spring.messages.basename:test/messages",
156+
"spring.messages.use-code-as-default-message:true");
157+
assertThat(isUseCodeAsDefaultMessage(this.context.getBean(MessageSource.class)))
158+
.isTrue();
159+
}
160+
161+
private boolean isUseCodeAsDefaultMessage(MessageSource messageSource) {
162+
return (boolean) new DirectFieldAccessor(messageSource)
163+
.getPropertyValue("useCodeAsDefaultMessage");
164+
}
165+
145166
@Test
146167
public void existingMessageSourceIsPreferred() {
147168
this.context = new AnnotationConfigApplicationContext();

0 commit comments

Comments
 (0)