Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/modelmbean/InfoSupportTest.java
41149 views
1
/*
2
* Copyright (c) 2004, 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
26
* @bug 4967769 4980655 4980668 4981214
27
* @summary Test that ModelMBeanInfoSupport.setDescriptor rejects
28
* null descriptor, that empty arrays are handled correctly,
29
* that getDescriptors("mbean") works, and that default values for
30
* MBean descriptors are correctly assigned.
31
* @author Eamonn McManus
32
*
33
* @run clean InfoSupportTest
34
* @run build InfoSupportTest
35
* @run main InfoSupportTest
36
*/
37
38
import java.util.*;
39
import javax.management.Descriptor;
40
import javax.management.RuntimeOperationsException;
41
import javax.management.modelmbean.*;
42
43
public class InfoSupportTest {
44
public static void main(String[] args) throws Exception {
45
boolean ok = true;
46
47
ok &= testSetDescriptorNull();
48
ok &= testEmptyArrayParameters();
49
ok &= testGetDescriptorsForMBean();
50
51
if (ok)
52
System.out.println("Test passed");
53
else {
54
System.out.println("TEST FAILED");
55
System.exit(1);
56
}
57
}
58
59
private static boolean testSetDescriptorNull() {
60
System.out.println("Testing that " +
61
"ModelMBeanInfoSupport.setDescriptor(null, \"x\")" +
62
" throws an exception");
63
64
ModelMBeanAttributeInfo mmbai =
65
new ModelMBeanAttributeInfo("attribute",
66
"java.lang.String",
67
"an attribute",
68
true, true, false);
69
ModelMBeanInfo mmbi =
70
new ModelMBeanInfoSupport("bogus.class.name",
71
"an MBean",
72
new ModelMBeanAttributeInfo[] {mmbai},
73
null, null, null);
74
try {
75
mmbi.setDescriptor(null, "attribute");
76
} catch (RuntimeOperationsException e) {
77
if (e.getTargetException() instanceof IllegalArgumentException) {
78
System.out.println("Test passes: got a " +
79
"RuntimeOperationsException wrapping an " +
80
"IllegalArgumentException");
81
return true;
82
} else {
83
System.out.println("TEST FAILS: wrong exception:");
84
e.printStackTrace(System.out);
85
return false;
86
}
87
} catch (Exception e) {
88
System.out.println("TEST FAILS: wrong exception:");
89
e.printStackTrace(System.out);
90
return false;
91
}
92
93
System.out.println("TEST FAILS: exception not thrown");
94
return false;
95
}
96
97
private static boolean testEmptyArrayParameters()
98
throws Exception {
99
100
System.out.println("Test that empty and null array parameters " +
101
"produce the right type from getters");
102
103
boolean ok = true;
104
105
ModelMBeanInfoSupport mmbi;
106
107
mmbi =
108
new ModelMBeanInfoSupport("bogus.class.name", "description",
109
null, null, null, null);
110
ok &= checkMMBI(mmbi, "null parameters, no descriptor");
111
112
mmbi =
113
new ModelMBeanInfoSupport("bogus.class.name", "description",
114
null, null, null, null, null);
115
ok &= checkMMBI(mmbi, "null parameters, null descriptor");
116
117
mmbi =
118
new ModelMBeanInfoSupport("bogus.class.name", "description",
119
new ModelMBeanAttributeInfo[0],
120
new ModelMBeanConstructorInfo[0],
121
new ModelMBeanOperationInfo[0],
122
new ModelMBeanNotificationInfo[0]);
123
ok &= checkMMBI(mmbi, "empty parameters, no descriptor");
124
125
mmbi =
126
new ModelMBeanInfoSupport("bogus.class.name", "description",
127
new ModelMBeanAttributeInfo[0],
128
new ModelMBeanConstructorInfo[0],
129
new ModelMBeanOperationInfo[0],
130
new ModelMBeanNotificationInfo[0],
131
null);
132
ok &= checkMMBI(mmbi, "empty parameters, null descriptor");
133
134
return ok;
135
}
136
137
private static boolean checkMMBI(ModelMBeanInfoSupport mmbi, String what)
138
throws Exception {
139
String bad = "";
140
141
if (!(mmbi.getAttributes() instanceof ModelMBeanAttributeInfo[]))
142
bad += " attributes";
143
if (!(mmbi.getConstructors() instanceof ModelMBeanConstructorInfo[]))
144
bad += " constructors";
145
if (!(mmbi.getOperations() instanceof ModelMBeanOperationInfo[]))
146
bad += " operations";
147
if (!(mmbi.getNotifications() instanceof ModelMBeanNotificationInfo[]))
148
bad += " notifications";
149
150
if (bad.equals("")) {
151
System.out.println("..." + what + ": OK");
152
return true;
153
} else {
154
System.out.println("..." + what + ": FAILS for:" + bad);
155
return false;
156
}
157
}
158
159
private static boolean testGetDescriptorsForMBean()
160
throws Exception {
161
System.out.println("Test getDescriptors(\"mbean\")");
162
163
boolean ok = true;
164
165
ModelMBeanInfo mmbi;
166
Descriptor[] mbeanDescrs;
167
168
mmbi = new ModelMBeanInfoSupport("bogus.class.name", "description",
169
null, null, null, null);
170
try {
171
mbeanDescrs = mmbi.getDescriptors("mbean");
172
if (mbeanDescrs.length == 1 && mbeanDescrs[0] != null)
173
System.out.println("...default MBean descriptor: OK");
174
else {
175
System.out.println("...default MBean descriptor: bad array: " +
176
Arrays.asList(mbeanDescrs));
177
ok = false;
178
}
179
} catch (Exception e) {
180
System.out.println("...default MBean descriptor: got exception:");
181
e.printStackTrace(System.out);
182
ok = false;
183
}
184
185
String[] fields = new String[] {"descriptorType", "name"};
186
String[] values = new String[] {"mbean", "whatsit"};
187
String[] defaultFields = new String[] {
188
"displayName", "persistPolicy", "log", "visibility",
189
};
190
String[] defaultValues = new String[] {
191
"bogus.class.name", "never", "F", "1",
192
};
193
Descriptor d = new DescriptorSupport(fields, values);
194
195
mmbi = new ModelMBeanInfoSupport("bogus.class.name", "description",
196
null, null, null, null, d);
197
try {
198
mbeanDescrs = mmbi.getDescriptors("mbean");
199
} catch (Exception e) {
200
System.out.println("...explicit MBean descriptor: got exception:");
201
e.printStackTrace(System.out);
202
mbeanDescrs = new Descriptor[] {mmbi.getMBeanDescriptor()};
203
}
204
205
if (mbeanDescrs.length == 1) {
206
Descriptor dd = mbeanDescrs[0];
207
boolean thisok = true;
208
209
// Check that the fields we supplied survived in the copy
210
// and were not changed in the original
211
for (int i = 0; i < fields.length; i++) {
212
String field = fields[i];
213
String value;
214
value = (String) dd.getFieldValue(field);
215
if (!values[i].equals(value)) {
216
System.out.println("...explicit MBean descriptor: " +
217
"value of " + field + " mutated: " +
218
value);
219
thisok = false;
220
}
221
value = (String) d.getFieldValue(field);
222
if (!values[i].equals(value)) {
223
System.out.println("...explicit MBean descriptor: " +
224
"value of " + field + " changed in " +
225
"original: " + value);
226
thisok = false;
227
}
228
}
229
230
// Check that the default fields were added
231
for (int i = 0; i < defaultFields.length; i++) {
232
String field = defaultFields[i];
233
String value = (String) dd.getFieldValue(field);
234
if (!defaultValues[i].equals(value)) {
235
System.out.println("...explicit MBean descriptor: " +
236
"default value of " + field +
237
" wrong: " + value + " should be " +
238
defaultValues[i]);
239
thisok = false;
240
}
241
}
242
243
// Check that the original did not acquire new fields
244
if (d.getFieldNames().length != fields.length) {
245
Collection c = new TreeSet(Arrays.asList(d.getFieldNames()));
246
c.removeAll(Arrays.asList(fields));
247
System.out.println("...explicit MBean descriptor: " +
248
"acquired new fields: " + c);
249
thisok = false;
250
}
251
252
if (thisok)
253
System.out.println("...explicit MBean descriptor: OK");
254
else
255
ok = false;
256
} else {
257
System.out.println("...explicit MBean descriptor: bad array: " +
258
Arrays.asList(mbeanDescrs));
259
ok = false;
260
}
261
262
return ok;
263
}
264
}
265
266