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: import java.util.MissingResourceException;
21: import java.util.ResourceBundle;
22:
23: import org.apache.wicket.Component;
24:
25: /**
26: * Implementation of a string resource loader that sits on top of the ordinary
27: * Java resource bundle mechanism. When created this loader must be given the
28: * name of the resource bundle that it is to sit on top of. Note that this
29: * implementation does not make use of any style or component specific knowledge -
30: * it utilises just the bundle name, the resource key and the locale.
31: *
32: * @author Chris Turner
33: */
34: public class BundleStringResourceLoader implements
35: IStringResourceLoader {
36: /** The name of the underlying resource bundle. */
37: private final String bundleName;
38:
39: /**
40: * Create the loader with the name of the given Java resource bundle.
41: *
42: * @param bundleName
43: * The name of the resource bundle
44: */
45: public BundleStringResourceLoader(final String bundleName) {
46: this .bundleName = bundleName;
47: }
48:
49: /**
50: * Get the requested string resource from the underlying resource bundle.
51: * The bundle is selected by locale and the string obtained from the best
52: * matching bundle.
53: *
54: * @param clazz
55: * Not used for this implementstion
56: * @param key
57: * The key to obtain the string for
58: * @param locale
59: * The locale identifying the resource set to select the strings
60: * from
61: * @param style
62: * Not used for this implementation (see {@link org.apache.wicket.Session})
63: * @return The string resource value or null if resource not found
64: */
65: public final String loadStringResource(final Class clazz,
66: final String key, Locale locale, final String style) {
67: if (locale == null) {
68: locale = Locale.getDefault();
69: }
70: try {
71: final ResourceBundle bundle = ResourceBundle.getBundle(
72: bundleName, locale);
73: return bundle.getString(key);
74: } catch (MissingResourceException e) {
75: return null;
76: }
77: }
78:
79: /**
80: * Get the requested string resource from the underlying resource bundle.
81: * The bundle is selected by locale and the string obtained from the best
82: * matching bundle.
83: *
84: * @param component
85: * Used to get the locale
86: * @param key
87: * The key to obtain the string for
88: * @return The string resource value or null if resource not found
89: */
90: public final String loadStringResource(final Component component,
91: final String key) {
92: return loadStringResource(null, key, component.getLocale(),
93: null);
94: }
95: }
|