test/jdk/java/util/logging/TestGetLoggerNPE.java
author mchung
Tue, 06 Nov 2018 10:01:16 -0800
changeset 52427 3c6aa484536c
parent 47216 71c04702a3d5
permissions -rw-r--r--
8211122: Reduce the number of internal classes made accessible to jdk.unsupported Reviewed-by: alanb, dfuchs, kvn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22953
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     1
/*
52427
3c6aa484536c 8211122: Reduce the number of internal classes made accessible to jdk.unsupported
mchung
parents: 47216
diff changeset
     2
 * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
22953
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     4
 *
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     7
 * published by the Free Software Foundation.
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     8
 *
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    13
 * accompanied this code).
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    14
 *
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    18
 *
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    21
 * questions.
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    22
 */
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    23
import java.io.PrintStream;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    24
import java.security.Permission;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    25
import java.security.Policy;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    26
import java.security.ProtectionDomain;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    27
import java.util.logging.LogManager;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    28
import java.util.logging.Logger;
52427
3c6aa484536c 8211122: Reduce the number of internal classes made accessible to jdk.unsupported
mchung
parents: 47216
diff changeset
    29
import jdk.internal.access.JavaAWTAccess;
3c6aa484536c 8211122: Reduce the number of internal classes made accessible to jdk.unsupported
mchung
parents: 47216
diff changeset
    30
import jdk.internal.access.SharedSecrets;
22953
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    31
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    32
/*
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    33
 * @test
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    34
 * @bug 8025512
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    35
 *
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    36
 * @summary NPE with logging while launching webstart
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    37
 *
52427
3c6aa484536c 8211122: Reduce the number of internal classes made accessible to jdk.unsupported
mchung
parents: 47216
diff changeset
    38
 * @modules java.base/jdk.internal.access
35768
7066da300a08 8149391: Fix module dependences in java/util tests
shurailine
parents: 32834
diff changeset
    39
 *          java.logging
22953
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    40
 * @build TestGetLoggerNPE
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    41
 * @run main/othervm TestGetLoggerNPE getLogger
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    42
 * @run main/othervm TestGetLoggerNPE getLogManager
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    43
 */
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    44
public class TestGetLoggerNPE {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    45
    static volatile Throwable thrown = null;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    46
    public static void main(String[] args) throws Exception {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    47
        final String testCase = args.length == 0 ? "getLogger" : args[0];
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    48
        final JavaAWTAccessStub access = new JavaAWTAccessStub();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    49
        SharedSecrets.setJavaAWTAccess(access);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    50
        final ThreadGroup tg = new ThreadGroup("TestGroup");
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    51
        Thread t = new Thread(tg, "test") {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    52
            public void run() {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    53
                try {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    54
                    access.setContext(Context.ONE);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    55
                    final PrintStream out = System.out;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    56
                    System.setOut(null);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    57
                    try {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    58
                        if ("getLogger".equals(testCase)) {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    59
                           Logger.getLogger("sun.plugin");
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    60
                        } else {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    61
                           LogManager.getLogManager();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    62
                        }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    63
                    } finally {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    64
                        System.setOut(out);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    65
                    }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    66
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    67
                    System.out.println(Logger.global);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    68
                } catch (Throwable x) {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    69
                    x.printStackTrace();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    70
                    thrown = x;
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    71
                }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    72
            }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    73
        };
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    74
        Policy.setPolicy(new Policy() {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    75
             public boolean implies(ProtectionDomain domain,
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    76
                                    Permission permission) {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    77
                 return true; // all permissions
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    78
             }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    79
        });
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    80
        System.setSecurityManager(new SecurityManager());
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    81
        t.start();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    82
        t.join();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    83
        if (thrown == null) {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    84
            System.out.println("PASSED: " + testCase);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    85
        } else {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    86
            System.err.println("FAILED: " + testCase);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    87
            throw new Error("Test failed: " + testCase + " - " + thrown, thrown);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    88
        }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    89
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    90
    }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    91
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    92
    static enum Context { ONE, TWO };
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    93
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    94
    static final class JavaAWTAccessStub implements JavaAWTAccess {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    95
        private static final InheritableThreadLocal<Context> context = new InheritableThreadLocal<>();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    96
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    97
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    98
        public void setContext(Context context) {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
    99
            JavaAWTAccessStub.context.set(context);
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   100
        }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   101
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   102
        @Override
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   103
        public Object getAppletContext() {
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   104
            return context.get();
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   105
        }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   106
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   107
     }
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   108
269b0b696c0c 8029876: Add a test to verify that Logger.getLogger & LogManager.getLogManager don't throw NPE when System.out == null
dfuchs
parents:
diff changeset
   109
}