01: /*
02: * $Id: IStringResourceLoader.java 459424 2006-02-18 09:11:19Z jdonnerstag $
03: * $Revision: 459424 $ $Date: 2006-02-18 10:11:19 +0100 (Sat, 18 Feb 2006) $
04: *
05: * ==============================================================================
06: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
07: * use this file except in compliance with the License. You may obtain a copy of
08: * the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15: * License for the specific language governing permissions and limitations under
16: * the License.
17: */
18: package wicket.resource.loader;
19:
20: import java.util.Locale;
21:
22: /**
23: * The string resource loader interface allows a strategy pattern to be applied
24: * to the loading of resource strings for an application. The loader (or chain
25: * of loaders) that are used is configured via the
26: * <code>ApplicationSettings</code> class.
27: * <p>
28: * Each particular implementation of this interface may define its own mechanism
29: * for searching for resources. Please see the documents for each particular
30: * implementation to determine this behavior and to see how it can be
31: * configured.
32: * <p>
33: * It is important to note that if a resource is not found by a particular
34: * loader then the loader should return <code>null</code> rather than throw an
35: * exception. The reason for this is that loaders can be arranged in a chain and
36: * it would be very inefficient for loaders earlier in the chain to throw
37: * exceptions that must be caught and handled each time until the correct loader
38: * in the chain is reached.
39: *
40: * @author Chris Turner
41: * @see wicket.settings.IResourceSettings
42: */
43: public interface IStringResourceLoader {
44: /**
45: * Get the string resource for the given combination of component class,
46: * resource key, locale and style. The component is provided used to allow
47: * implementation of component specific resource loading (e.g. per page or
48: * per reusable component). It also allows the resource loader
49: * implementation to get access to the application settings and the root
50: * application object if necessary. The key should be a String containing a
51: * lookup key into a resource bundle. The locale should contain the locale
52: * of the current operation so that the appopriate set of resources can be
53: * selected. The style allows the set of resources to select to be varied by
54: * skin/brand.
55: *
56: * @param clazz
57: * The class to get the string resource for
58: * @param key
59: * The key to obtain the string for
60: * @param locale
61: * The locale identifying the resource set to select the strings
62: * from
63: * @param style
64: * The (optional) style identifying the resource set to select
65: * the strings from (see {@link wicket.Session})
66: * @return The string resource value or null if the resource could not be
67: * loaded by this loader
68: */
69: String loadStringResource(Class clazz, String key, Locale locale,
70: String style);
71: }
|