jdk/src/share/classes/java/util/logging/Logger.java
changeset 10046 f80878957a13
parent 9699 5dfc211872f4
child 14216 23714b376286
equal deleted inserted replaced
10045:b5804d1415e7 10046:f80878957a13
   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         }