/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * The Original Code is available at http://www.abiquo.com/..... * * The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com), * Consell de Cent 296 principal 2�, 08007 Barcelona, Spain. * No portions of the Code have been created by third parties. * All Rights Reserved. * * Contributor(s): ______________________________________. * * Graphical User Interface of this software may be used under the terms * of the Common Public Attribution License Version 1.0 (the "CPAL License", * available at http://cpal.abiquo.com), in which case the provisions of CPAL * License are applicable instead of those above. In relation of this portions * of the Code, a Legal Notice according to Exhibits A and B of CPAL Licence * should be provided in any distribution of the corresponding Code to Graphical * User Interface. */ package com.abiquo.util.resources; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Locale; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; import org.apache.log4j.Logger; /** * @author akpor */ public class ResourceBundleControl extends ResourceBundle.Control { private static final Logger logger = Logger.getLogger(ResourceBundleControl.class); public ResourceBundleControl() { super(); } @Override public List<String> getFormats(String baseName) { List<String> list = super.getFormats(baseName); ArrayList<String> arr = new ArrayList<String>(); for (String str : list) arr.add(str); arr.add("xml"); return arr; } @Override public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException { // Get the bundleName, if locale.toString.length () > 0 bundleName = baseName_locale (e.g // baseName_es_Es) if not bundleName = baseName String bundleName = this.toBundleName(baseName, locale); logger.debug("BaseName:" + baseName + " locale:" + locale + " format:" + format + " bundleName: " + bundleName); if (format.equalsIgnoreCase("java.class")) { try { return (ResourceBundle) ResourceConstants.CLASS_LOADER.loadClass(bundleName) .newInstance(); } catch (Exception e) { return null; } } else if (format.equalsIgnoreCase("java.properties")) { String fileName = ResourceConstants.RESOURCES_LOCALE_TXT_ROOT_DIR + bundleName + ".properties"; InputStream inStream = loader.getResourceAsStream(fileName); if (inStream != null) return new PropertyResourceBundle(inStream); else return null; } else if (format.equalsIgnoreCase("xml")) { String fileName = ResourceConstants.RESOURCES_LOCALE_XML_ROOT_DIR + bundleName + ".xml"; return new XMLResourceBundle(loader.getResourceAsStream(fileName)); } else { return null; } } }