Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/modelmbean/DescriptorSupportTest.java
41152 views
1
/*
2
* Copyright (c) 2003, 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 4883712 4869006 4894856 5016685
27
* @summary Test that DescriptorSupport correctly validates fields
28
* @author Eamonn McManus
29
*
30
* @run clean DescriptorSupportTest
31
* @run build DescriptorSupportTest
32
* @run main DescriptorSupportTest
33
*/
34
35
import java.io.ByteArrayInputStream;
36
import java.io.ByteArrayOutputStream;
37
import java.io.ObjectInputStream;
38
import java.io.ObjectOutputStream;
39
import java.util.ArrayList;
40
import java.util.Arrays;
41
import java.util.List;
42
import javax.management.Descriptor;
43
import javax.management.RuntimeOperationsException;
44
import javax.management.modelmbean.DescriptorSupport;
45
import javax.management.modelmbean.ModelMBeanInfo;
46
import javax.management.modelmbean.ModelMBeanInfoSupport;
47
48
public class DescriptorSupportTest {
49
private static final Object[] goodFields = {
50
"value", "",
51
"severity", "0",
52
"severity", "6",
53
};
54
55
private static final Object[] badFields = {
56
"name", null,
57
"name", "",
58
"descriptorType", null,
59
"descriptorType", "",
60
"setMethod", null,
61
"getMethod", null,
62
"role", null,
63
"class", null,
64
"visibility", null,
65
"visibility", new Integer(0),
66
"visibility", "0",
67
"visibility", new Integer(5),
68
"visibility", "5",
69
"severity", null,
70
"severity", new Integer(-1),
71
"severity", "-1",
72
"severity", new Integer(7),
73
"severity", "7",
74
"persistPolicy", null,
75
"persistPolicy", "bogusPersistPolicy",
76
"persistPeriod", null,
77
"persistPeriod", "not a number",
78
"currencyTimeLimit", null,
79
"currencyTimeLimit", "not a number",
80
"lastUpdatedTimeStamp", null,
81
"lastUpdatedTimeStamp", "not a number",
82
"lastReturnedTimeStamp", null,
83
"lastReturnedTimeStamp", "not a number",
84
"log", null,
85
"log", "not T or F or true or false",
86
"log", new Object[0],
87
};
88
89
90
public static void main(String[] args) throws Exception {
91
boolean ok = true;
92
93
System.out.println("Checking that name and descriptorType are " +
94
"mandatory");
95
// Try omitting name and/or descriptorType
96
for (int i = 0; i < 3; i++) {
97
final boolean addName = ((i & 1) != 0);
98
final boolean addDescriptorType = ((i & 2) != 0);
99
final List fields = new ArrayList();
100
if (addName)
101
fields.add("name=something");
102
if (addDescriptorType)
103
fields.add("descriptorType=something-else");
104
final String[] fs = (String[]) fields.toArray(new String[0]);
105
final String what =
106
"DescriptorSupport with " +
107
(addName ? "" : "no ") + "name and " +
108
(addDescriptorType ? "" : "no ") + "descriptorType";
109
DescriptorSupport ds = new DescriptorSupport(fs);
110
if (ds.isValid()) {
111
System.out.println("INCORRECTLY ACCEPTED: " + what);
112
ok = false;
113
} else
114
System.out.println("OK: rejected " + what);
115
}
116
117
for (int pass = 0; pass < 2; pass++) {
118
boolean shouldAccept = (pass == 0);
119
System.out.println("Trying out " +
120
(shouldAccept ? "correct" : "bogus") +
121
" DescriptorSupport fields");
122
Object[] fields = shouldAccept ? goodFields : badFields;
123
for (int i = 0; i < fields.length; i += 2) {
124
String[] names = {"name", "descriptorType"};
125
String[] values = {"some-name", "some-type"};
126
DescriptorSupport d = new DescriptorSupport(names, values);
127
final String name = (String) fields[i];
128
final Object value = fields[i + 1];
129
final String valueS =
130
(value instanceof String) ? ("\"" + value + "\"") :
131
(value == null) ? "null" : value.toString();
132
final String what =
133
"DescriptorSupport with " + name + " = " + valueS;
134
try {
135
d.setField(name, value);
136
if (shouldAccept)
137
System.out.println("OK: accepted " + what);
138
else {
139
System.out.println("INCORRECTLY ACCEPTED: " + what);
140
ok = false;
141
}
142
} catch (RuntimeOperationsException e) {
143
if (shouldAccept) {
144
System.out.println("INCORRECTLY REJECTED: " + what +
145
": " + e);
146
ok = false;
147
} else {
148
System.out.println("OK: rejected " + what);
149
// OK: this is what should happen
150
}
151
} catch (Exception e) {
152
System.out.println("WRONG EXCEPTION: " + what + ": " + e);
153
ok = false;
154
}
155
}
156
}
157
158
// 4894856: ModelMBeanInfoSupport.setDescriptor(d, "mbean") fails
159
System.out.println("Checking that setDescriptor(d, \"mbean\") works");
160
ModelMBeanInfo mmbi =
161
new ModelMBeanInfoSupport("x", "descr", null, null, null, null);
162
Descriptor d = mmbi.getDescriptor("x", "mbean");
163
try {
164
mmbi.setDescriptor(d, "mbean");
165
} catch (Exception e) {
166
System.out.println("Unexpected exception:");
167
e.printStackTrace(System.out);
168
ok = false;
169
}
170
171
// 5016685: DescriptorSupport forces field names to lower case
172
System.out.println("Checking that field name case is ignored " +
173
"but preserved");
174
ok &= caseTest(new DescriptorSupport(new String[] {"NAME=blah"}),
175
"DescriptorSupport(String[])");
176
ok &= caseTest(new DescriptorSupport(new String[] {"NAME"},
177
new String[] {"blah"}),
178
"DescriptorSupport(String[], Object[])");
179
DescriptorSupport d1 = new DescriptorSupport();
180
d1.setField("NAME", "blah");
181
ok &= caseTest(d1, "DescriptorSupport.setField");
182
d1 = new DescriptorSupport(new String[] {"NAME=blah"});
183
ok &= caseTest(new DescriptorSupport(d1),
184
"DescriptorSupport(Descriptor)");
185
d1 = new DescriptorSupport(new String[] {"NAME=blah"});
186
ok &= caseTest(new DescriptorSupport(d1.toXMLString()),
187
"DescriptorSupport(String)");
188
d1 = new DescriptorSupport(new String[] {"NAME=blah"});
189
ByteArrayOutputStream bos = new ByteArrayOutputStream();
190
ObjectOutputStream oos = new ObjectOutputStream(bos);
191
oos.writeObject(d1);
192
oos.close();
193
bos.close();
194
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
195
ObjectInputStream ois = new ObjectInputStream(bis);
196
d1 = (DescriptorSupport) ois.readObject();
197
ok &= caseTest(d1, "serialized DescriptorSupport");
198
199
if (ok)
200
System.out.println("Test passed");
201
else {
202
System.out.println("TEST FAILED");
203
System.exit(1);
204
}
205
}
206
207
private static boolean caseTest(Descriptor d, String what) {
208
boolean ok = true;
209
210
System.out.println("..." + what);
211
212
String[] names = d.getFieldNames();
213
if (names.length != 1 || !names[0].equals("NAME")) {
214
ok = false;
215
System.out.println("...getFieldNames() fails: " +
216
Arrays.asList(names));
217
}
218
219
String[] fields = d.getFields();
220
if (fields.length != 1 || !fields[0].equals("NAME=blah")) {
221
ok = false;
222
System.out.println("...getFields() fails: " +
223
Arrays.asList(fields));
224
}
225
226
Object value = d.getFieldValue("namE");
227
if (!"blah".equals(value)) {
228
ok = false;
229
System.out.println("...getFieldValue(\"namE\") fails: " + value);
230
}
231
232
Object[] values = d.getFieldValues(new String[] {"namE"});
233
if (values.length != 1 || !"blah".equals(values[0])) {
234
ok = false;
235
System.out.println("...getFieldValues({\"namE\"}) fails: " +
236
Arrays.asList(values));
237
}
238
239
d.setField("namE", "newblah");
240
Object newblah = d.getFieldValue("Name");
241
if (!"newblah".equals(newblah)) {
242
ok = false;
243
System.out.println("...setField value not returned: " + newblah);
244
}
245
246
d.setFields(new String[] {"NaMe"}, new Object[] {"newerblah"});
247
Object newerblah = d.getFieldValue("naMe");
248
if (!"newerblah".equals(newerblah)) {
249
ok = false;
250
System.out.println("...setFields value not returned: " +
251
newerblah);
252
}
253
254
Descriptor d1 = (Descriptor) d.clone();
255
newerblah = d1.getFieldValue("NAMe");
256
if (!"newerblah".equals(newerblah)) {
257
ok = false;
258
System.out.println("...clone incorrect: " + newerblah);
259
}
260
261
d.removeField("NAme");
262
names = d.getFieldNames();
263
if (names.length != 0) {
264
ok = false;
265
System.out.println("...removeField failed: " +
266
Arrays.asList(names));
267
}
268
269
if (ok)
270
System.out.println("...succeeded");
271
272
return ok;
273
}
274
}
275
276