Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/Introspector/AnnotationSecurityTest.java
41149 views
1
/*
2
* Copyright (c) 2006, 2015, 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 AnnotationSecurityTest.java
26
* @bug 6366543 6370080
27
* @summary Test that having a security manager doesn't trigger a
28
* NotCompliantMBeanException
29
* @author Daniel Fuchs, Yves Joan
30
*
31
* @modules java.desktop
32
* java.management
33
*
34
* @run clean AnnotationSecurityTest Described UnDescribed DescribedMBean
35
* UnDescribedMBean SqeDescriptorKey DescribedMX DescribedMXBean
36
* @run build AnnotationSecurityTest Described UnDescribed DescribedMBean
37
* UnDescribedMBean SqeDescriptorKey DescribedMX DescribedMXBean
38
* @run main/othervm -Djava.security.manager=allow AnnotationSecurityTest
39
*/
40
// -Djava.security.debug=access,domain,policy
41
42
import java.io.File;
43
import java.io.IOException;
44
45
import java.lang.management.ManagementFactory;
46
import java.lang.reflect.Method;
47
import javax.management.MBeanServer;
48
import javax.management.ObjectName;
49
/**
50
*
51
* @author Sun Microsystems, 2005 - All rights reserved.
52
*/
53
54
public class AnnotationSecurityTest {
55
56
/** Creates a new instance of AnnotationSecurityTest */
57
public AnnotationSecurityTest() {
58
}
59
60
public static void main(String[] argv) {
61
AnnotationSecurityTest test = new AnnotationSecurityTest();
62
test.run();
63
}
64
65
66
public void run() {
67
try {
68
final String testSrc = System.getProperty("test.src");
69
final String codeBase = System.getProperty("test.classes");
70
final String policy = testSrc + File.separator +
71
"AnnotationSecurityTest.policy";
72
final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
73
final File pf = new File(policy);
74
if (!pf.exists())
75
throw new IOException("policy file not found: " + policy);
76
if (!pf.canRead())
77
throw new IOException("policy file not readable: " + policy);
78
79
System.out.println("Policy="+policy);
80
System.setProperty("java.security.policy",policy);
81
System.setSecurityManager(new SecurityManager());
82
83
// We check that 6370080 is fixed.
84
//
85
try {
86
final Method m1 =
87
DescribedMBean.class.getMethod("getStringProp");
88
final Method m2 =
89
DescribedMBean.class.getMethod("setStringProp",
90
String.class);
91
m1.getAnnotations();
92
m2.getAnnotations();
93
} catch (SecurityException x) {
94
System.err.println("ERROR: 6370080 not fixed.");
95
throw new IllegalStateException("ERROR: 6370080 not fixed.",x);
96
}
97
98
// Do the test: we should be able to register these 3 MBeans....
99
// We now test that the behaviour described in 6366543 does no
100
// longer appears now that 6370080 is fixed.
101
//
102
103
final ObjectName name1 =
104
new ObjectName("defaultDomain:class=UnDescribed");
105
UnDescribed unDescribedMBean = new UnDescribed();
106
System.out.println("\nWe register an MBean where DescriptorKey is " +
107
"not used at all");
108
mbs.registerMBean(unDescribedMBean, name1);
109
System.out.println("\n\tOK - The MBean "
110
+ name1 + " is registered = " + mbs.isRegistered(name1));
111
112
final ObjectName name2 =
113
new ObjectName("defaultDomain:class=Described");
114
final Described describedMBean = new Described();
115
116
System.out.println("\nWe register an MBean with exactly the " +
117
"same management"
118
+ " interface as above and where DescriptorKey is used.");
119
mbs.registerMBean(describedMBean, name2);
120
System.out.println("\n\tOK - The MBean "
121
+ name2 + " is registered = " + mbs.isRegistered(name2));
122
123
final ObjectName name3 =
124
new ObjectName("defaultDomain:class=DescribedMX");
125
final DescribedMX describedMXBean = new DescribedMX();
126
127
System.out.println("\nWe register an MXBean with exactly the " +
128
"same management"
129
+ " interface as above and where DescriptorKey is used.");
130
mbs.registerMBean(describedMXBean, name3);
131
System.out.println("\n\tOK - The MXBean "
132
+ name3 + " is registered = " + mbs.isRegistered(name3));
133
134
System.out.println("\nAll three MBeans correctly registered...");
135
136
137
// We check that we don't have getAttribute() permission - as
138
// it's been voluntarily omitted from our policy file.
139
// If we don't get the Security Exception there is probably
140
// a security configuration pb...
141
//
142
try {
143
// We don't have getAttribute() permission, so this must fail.
144
System.err.println("Trying getStringProp() - should fail");
145
mbs.getAttribute(name1,"StringProp");
146
System.err.println("ERROR: didn't get expected SecurityException"
147
+"\n\t check security configuration & policy file: "+
148
policy);
149
throw new RuntimeException("getStringProp() did not get a " +
150
"SecurityException!");
151
} catch (SecurityException x) {
152
// OK!
153
System.err.println("getStringProp() - failed");
154
}
155
156
} catch (Exception t) {
157
t.printStackTrace();
158
if (t instanceof RuntimeException)
159
throw (RuntimeException)t;
160
else throw new RuntimeException(t);
161
}
162
}
163
164
}
165
166