diff --git a/spring-context/src/main/java/org/springframework/context/MessageSource.java b/spring-context/src/main/java/org/springframework/context/MessageSource.java index 6396a016bb..fb17668689 100644 --- a/spring-context/src/main/java/org/springframework/context/MessageSource.java +++ b/spring-context/src/main/java/org/springframework/context/MessageSource.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,10 +26,10 @@ import org.springframework.lang.Nullable; * *

Spring provides two out-of-the-box implementations for production: *

* * @author Rod Johnson @@ -41,16 +41,17 @@ public interface MessageSource { /** * Try to resolve the message. Return default message if no message was found. - * @param code the code to lookup up, such as 'calculator.noRateSet'. Users of - * this class are encouraged to base message names on the relevant fully - * qualified class name, thus avoiding conflict and ensuring maximum clarity. + * @param code the code to lookup up, e.g. 'calculator.noRateSet'. + * MessageSource users are encouraged to base message names on qualified class + * or package names, avoiding potential conflicts and ensuring maximum clarity. * @param args an array of arguments that will be filled in for params within * the message (params look like "{0}", "{1,date}", "{2,time}" within a message), - * or {@code null} if none. + * or {@code null} if none * @param defaultMessage a default message to return if the lookup fails * @param locale the locale in which to do the lookup - * @return the resolved message if the lookup was successful; - * otherwise the default message passed as a parameter + * @return the resolved message if the lookup was successful, otherwise + * the default message passed as a parameter (which may be {@code null}) + * @see #getMessage(MessageSourceResolvable, Locale) * @see java.text.MessageFormat */ @Nullable @@ -58,13 +59,16 @@ public interface MessageSource { /** * Try to resolve the message. Treat as an error if the message can't be found. - * @param code the code to lookup up, such as 'calculator.noRateSet' + * @param code the code to lookup up, e.g. 'calculator.noRateSet'. + * MessageSource users are encouraged to base message names on qualified class + * or package names, avoiding potential conflicts and ensuring maximum clarity. * @param args an array of arguments that will be filled in for params within * the message (params look like "{0}", "{1,date}", "{2,time}" within a message), - * or {@code null} if none. + * or {@code null} if none * @param locale the locale in which to do the lookup - * @return the resolved message - * @throws NoSuchMessageException if the message wasn't found + * @return the resolved message (never {@code null}) + * @throws NoSuchMessageException if no corresponding message was found + * @see #getMessage(MessageSourceResolvable, Locale) * @see java.text.MessageFormat */ String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException; @@ -76,9 +80,15 @@ public interface MessageSource { * since at the time of calling this method we aren't able to determine if the * {@code defaultMessage} property of the resolvable is {@code null} or not. * @param resolvable the value object storing attributes required to resolve a message + * (may include a default message) * @param locale the locale in which to do the lookup - * @return the resolved message - * @throws NoSuchMessageException if the message wasn't found + * @return the resolved message (never {@code null} since even a + * {@code MessageSourceResolvable}-provided default message needs to be non-null) + * @throws NoSuchMessageException if no corresponding message was found + * (and no default message was provided by the {@code MessageSourceResolvable}) + * @see MessageSourceResolvable#getCodes() + * @see MessageSourceResolvable#getArguments() + * @see MessageSourceResolvable#getDefaultMessage() * @see java.text.MessageFormat */ String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException;