1 48 49 package com.caucho.portal.generic; 50 51 import java.util.*; 52 53 public class ResourceBundleFactory 54 { 55 private String _name; 56 private Map<String ,Object > _defaultMap; 57 private Map<Locale, PortletResourceBundle> _bundleMap 58 = new HashMap<Locale, PortletResourceBundle>(); 59 60 public ResourceBundleFactory() 61 { 62 _defaultMap = new LinkedHashMap<String , Object >(); 63 addDefault("javax.portlet.title", ""); 64 addDefault("javax.portlet.short-title", ""); 65 addDefault("javax.portlet.keywords", ""); 66 } 67 68 73 public void setName(String name) 74 { 75 _name = name; 76 _bundleMap.clear(); 77 } 78 79 86 public void addDefault(String key, String value) 87 { 88 _defaultMap.put(key, value); 89 } 90 91 public void addDefault(NameValuePair nameValuePair) 92 { 93 addDefault(nameValuePair.getName(), nameValuePair.getValue()); 94 } 95 96 public ResourceBundle getResourceBundle(Locale locale) 97 { 98 PortletResourceBundle bundle = _bundleMap.get(locale); 99 100 if (bundle == null) { 101 bundle = new PortletResourceBundle(_name, locale, _defaultMap); 102 _bundleMap.put(locale, bundle); 103 } 104 105 return bundle; 106 } 107 108 static class PortletResourceBundle extends ResourceBundle 109 { 110 private Locale _locale; 111 private Map<String , Object > _defaultMap; 112 private ResourceBundle _parent; 113 114 public PortletResourceBundle( String name, 115 Locale locale, 116 Map<String , Object > defaultMap ) 117 { 118 _locale = locale; 119 _defaultMap = defaultMap; 120 121 if (name != null) { 122 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 123 124 _parent = ResourceBundle.getBundle(name, _locale, loader); 125 126 super.setParent(_parent); 127 } 128 } 129 130 public Locale getLocale() 131 { 132 return _parent == null ? _locale : _parent.getLocale(); 133 } 134 135 public Object handleGetObject(String key) 136 { 137 if (_parent == null) { 138 if (_defaultMap != null) 139 return _defaultMap.get(key); 140 else 141 return null; 142 } 143 144 try { 145 return _parent.getObject(key); 146 } 147 catch (MissingResourceException ex) { 148 if (_defaultMap != null) 149 return _defaultMap.get(key); 150 else 151 return null; 152 } 153 } 154 155 public Enumeration getKeys() 156 { 157 if (_defaultMap != null) 158 return Collections.enumeration(_defaultMap.keySet()); 159 else 160 return Collections.enumeration(Collections.EMPTY_LIST); 161 } 162 } 163 } 164 165 166 | Popular Tags |