/* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moaspss.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.MissingResourceException; import java.util.ResourceBundle; /** * A class to chain ResourceBundles. * * @author Patrick Peck * @version $Id$ */ public class ResourceBundleChain { /** Error message indicating the resource is not available. */ private static final String ERROR_MISSING_RESOURCE = "Missing resource"; /** The ResourceBundles contained in this chain. */ private List resourceBundles = new ArrayList(); /** * Add a ResourceBundle to the chain. * * @param resourceBundle The ResourceBundle to add. */ public void addResourceBundle(ResourceBundle resourceBundle) { resourceBundles.add(resourceBundle); } /** * Return the value of the resource. * * @param key The key to access the String resource. * @return The resource value. All the registered ResourceBundles * are searched in the order in which they have previously been added to this * ResourceBundleChain. * @throws MissingResourceException The resource coult not be found in any of * the bundles. */ public String getString(String key) throws MissingResourceException { MissingResourceException lastException = null; Iterator iter; // handle case where no resource bundles have been added if (resourceBundles.size() == 0) { throw new MissingResourceException( ERROR_MISSING_RESOURCE, this.getClass().getName(), key); } // try to find the resource in one of the bundles; if it cannot be found, // return the exception thrown by the last bundle in the list for (iter = resourceBundles.iterator(); iter.hasNext();) { ResourceBundle resourceBundle = (ResourceBundle) iter.next(); try { String value = resourceBundle.getString(key); return value; } catch (MissingResourceException e) { lastException = e; } } throw lastException; } }