/* * Copyright 2004-2010 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.slim3.util; import java.util.Locale; import java.util.MissingResourceException; /** * A class to get the application message. * * @author higa * @since 1.0.0 * */ public final class ApplicationMessage { /** * The key of ApplicationMessageDelegate. */ public static final String DELEGATE_KEY = "slim3.applicationMessageDelegate"; /** * The delegate. */ protected static ApplicationMessageDelegate delegate; static { setDelegateClass(ResourceBundleApplicationMessageDelegate.class); } /** * Initializes this class. */ protected static void initialize() { String className = System.getProperty( DELEGATE_KEY, ResourceBundleApplicationMessageDelegate.class.getName()); Class<? extends ApplicationMessageDelegate> clazz = ClassUtil.forName(className); setDelegateClass(clazz); } /** * Sets the delegate class. * * @param clazz * the delegate class */ public static void setDelegateClass( Class<? extends ApplicationMessageDelegate> clazz) { delegate = ClassUtil.newInstance(clazz); } /** * Sets the resource bundle to the current thread. * * @param bundleName * the resource bundle name * @param locale * the locale * @throws NullPointerException * if the bundleName parameter is null or if the locale * parameter is null */ public static void setBundle(String bundleName, Locale locale) throws NullPointerException { delegate.setBundle(bundleName, locale); } /** * Clears the resource bundle attached to the current thread. */ public static void clearBundle() { delegate.clearBundle(); } /** * Returns the message. * * @param key * the key * @param args * the arguments * @return the message * @throws MissingResourceException * if the message is missing */ public static String get(String key, Object... args) throws MissingResourceException { return delegate.get(key, args); } /** * Returns the delegate. * * @param <T> * the delegate type * @return the delegate */ @SuppressWarnings("unchecked") public static <T extends ApplicationMessageDelegate> T getDelegate() { return (T) delegate; } private ApplicationMessage() { } }