Skip to content

Commit 5e338ef

Browse files
committed
Make MessageSource locale parameter nullable
Closes gh-35230
1 parent 445da24 commit 5e338ef

File tree

7 files changed

+47
-26
lines changed

7 files changed

+47
-26
lines changed

spring-context/src/main/java/org/springframework/context/MessageSource.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public interface MessageSource {
5555
* @see java.text.MessageFormat
5656
*/
5757
@Nullable
58-
String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale);
58+
String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale);
5959

6060
/**
6161
* Try to resolve the message. Treat as an error if the message can't be found.
@@ -71,7 +71,7 @@ public interface MessageSource {
7171
* @see #getMessage(MessageSourceResolvable, Locale)
7272
* @see java.text.MessageFormat
7373
*/
74-
String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException;
74+
String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException;
7575

7676
/**
7777
* Try to resolve the message using all the attributes contained within the
@@ -91,6 +91,6 @@ public interface MessageSource {
9191
* @see MessageSourceResolvable#getDefaultMessage()
9292
* @see java.text.MessageFormat
9393
*/
94-
String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException;
94+
String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException;
9595

9696
}

spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1502,17 +1502,17 @@ protected BeanFactory getInternalParentBeanFactory() {
15021502

15031503
@Override
15041504
@Nullable
1505-
public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale) {
1505+
public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale) {
15061506
return getMessageSource().getMessage(code, args, defaultMessage, locale);
15071507
}
15081508

