107 * Default fallback adapter type, which should return something meaningful in any case.
108 * This is either CLDR or FALLBACK.
109 */
110 static volatile LocaleProviderAdapter.Type defaultLocaleProviderAdapter = null;
111
112 /**
113 * Adapter lookup cache.
114 */
115 private static ConcurrentMap<Class<? extends LocaleServiceProvider>, ConcurrentMap<Locale, LocaleProviderAdapter>>
116 adapterCache = new ConcurrentHashMap<>();
117
118 static {
119 String order = AccessController.doPrivileged(
120 new sun.security.action.GetPropertyAction("java.locale.providers"));
121 List<Type> typeList = new ArrayList<>();
122
123 // Check user specified adapter preference
124 if (order != null && order.length() != 0) {
125 String[] types = order.split(",");
126 for (String type : types) {
127 try {
128 Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT));
129 if (!typeList.contains(aType)) {
130 typeList.add(aType);
131 }
132 } catch (IllegalArgumentException | UnsupportedOperationException e) {
133 // could be caused by the user specifying wrong
134 // provider name or format in the system property
135 LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
136 }
137 }
138 }
139
140 defaultLocaleProviderAdapter = Type.CLDR;
141 if (!typeList.isEmpty()) {
142 // bona fide preference exists
143 if (!typeList.contains(Type.CLDR)) {
144 // Append FALLBACK as the last resort.
145 typeList.add(Type.FALLBACK);
146 defaultLocaleProviderAdapter = Type.FALLBACK;
|
107 * Default fallback adapter type, which should return something meaningful in any case.
108 * This is either CLDR or FALLBACK.
109 */
110 static volatile LocaleProviderAdapter.Type defaultLocaleProviderAdapter = null;
111
112 /**
113 * Adapter lookup cache.
114 */
115 private static ConcurrentMap<Class<? extends LocaleServiceProvider>, ConcurrentMap<Locale, LocaleProviderAdapter>>
116 adapterCache = new ConcurrentHashMap<>();
117
118 static {
119 String order = AccessController.doPrivileged(
120 new sun.security.action.GetPropertyAction("java.locale.providers"));
121 List<Type> typeList = new ArrayList<>();
122
123 // Check user specified adapter preference
124 if (order != null && order.length() != 0) {
125 String[] types = order.split(",");
126 for (String type : types) {
127 type = type.trim().toUpperCase(Locale.ROOT);
128 if (type.equals("COMPAT")) {
129 type = "JRE";
130 }
131 try {
132 Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT));
133 if (!typeList.contains(aType)) {
134 typeList.add(aType);
135 }
136 } catch (IllegalArgumentException | UnsupportedOperationException e) {
137 // could be caused by the user specifying wrong
138 // provider name or format in the system property
139 LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
140 }
141 }
142 }
143
144 defaultLocaleProviderAdapter = Type.CLDR;
145 if (!typeList.isEmpty()) {
146 // bona fide preference exists
147 if (!typeList.contains(Type.CLDR)) {
148 // Append FALLBACK as the last resort.
149 typeList.add(Type.FALLBACK);
150 defaultLocaleProviderAdapter = Type.FALLBACK;
|