249 * no corresponding resource can be found. |
249 * no corresponding resource can be found. |
250 */ |
250 */ |
251 protected Logger(String name, String resourceBundleName) { |
251 protected Logger(String name, String resourceBundleName) { |
252 this.manager = LogManager.getLogManager(); |
252 this.manager = LogManager.getLogManager(); |
253 if (resourceBundleName != null) { |
253 if (resourceBundleName != null) { |
254 // Note: we may get a MissingResourceException here. |
254 // MissingResourceException or IllegalArgumentException can |
|
255 // be thrown by setupResourceInfo(). Since this is the Logger |
|
256 // constructor, the resourceBundleName field is null so |
|
257 // IllegalArgumentException cannot happen here. |
255 setupResourceInfo(resourceBundleName); |
258 setupResourceInfo(resourceBundleName); |
256 } |
259 } |
257 this.name = name; |
260 this.name = name; |
258 levelValue = Level.INFO.intValue(); |
261 levelValue = Level.INFO.intValue(); |
259 } |
262 } |
372 // Synchronization is not required here. All synchronization for |
375 // Synchronization is not required here. All synchronization for |
373 // adding a new Logger object is handled by LogManager.addLogger(). |
376 // adding a new Logger object is handled by LogManager.addLogger(). |
374 public static Logger getLogger(String name, String resourceBundleName) { |
377 public static Logger getLogger(String name, String resourceBundleName) { |
375 LogManager manager = LogManager.getLogManager(); |
378 LogManager manager = LogManager.getLogManager(); |
376 Logger result = manager.demandLogger(name); |
379 Logger result = manager.demandLogger(name); |
377 if (result.resourceBundleName == null) { |
380 |
378 // Note: we may get a MissingResourceException here. |
381 // MissingResourceException or IllegalArgumentException can be |
379 result.setupResourceInfo(resourceBundleName); |
382 // thrown by setupResourceInfo(). |
380 } else if (!result.resourceBundleName.equals(resourceBundleName)) { |
383 result.setupResourceInfo(resourceBundleName); |
381 throw new IllegalArgumentException(result.resourceBundleName + |
|
382 " != " + resourceBundleName); |
|
383 } |
|
384 return result; |
384 return result; |
385 } |
385 } |
386 |
386 |
387 |
387 |
388 /** |
388 /** |
1351 // Sorry, we're out of luck. |
1351 // Sorry, we're out of luck. |
1352 return null; |
1352 return null; |
1353 } |
1353 } |
1354 |
1354 |
1355 // Private utility method to initialize our one entry |
1355 // Private utility method to initialize our one entry |
1356 // resource bundle cache. |
1356 // resource bundle name cache. |
1357 // Note: for consistency reasons, we are careful to check |
1357 // Note: for consistency reasons, we are careful to check |
1358 // that a suitable ResourceBundle exists before setting the |
1358 // that a suitable ResourceBundle exists before setting the |
1359 // ResourceBundleName. |
1359 // resourceBundleName field. |
|
1360 // Synchronized to prevent races in setting the field. |
1360 private synchronized void setupResourceInfo(String name) { |
1361 private synchronized void setupResourceInfo(String name) { |
1361 if (name == null) { |
1362 if (name == null) { |
1362 return; |
1363 return; |
1363 } |
1364 } |
|
1365 |
|
1366 if (resourceBundleName != null) { |
|
1367 // this Logger already has a ResourceBundle |
|
1368 |
|
1369 if (resourceBundleName.equals(name)) { |
|
1370 // the names match so there is nothing more to do |
|
1371 return; |
|
1372 } |
|
1373 |
|
1374 // cannot change ResourceBundles once they are set |
|
1375 throw new IllegalArgumentException( |
|
1376 resourceBundleName + " != " + name); |
|
1377 } |
|
1378 |
1364 ResourceBundle rb = findResourceBundle(name); |
1379 ResourceBundle rb = findResourceBundle(name); |
1365 if (rb == null) { |
1380 if (rb == null) { |
1366 // We've failed to find an expected ResourceBundle. |
1381 // We've failed to find an expected ResourceBundle. |
1367 throw new MissingResourceException("Can't find " + name + " bundle", name, ""); |
1382 throw new MissingResourceException("Can't find " + name + " bundle", name, ""); |
1368 } |
1383 } |