package com.sun.identity.shared.locale;

import com.sun.identity.shared.debug.Debug;
import java.util.HashMap;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public final class AMResourceBundleCache {
   private static AMResourceBundleCache instance;
   private final Map<String, Map<java.util.Locale, ResourceBundle>> mapBundles = new HashMap<>(30);
   private final Debug debug = Debug.getInstance("amSDK");

   public static AMResourceBundleCache getInstance() {
      if (instance == null) {
         instance = new AMResourceBundleCache();
      }

      return instance;
   }

   public ResourceBundle getResBundle(String name, java.util.Locale locale) {
      ResourceBundle resBundle = null;
      Map<java.util.Locale, ResourceBundle> map = this.mapBundles.get(name);
      if (map != null) {
         resBundle = map.get(locale);
      }

      if (resBundle == null) {
         try {
            resBundle = ResourceBundle.getBundle(name, locale);
         } catch (MissingResourceException mre) {
            this.debug.error("AMResourceBundleCache.getResBundle", mre);
         }

         synchronized (this.mapBundles) {
            if (map == null) {
               map = new HashMap<>(5);
               this.mapBundles.put(name, map);
            }

            map.put(locale, resBundle);
         }
      }

      return resBundle;
   }
}
