1 /*
2 * Copyright (c) 2003, 2022, 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 package nsk.jvmti.GetClassModifiers;
25
26 import java.io.PrintStream;
27 import java.lang.reflect.Modifier;
28
29 public class getclmdf006 {
30
31 final static int JCK_STATUS_BASE = 95;
32
33 static {
34 try {
35 System.loadLibrary("getclmdf006");
36 } catch (UnsatisfiedLinkError ule) {
37 System.err.println("Could not load getclmdf006 library");
38 System.err.println("java.library.path:"
39 + System.getProperty("java.library.path"));
40 throw ule;
41 }
42 }
43
44 native static void check(Class cls, int mod);
45 native static int getRes();
46
47 public static void main(String args[]) {
48 args = nsk.share.jvmti.JVMTITest.commonInit(args);
49
50 // produce JCK-like exit status.
51 System.exit(run(args, System.out) + JCK_STATUS_BASE);
52 }
53
54 public static int run(String args[], PrintStream out) {
55 check(getclmdf006a.class, 0);
56 check(getclmdf006b.class, Modifier.FINAL);
57 check(getclmdf006c.class, Modifier.ABSTRACT);
58 check(getclmdf006d.class, Modifier.INTERFACE | Modifier.ABSTRACT);
59 check(getclmdf006e.class, Modifier.PUBLIC | Modifier.INTERFACE |
60 Modifier.ABSTRACT);
61 check(Inner01.class, Modifier.PUBLIC);
62 check(Inner02.class, Modifier.PUBLIC | Modifier.FINAL);
63 check(Inner03.class, Modifier.PUBLIC | Modifier.ABSTRACT);
64 check(Inner04.class, Modifier.PRIVATE);
65 check(Inner05.class, Modifier.PRIVATE | Modifier.FINAL);
66 check(Inner06.class, Modifier.PRIVATE | Modifier.ABSTRACT);
67 check(Inner07.class, Modifier.PROTECTED);
68 check(Inner08.class, Modifier.PROTECTED | Modifier.FINAL);
69 check(Inner09.class, Modifier.PROTECTED | Modifier.ABSTRACT);
70 check(Inner10.class, Modifier.STATIC);
71 check(Inner11.class, Modifier.STATIC | Modifier.FINAL);
72 check(Inner12.class, Modifier.STATIC | Modifier.ABSTRACT);
73 check(Inner13.class, Modifier.PUBLIC | Modifier.STATIC);
74 check(Inner14.class, Modifier.PUBLIC | Modifier.STATIC |
75 Modifier.FINAL);
76 check(Inner15.class, Modifier.PUBLIC | Modifier.STATIC |
77 Modifier.ABSTRACT);
78 check(Inner16.class, Modifier.PRIVATE | Modifier.STATIC);
79 check(Inner17.class, Modifier.PRIVATE | Modifier.STATIC |
80 Modifier.FINAL);
81 check(Inner18.class, Modifier.PRIVATE | Modifier.STATIC |
82 Modifier.ABSTRACT);
83 check(Inner19.class, Modifier.PROTECTED | Modifier.STATIC);
84 check(Inner20.class, Modifier.PROTECTED | Modifier.STATIC |
85 Modifier.FINAL);
86 check(Inner21.class, Modifier.PROTECTED | Modifier.STATIC |
87 Modifier.ABSTRACT);
88 check(Inner22.class, Modifier.STATIC | Modifier.INTERFACE |
89 Modifier.ABSTRACT);
90 check(Inner23.class, Modifier.PUBLIC | Modifier.STATIC |
91 Modifier.INTERFACE | Modifier.ABSTRACT);
92 check(Inner24.class, Modifier.PRIVATE | Modifier.STATIC |
93 Modifier.INTERFACE | Modifier.ABSTRACT);
94 check(Inner25.class, Modifier.PROTECTED | Modifier.STATIC |
95 Modifier.INTERFACE | Modifier.ABSTRACT);
96 return getRes();
97 }
98
99 public class Inner01 {}
100 public final class Inner02 {}
101 public abstract class Inner03 {}
102 private class Inner04 {}
103 private final class Inner05 {}
104 private abstract class Inner06 {}
105 protected class Inner07 {}
106 protected final class Inner08 {}
107 protected abstract class Inner09 {}
108 static class Inner10 {}
109 static final class Inner11 {}
110 static abstract class Inner12 {}
111 public static class Inner13 {}
112 public static final class Inner14 {}
113 public static abstract class Inner15 {}
114 private static class Inner16 {}
115 private static final class Inner17 {}
116 private static abstract class Inner18 {}
117 protected static class Inner19 {}
118 protected static final class Inner20 {}
119 protected static abstract class Inner21 {}
120
121 interface Inner22 {}
122 public interface Inner23 {}
123 private interface Inner24 {}
124 protected interface Inner25 {}
125 }
126
127 class getclmdf006a {}
128 final class getclmdf006b {}
129 abstract class getclmdf006c {}
130 interface getclmdf006d {}
--- EOF ---