1/*
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23package testgetglobal;
24
25import java.util.logging.LogManager;
26import java.util.logging.Logger;
27
28/**
29 * This class is used to verify that calling Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
30 * in the static initializer of a LogManager subclass installed as default
31 * LogManager does not cause issues beyond throwing the expected NPE.
32 * @author danielfuchs
33 */
34public class LogManagerImpl3 extends LogManager {
35
36    static final Logger global;
37    static {
38        Logger g = null;
39        try {
40            g = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
41            throw new Error("Should not have reached here");
42        } catch (Exception x) {
43            // This is to be expected: Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
44            // will call LogManager.getLogManager() which will return null, since
45            // we haven't manage to do new LogManagerImpl3() yet.
46            //
47            System.err.println("Got expected exception - you cannot call"
48                   + " Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)"
49                   + " in LogManager subclass static initializer: " + x);
50            x.printStackTrace();
51        }
52        if (g == null) {
53            g = Logger.getGlobal();
54        }
55        global = g;
56        System.err.println("Global is: " + global);
57    }
58
59}
60