1/*
2 * Copyright (c) 1999, 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 */
23
24/*
25 * @test
26 * @bug 4240252
27 * @summary Make sure BasicPermission constructor raises
28 * NullPointerException if permission name is null, and
29 * IllegalArgumentException is permission name is empty.
30 */
31
32public class NullOrEmptyName {
33
34    public static void main(String[]args) throws Exception {
35        NullOrEmptyName noe = new NullOrEmptyName();
36
37        // run without sm installed
38        noe.run();
39
40        // run with sm installed
41        SecurityManager sm = new SecurityManager();
42        System.setSecurityManager(sm);
43        noe.run();
44
45        try {
46            // called by System.getProperty()
47            sm.checkPropertyAccess(null);
48            throw new Exception("Expected NullPointerException not thrown");
49        } catch (NullPointerException npe) {
50            // expected exception thrown
51        }
52
53        try {
54            // called by System.getProperty()
55            sm.checkPropertyAccess("");
56            throw new Exception("Expected IllegalArgumentException not " +
57                                "thrown");
58        } catch (IllegalArgumentException iae) {
59            // expected exception thrown
60        }
61    }
62
63    void run() throws Exception {
64
65        try {
66            System.getProperty(null);
67            throw new Exception("Expected NullPointerException not " +
68                                "thrown");
69        } catch (NullPointerException npe) {
70            // expected exception thrown
71        }
72
73        try {
74            System.getProperty(null, "value");
75            throw new Exception("Expected NullPointerException not " +
76                                "thrown");
77        } catch (NullPointerException npe) {
78            // expected exception thrown
79        }
80
81        try {
82            System.getProperty("");
83            throw new Exception("Expected IllegalArgumentException not " +
84                                "thrown");
85        } catch (IllegalArgumentException iae) {
86            // expected exception thrown
87        }
88
89        try {
90            System.getProperty("", "value");
91            throw new Exception("Expected IllegalArgumentException not " +
92                                "thrown");
93        } catch (IllegalArgumentException iae) {
94            // expected exception thrown
95        }
96
97        try {
98            System.setProperty(null, "value");
99            throw new Exception("Expected NullPointerException not " +
100                                "thrown");
101        } catch (NullPointerException npe) {
102            // expected exception thrown
103        }
104
105        try {
106            System.setProperty("", "value");
107            throw new Exception("Expected IllegalArgumentException not " +
108                                "thrown");
109        } catch (IllegalArgumentException iae) {
110            // expected exception thrown
111        }
112    }
113}
114