01: /*
02: * Copyright 2002-2006 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.springframework.context;
18:
19: import java.util.Locale;
20:
21: /**
22: * Strategy interface for resolving messages, with support for the parameterization
23: * and internationalization of such messages.
24: *
25: * <p>Spring provides two out-of-the-box implementations for production:
26: * <ul>
27: * <li>{@link org.springframework.context.support.ResourceBundleMessageSource},
28: * built on top of the standard {@link java.util.ResourceBundle}
29: * <li>{@link org.springframework.context.support.ReloadableResourceBundleMessageSource},
30: * being able to reload message definitions without restarting the VM
31: * </ul>
32: *
33: * @author Rod Johnson
34: * @author Juergen Hoeller
35: * @see org.springframework.context.support.ResourceBundleMessageSource
36: * @see org.springframework.context.support.ReloadableResourceBundleMessageSource
37: */
38: public interface MessageSource {
39:
40: /**
41: * Try to resolve the message. Return default message if no message was found.
42: * @param code the code to lookup up, such as 'calculator.noRateSet'. Users of
43: * this class are encouraged to base message names on the relevant fully
44: * qualified class name, thus avoiding conflict and ensuring maximum clarity.
45: * @param args array of arguments that will be filled in for params within
46: * the message (params look like "{0}", "{1,date}", "{2,time}" within a message),
47: * or <code>null</code> if none.
48: * @param locale the Locale in which to do the lookup
49: * @param defaultMessage String to return if the lookup fails
50: * @return the resolved message if the lookup was successful;
51: * otherwise the default message passed as a parameter
52: * @see java.text.MessageFormat
53: */
54: String getMessage(String code, Object[] args,
55: String defaultMessage, Locale locale);
56:
57: /**
58: * Try to resolve the message. Treat as an error if the message can't be found.
59: * @param code the code to lookup up, such as 'calculator.noRateSet'
60: * @param args Array of arguments that will be filled in for params within
61: * the message (params look like "{0}", "{1,date}", "{2,time}" within a message),
62: * or <code>null</code> if none.
63: * @param locale the Locale in which to do the lookup
64: * @return the resolved message
65: * @throws NoSuchMessageException if the message wasn't found
66: * @see java.text.MessageFormat
67: */
68: String getMessage(String code, Object[] args, Locale locale)
69: throws NoSuchMessageException;
70:
71: /**
72: * Try to resolve the message using all the attributes contained within the
73: * <code>MessageSourceResolvable</code> argument that was passed in.
74: * <p>NOTE: We must throw a <code>NoSuchMessageException</code> on this method
75: * since at the time of calling this method we aren't able to determine if the
76: * <code>defaultMessage</code> property of the resolvable is null or not.
77: * @param resolvable value object storing attributes required to properly resolve a message
78: * @param locale the Locale in which to do the lookup
79: * @return the resolved message
80: * @throws NoSuchMessageException if the message wasn't found
81: * @see java.text.MessageFormat
82: */
83: String getMessage(MessageSourceResolvable resolvable, Locale locale)
84: throws NoSuchMessageException;
85:
86: }
|