01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.wicket.resource.loader;
18:
19: import java.util.Locale;
20:
21: import org.apache.wicket.Component;
22:
23: /**
24: * The string resource loader interface allows a strategy pattern to be applied
25: * to the loading of resource strings for an application. The loader (or chain
26: * of loaders) that are used is configured via the application settings.
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 its behavior and to see how it can be configured.
31: * <p>
32: * It is important to note that if a resource is not found by a particular
33: * loader than the loader should return <code>null</code> rather than throw an
34: * exception. The reason for this is that loaders can be arranged in a chain and
35: * it would be very inefficient for loaders earlier in the chain to throw
36: * exceptions that must be caught and handled each time until the correct loader
37: * in the chain is reached.
38: *
39: * @see org.apache.wicket.settings.IResourceSettings
40: *
41: * @author Chris Turner
42: * @author Juergen Donnerstag
43: */
44: public interface IStringResourceLoader {
45: /**
46: * Get the string resource for the given combination of component class,
47: * resource key, locale and style. The component class provided is used to
48: * allow implementation of component specific resource loading (e.g. per
49: * page or per reusable component). The key should be a String containing a
50: * lookup key into a resource bundle. The locale should contain the locale
51: * of the current operation so that the appopriate set of resources can be
52: * selected. The style allows the set of resources to select to be varied by
53: * skin/brand.
54: *
55: * @param clazz
56: * The class to get the string resource for
57: * @param key
58: * The key should be a String containing a lookup key into a
59: * resource bundle
60: * @param locale
61: * The locale should contain the locale of the current operation
62: * so that the appopriate set of resources can be selected
63: * @param style
64: * The style identifying the resource set to select the strings
65: * from (see {@link org.apache.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:
72: /**
73: * Get the string resource for the given combination of component and
74: * resource key. The component provided is used to allow implementation of
75: * component specific resource loading (e.g. per page or per reusable
76: * component). The key should be a String containing a lookup key into a
77: * resource bundle. The Locale and the style will be taken from the
78: * Component provided.
79: *
80: * @param component
81: * The component to get the string resource for
82: * @param key
83: * The key should be a String containing a lookup key into a
84: * resource bundle
85: * @return The string resource value or null if the resource could not be
86: * loaded by this loader
87: */
88: String loadStringResource(Component component, String key);
89: }
|