< prev index next >

src/java.logging/share/classes/java/util/logging/Logger.java

Print this page

        

*** 644,657 **** }); return Boolean.valueOf(s); } } ! private static Logger demandLogger(String name, String resourceBundleName, Class<?> caller) { LogManager manager = LogManager.getLogManager(); if (!SystemLoggerHelper.disableCallerCheck) { ! if (isSystem(caller.getModule())) { return manager.demandSystemLogger(name, resourceBundleName, caller); } } return manager.demandLogger(name, resourceBundleName, caller); // ends up calling new Logger(name, resourceBundleName, caller) --- 644,665 ---- }); return Boolean.valueOf(s); } } ! private static <T> Class<T> checkCaller(Class<T> caller) { ! if (caller == null) { ! throw new IllegalCallerException("no caller frame"); ! } ! return caller; ! } ! ! private static Logger demandLogger(String name, String resourceBundleName, ! Class<?> caller) { LogManager manager = LogManager.getLogManager(); if (!SystemLoggerHelper.disableCallerCheck) { ! if (isSystem(checkCaller(caller).getModule())) { return manager.demandSystemLogger(name, resourceBundleName, caller); } } return manager.demandLogger(name, resourceBundleName, caller); // ends up calling new Logger(name, resourceBundleName, caller)
*** 682,691 **** --- 690,702 ---- * be based on the package name or class name * of the subsystem, such as java.net * or javax.swing * @return a suitable Logger * @throws NullPointerException if the name is null. + * @throws IllegalCallerException if there is no caller frame, i.e. + * when this {@code getLogger} method is called from JNI + * and there is no Java frame on the stack. */ // Synchronization is not required here. All synchronization for // adding a new Logger object is handled by LogManager.addLogger(). @CallerSensitive
*** 698,708 **** // getLogger("Foo"); // // would throw an IllegalArgumentException in the second call // because the wrapper would result in an attempt to replace // the existing "resourceBundleForFoo" with null. ! return Logger.getLogger(name, Reflection.getCallerClass()); } /** * Find or create a logger for a named subsystem on behalf * of the given caller. --- 709,719 ---- // getLogger("Foo"); // // would throw an IllegalArgumentException in the second call // because the wrapper would result in an attempt to replace // the existing "resourceBundleForFoo" with null. ! return Logger.getLogger(name, checkCaller(Reflection.getCallerClass())); } /** * Find or create a logger for a named subsystem on behalf * of the given caller.
*** 759,775 **** * @throws IllegalArgumentException if the Logger already exists and uses * a different resource bundle name; or if * {@code resourceBundleName} is {@code null} but the named * logger has a resource bundle set. * @throws NullPointerException if the name is null. */ // Synchronization is not required here. All synchronization for // adding a new Logger object is handled by LogManager.addLogger(). @CallerSensitive public static Logger getLogger(String name, String resourceBundleName) { ! return Logger.getLogger(name, resourceBundleName, Reflection.getCallerClass()); } /** * Find or create a logger for a named subsystem on behalf * of the given caller. --- 770,790 ---- * @throws IllegalArgumentException if the Logger already exists and uses * a different resource bundle name; or if * {@code resourceBundleName} is {@code null} but the named * logger has a resource bundle set. * @throws NullPointerException if the name is null. + * @throws IllegalCallerException if there is no caller frame, i.e. + * when this {@code getLogger} method is called from JNI + * and there is no Java frame on the stack. */ // Synchronization is not required here. All synchronization for // adding a new Logger object is handled by LogManager.addLogger(). @CallerSensitive public static Logger getLogger(String name, String resourceBundleName) { ! return Logger.getLogger(name, resourceBundleName, ! checkCaller(Reflection.getCallerClass())); } /** * Find or create a logger for a named subsystem on behalf * of the given caller.
*** 867,886 **** * messages for this logger. * May be null if none of the messages require localization. * @return a newly created private Logger * @throws MissingResourceException if the resourceBundleName is non-null and * no corresponding resource can be found. */ // Synchronization is not required here. All synchronization for // adding a new anonymous Logger object is handled by doSetParent(). @CallerSensitive public static Logger getAnonymousLogger(String resourceBundleName) { LogManager manager = LogManager.getLogManager(); // cleanup some Loggers that have been GC'ed manager.drainLoggerRefQueueBounded(); ! final Class<?> callerClass = Reflection.getCallerClass(); final Module module = callerClass.getModule(); Logger result = new Logger(null, resourceBundleName, module, manager, false); result.anonymous = true; Logger root = manager.getLogger(""); --- 882,904 ---- * messages for this logger. * May be null if none of the messages require localization. * @return a newly created private Logger * @throws MissingResourceException if the resourceBundleName is non-null and * no corresponding resource can be found. + * @throws IllegalCallerException if there is no caller frame, i.e. + * when this {@code getLogger} method is called from JNI + * and there is no Java frame on the stack. */ // Synchronization is not required here. All synchronization for // adding a new anonymous Logger object is handled by doSetParent(). @CallerSensitive public static Logger getAnonymousLogger(String resourceBundleName) { LogManager manager = LogManager.getLogManager(); // cleanup some Loggers that have been GC'ed manager.drainLoggerRefQueueBounded(); ! final Class<?> callerClass = checkCaller(Reflection.getCallerClass()); final Module module = callerClass.getModule(); Logger result = new Logger(null, resourceBundleName, module, manager, false); result.anonymous = true; Logger root = manager.getLogger("");
< prev index next >