15091509
@Override
1510-
public String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException {
1510+
public String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException {
15111511
return getMessageSource().getMessage(code, args, locale);
15121512
}
15131513

15141514
@Override
1515-
public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException {
1515+
public String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException {
15161516
return getMessageSource().getMessage(resolvable, locale);
15171517
}
15181518

spring-context/src/main/java/org/springframework/context/support/AbstractMessageSource.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ protected boolean isUseCodeAsDefaultMessage() {
138138

139139
@Override
140140
@Nullable
141-
public final String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale) {
141+
public final String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale) {
142142
String msg = getMessageInternal(code, args, locale);
143143
if (msg != null) {
144144
return msg;
@@ -150,7 +150,7 @@ public final String getMessage(String code, @Nullable Object[] args, @Nullable S
150150
}
151151

152152
@Override
153-
public final String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException {
153+
public final String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException {
154154
String msg = getMessageInternal(code, args, locale);
155155
if (msg != null) {
156156
return msg;
@@ -159,11 +159,16 @@ public final String getMessage(String code, @Nullable Object[] args, Locale loca
159159
if (fallback != null) {
160160
return fallback;
161161
}
162-
throw new NoSuchMessageException(code, locale);
162+
if (locale == null ) {
163+
throw new NoSuchMessageException(code);
164+
}
165+
else {
166+
throw new NoSuchMessageException(code, locale);
167+
}
163168
}
164169

165170
@Override
166-
public final String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException {
171+
public final String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException {
167172
String[] codes = resolvable.getCodes();
168173
if (codes != null) {
169174
for (String code : codes) {
@@ -177,7 +182,13 @@ public final String getMessage(MessageSourceResolvable resolvable, Locale locale
177182
if (defaultMessage != null) {
178183
return defaultMessage;
179184
}
180-
throw new NoSuchMessageException(!ObjectUtils.isEmpty(codes) ? codes[codes.length - 1] : "", locale);
185+
String code = !ObjectUtils.isEmpty(codes) ? codes[codes.length - 1] : "";
186+
if (locale == null ) {
187+
throw new NoSuchMessageException(code);
188+
}
189+
else {
190+
throw new NoSuchMessageException(code, locale);
191+
}
181192
}
182193

183194

@@ -284,7 +295,7 @@ protected String getMessageFromParent(String code, @Nullable Object[] args, Loca
284295
* @see #getDefaultMessage(String)
285296
*/
286297
@Nullable
287-
protected String getDefaultMessage(MessageSourceResolvable resolvable, Locale locale) {
298+
protected String getDefaultMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) {
288299
String defaultMessage = resolvable.getDefaultMessage();
289300
String[] codes = resolvable.getCodes();
290301
if (defaultMessage != null) {
@@ -331,7 +342,7 @@ protected String getDefaultMessage(String code) {
331342
* @return an array of arguments with any MessageSourceResolvables resolved
332343
*/
333344
@Override
334-
protected Object[] resolveArguments(@Nullable Object[] args, Locale locale) {
345+
protected Object[] resolveArguments(@Nullable Object[] args, @Nullable Locale locale) {
335346
if (ObjectUtils.isEmpty(args)) {
336347
return super.resolveArguments(args, locale);
337348
}

spring-context/src/main/java/org/springframework/context/support/DelegatingMessageSource.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public MessageSource getParentMessageSource() {
5555

5656
@Override
5757
@Nullable
58-
public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale) {
58+
public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale) {
5959
if (this.parentMessageSource != null) {
6060
return this.parentMessageSource.getMessage(code, args, defaultMessage, locale);
6161
}
@@ -68,17 +68,22 @@ else if (defaultMessage != null) {
6868
}
6969

7070
@Override
71-
public String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException {
71+
public String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException {
7272
if (this.parentMessageSource != null) {
7373
return this.parentMessageSource.getMessage(code, args, locale);
7474
}
7575
else {
76-
throw new NoSuchMessageException(code, locale);
76+
if (locale == null) {
77+
throw new NoSuchMessageException(code);
78+
}
79+
else {
80+
throw new NoSuchMessageException(code, locale);
81+
}
7782
}
7883
}
7984

8085
@Override
81-
public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException {
86+
public String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException {
8287
if (this.parentMessageSource != null) {
8388
return this.parentMessageSource.getMessage(resolvable, locale);
8489
}
@@ -88,7 +93,12 @@ public String getMessage(MessageSourceResolvable resolvable, Locale locale) thro
8893
}
8994
String[] codes = resolvable.getCodes();
9095
String code = (codes != null && codes.length > 0 ? codes[0] : "");
91-
throw new NoSuchMessageException(code, locale);
96+
if (locale == null) {
97+
throw new NoSuchMessageException(code);
98+
}
99+
else {
100+
throw new NoSuchMessageException(code, locale);
101+
}
92102
}
93103
}
94104

spring-context/src/main/java/org/springframework/context/support/MessageSourceSupport.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ protected boolean isAlwaysUseMessageFormat() {
9898
* @return the rendered default message (with resolved arguments)
9999
* @see #formatMessage(String, Object[], java.util.Locale)
100100
*/
101-
protected String renderDefaultMessage(String defaultMessage, @Nullable Object[] args, Locale locale) {
101+
protected String renderDefaultMessage(String defaultMessage, @Nullable Object[] args, @Nullable Locale locale) {
102102
return formatMessage(defaultMessage, args, locale);
103103
}
104104

@@ -112,7 +112,7 @@ protected String renderDefaultMessage(String defaultMessage, @Nullable Object[]
112112
* @param locale the Locale used for formatting
113113
* @return the formatted message (with resolved arguments)
114114
*/
115-
protected String formatMessage(String msg, @Nullable Object[] args, Locale locale) {
115+
protected String formatMessage(String msg, @Nullable Object[] args, @Nullable Locale locale) {
116116
if (!isAlwaysUseMessageFormat() && ObjectUtils.isEmpty(args)) {
117117
return msg;
118118
}
@@ -146,7 +146,7 @@ protected String formatMessage(String msg, @Nullable Object[] args, Locale local
146146
* @param locale the Locale to create a {@code MessageFormat} for
147147
* @return the {@code MessageFormat} instance
148148
*/
149-
protected MessageFormat createMessageFormat(String msg, Locale locale) {
149+
protected MessageFormat createMessageFormat(String msg, @Nullable Locale locale) {
150150
return new MessageFormat(msg, locale);
151151
}
152152

@@ -158,7 +158,7 @@ protected MessageFormat createMessageFormat(String msg, Locale locale) {
158158
* @param locale the Locale to resolve against
159159
* @return the resolved argument array
160160
*/
161-
protected Object[] resolveArguments(@Nullable Object[] args, Locale locale) {
161+
protected Object[] resolveArguments(@Nullable Object[] args, @Nullable Locale locale) {
162162
return (args != null ? args : new Object[0]);
163163
}
164164

spring-test/src/main/java/org/springframework/test/web/servlet/setup/StubWebApplicationContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,17 +357,17 @@ public boolean containsLocalBean(String name) {
357357

358358
@Override
359359
@Nullable
360-
public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale) {
360+
public String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, @Nullable Locale locale) {
361361
return this.messageSource.getMessage(code, args, defaultMessage, locale);
362362
}
363363

364364
@Override
365-
public String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException {
365+
public String getMessage(String code, @Nullable Object[] args, @Nullable Locale locale) throws NoSuchMessageException {
366366
return this.messageSource.getMessage(code, args, locale);
367367
}
368368

369369
@Override
370-
public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException {
370+
public String getMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) throws NoSuchMessageException {
371371
return this.messageSource.getMessage(resolvable, locale);
372372
}
373373

spring-web/src/main/java/org/springframework/web/util/BindErrorUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private static class MethodArgumentErrorMessageSource extends StaticMessageSourc
116116

117117
@Override
118118
@Nullable
119-
protected String getDefaultMessage(MessageSourceResolvable resolvable, Locale locale) {
119+
protected String getDefaultMessage(MessageSourceResolvable resolvable, @Nullable Locale locale) {
120120
String message = super.getDefaultMessage(resolvable, locale);
121121
return (resolvable instanceof FieldError error ? error.getField() + ": " + message : message);
122122
}

0 commit comments

Comments
 (0)