130
131 /**
132 * The set of loaded providers.
133 */
134 private static final CopyOnWriteArrayList<ZoneRulesProvider> PROVIDERS = new CopyOnWriteArrayList<>();
135 /**
136 * The lookup from zone ID to provider.
137 */
138 private static final ConcurrentMap<String, ZoneRulesProvider> ZONES = new ConcurrentHashMap<>(512, 0.75f, 2);
139
140 static {
141 // if the property java.time.zone.DefaultZoneRulesProvider is
142 // set then its value is the class name of the default provider
143 final List<ZoneRulesProvider> loaded = new ArrayList<>();
144 AccessController.doPrivileged(new PrivilegedAction<>() {
145 public Object run() {
146 String prop = System.getProperty("java.time.zone.DefaultZoneRulesProvider");
147 if (prop != null) {
148 try {
149 Class<?> c = Class.forName(prop, true, ClassLoader.getSystemClassLoader());
150 ZoneRulesProvider provider = ZoneRulesProvider.class.cast(c.newInstance());
151 registerProvider(provider);
152 loaded.add(provider);
153 } catch (Exception x) {
154 throw new Error(x);
155 }
156 } else {
157 registerProvider(new TzdbZoneRulesProvider());
158 }
159 return null;
160 }
161 });
162
163 ServiceLoader<ZoneRulesProvider> sl = ServiceLoader.load(ZoneRulesProvider.class, ClassLoader.getSystemClassLoader());
164 Iterator<ZoneRulesProvider> it = sl.iterator();
165 while (it.hasNext()) {
166 ZoneRulesProvider provider;
167 try {
168 provider = it.next();
169 } catch (ServiceConfigurationError ex) {
|
130
131 /**
132 * The set of loaded providers.
133 */
134 private static final CopyOnWriteArrayList<ZoneRulesProvider> PROVIDERS = new CopyOnWriteArrayList<>();
135 /**
136 * The lookup from zone ID to provider.
137 */
138 private static final ConcurrentMap<String, ZoneRulesProvider> ZONES = new ConcurrentHashMap<>(512, 0.75f, 2);
139
140 static {
141 // if the property java.time.zone.DefaultZoneRulesProvider is
142 // set then its value is the class name of the default provider
143 final List<ZoneRulesProvider> loaded = new ArrayList<>();
144 AccessController.doPrivileged(new PrivilegedAction<>() {
145 public Object run() {
146 String prop = System.getProperty("java.time.zone.DefaultZoneRulesProvider");
147 if (prop != null) {
148 try {
149 Class<?> c = Class.forName(prop, true, ClassLoader.getSystemClassLoader());
150 @SuppressWarnings("deprecation")
151 ZoneRulesProvider provider = ZoneRulesProvider.class.cast(c.newInstance());
152 registerProvider(provider);
153 loaded.add(provider);
154 } catch (Exception x) {
155 throw new Error(x);
156 }
157 } else {
158 registerProvider(new TzdbZoneRulesProvider());
159 }
160 return null;
161 }
162 });
163
164 ServiceLoader<ZoneRulesProvider> sl = ServiceLoader.load(ZoneRulesProvider.class, ClassLoader.getSystemClassLoader());
165 Iterator<ZoneRulesProvider> it = sl.iterator();
166 while (it.hasNext()) {
167 ZoneRulesProvider provider;
168 try {
169 provider = it.next();
170 } catch (ServiceConfigurationError ex) {
|