equal
deleted
inserted
replaced
118 * in for the root locale. |
118 * in for the root locale. |
119 */ |
119 */ |
120 private static LocaleProviderAdapter fallbackLocaleProviderAdapter = null; |
120 private static LocaleProviderAdapter fallbackLocaleProviderAdapter = null; |
121 |
121 |
122 /** |
122 /** |
|
123 * Default fallback adapter type, which should return something meaningful in any case. |
|
124 * This is either JRE or FALLBACK. |
|
125 */ |
|
126 static LocaleProviderAdapter.Type defaultLocaleProviderAdapter = null; |
|
127 |
|
128 /** |
123 * Adapter lookup cache. |
129 * Adapter lookup cache. |
124 */ |
130 */ |
125 private static ConcurrentMap<Class<? extends LocaleServiceProvider>, ConcurrentMap<Locale, LocaleProviderAdapter>> |
131 private static ConcurrentMap<Class<? extends LocaleServiceProvider>, ConcurrentMap<Locale, LocaleProviderAdapter>> |
126 adapterCache = new ConcurrentHashMap<>(); |
132 adapterCache = new ConcurrentHashMap<>(); |
127 |
133 |
138 Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT)); |
144 Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT)); |
139 |
145 |
140 // load adapter if necessary |
146 // load adapter if necessary |
141 switch (aType) { |
147 switch (aType) { |
142 case CLDR: |
148 case CLDR: |
143 cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter(); |
149 if (cldrLocaleProviderAdapter == null) { |
|
150 cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter(); |
|
151 } |
144 break; |
152 break; |
145 case HOST: |
153 case HOST: |
146 hostLocaleProviderAdapter = new HostLocaleProviderAdapter(); |
154 if (hostLocaleProviderAdapter == null) { |
|
155 hostLocaleProviderAdapter = new HostLocaleProviderAdapter(); |
|
156 } |
147 break; |
157 break; |
148 } |
158 } |
149 typeList.add(aType); |
159 if (!typeList.contains(aType)) { |
|
160 typeList.add(aType); |
|
161 } |
150 } catch (IllegalArgumentException | UnsupportedOperationException e) { |
162 } catch (IllegalArgumentException | UnsupportedOperationException e) { |
151 // could be caused by the user specifying wrong |
163 // could be caused by the user specifying wrong |
152 // provider name or format in the system property |
164 // provider name or format in the system property |
153 LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString()); |
165 LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString()); |
154 } |
166 } |
158 if (!typeList.isEmpty()) { |
170 if (!typeList.isEmpty()) { |
159 if (!typeList.contains(Type.JRE)) { |
171 if (!typeList.contains(Type.JRE)) { |
160 // Append FALLBACK as the last resort. |
172 // Append FALLBACK as the last resort. |
161 fallbackLocaleProviderAdapter = new FallbackLocaleProviderAdapter(); |
173 fallbackLocaleProviderAdapter = new FallbackLocaleProviderAdapter(); |
162 typeList.add(Type.FALLBACK); |
174 typeList.add(Type.FALLBACK); |
|
175 defaultLocaleProviderAdapter = Type.FALLBACK; |
|
176 } else { |
|
177 defaultLocaleProviderAdapter = Type.JRE; |
163 } |
178 } |
164 } else { |
179 } else { |
165 // Default preference list |
180 // Default preference list |
166 typeList.add(Type.JRE); |
181 typeList.add(Type.JRE); |
167 typeList.add(Type.SPI); |
182 typeList.add(Type.SPI); |
|
183 defaultLocaleProviderAdapter = Type.JRE; |
168 } |
184 } |
169 |
185 |
170 adapterPreference = Collections.unmodifiableList(typeList); |
186 adapterPreference = Collections.unmodifiableList(typeList); |
171 } |
187 } |
172 |
188 |