Hi,

Please find below a patch for:

8013839: Enhance Logger API for handling of resource bundles, and
4814565: (rb) add method to get basename from a ResourceBundle

<http://cr.openjdk.java.net/~dfuchs/webrev_8013839/webrev.06/>

   1. It adds a ResourceBundle.getBaseBundleName() method,
   2. It adds a Logger.setResourceBundle(ResourceBundle) method,
   3. It adds a series of Logger.logrb(...) that take a ResourceBundle
        object instead of a ResourceBundle name.
        The previous versions of Logger.logrb(...) that took a
        resource bundle name are therefore no longer needed,
        they offer no added value above the new methods, and
        are thus now deprecated.

Logger.getLogger(name, rbname) will continue to work as before,
     and will also throw an exception if a RB with a different name
     has been set before, either through setResourceBundle or
     Logger.getLogger(name, rbname).

Logger.setResourceBundle works similarly to
     Logger.getLogger(name, rbname) in the sense that it will not
     allow to replace an existing bundle, unless both have the same
     name. Like for Logger.getLogger(name, rbname) - it doesn't matter
     by which method the previous bundle has been set.

     This is mostly for consistency of the API - if thread A has
     requested a logger with resource bundle name 'foo.Bundle'
     and thread B attempts to set the resource bundle of that
     logger to 'bar.Bundle' then thread B will get an IAE.

     The resource bundle passed to Logger.setResourceBundle *must*
     have a base name. Note that ResourceBundle objects will have
     a base name by default if they have been loaded through
     one of the ResourceBundle.getBundle(...) methods;
     If ResourceBundle.getBaseBundleName() returns null an IAE
     will be thrown.

     Logger.setResourceBundle requires the "control" permission.

     When a resource bundle is set with Logger.setResourceBundle,
     then it's that resource bundle locale that will be used
     when logging (and not the default locale).

I have written a set of unit tests which should cover all the points
listed above.

best regards,

-- daniel

Reply via email to