Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/javax/management/MBeanInfo/MBeanInfoEqualsNPETest.java
38841 views
1
/*
2
* Copyright (c) 2013, 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
import javax.management.MBeanAttributeInfo;
25
import javax.management.MBeanConstructorInfo;
26
import javax.management.MBeanFeatureInfo;
27
import javax.management.MBeanInfo;
28
import javax.management.MBeanNotificationInfo;
29
import javax.management.MBeanOperationInfo;
30
import javax.management.MBeanParameterInfo;
31
import javax.management.modelmbean.DescriptorSupport;
32
import javax.management.openmbean.SimpleType;
33
34
/*
35
* @test
36
* @bug 8023954
37
* @summary Test that MBean*Info.equals do not throw NPE
38
* @author Shanliang JIANG
39
* @run clean MBeanInfoEqualsNPETest
40
* @run build MBeanInfoEqualsNPETest
41
* @run main MBeanInfoEqualsNPETest
42
*/
43
public class MBeanInfoEqualsNPETest {
44
private static int failed = 0;
45
46
public static void main(String[] args) throws Exception {
47
System.out.println("---MBeanInfoEqualsNPETest-main ...");
48
49
// ----
50
System.out.println("\n---Testing on MBeanAttributeInfo...");
51
MBeanAttributeInfo mbeanAttributeInfo0 = new MBeanAttributeInfo(
52
"name", SimpleType.INTEGER.getClassName(), "description", true, true, false);
53
MBeanAttributeInfo mbeanAttributeInfo = new MBeanAttributeInfo(
54
null, SimpleType.INTEGER.getClassName(), "description", true, true, false);
55
test(mbeanAttributeInfo0, mbeanAttributeInfo, "class name");
56
57
mbeanAttributeInfo = new MBeanAttributeInfo(
58
"name", null, "description", true, true, false);
59
test(mbeanAttributeInfo0, mbeanAttributeInfo, "type");
60
61
mbeanAttributeInfo = new MBeanAttributeInfo(
62
"name", SimpleType.INTEGER.getClassName(), null, true, true, false);
63
test(mbeanAttributeInfo0, mbeanAttributeInfo, "description");
64
65
// ----
66
System.out.println("\n---Testing on MBeanConstructorInfo...");
67
MBeanConstructorInfo mbeanConstructorInfo0 = new MBeanConstructorInfo(
68
"", "", new MBeanParameterInfo[]{}, new DescriptorSupport());
69
MBeanConstructorInfo mbeanConstructorInfo = new MBeanConstructorInfo(
70
null, "", new MBeanParameterInfo[]{}, new DescriptorSupport());
71
test(mbeanConstructorInfo0, mbeanConstructorInfo, "name");
72
73
mbeanConstructorInfo = new MBeanConstructorInfo(
74
"", null, new MBeanParameterInfo[]{}, new DescriptorSupport());
75
test(mbeanConstructorInfo0, mbeanConstructorInfo, "description");
76
77
mbeanConstructorInfo = new MBeanConstructorInfo(
78
"", "", null, new DescriptorSupport());
79
test(mbeanConstructorInfo0, mbeanConstructorInfo, "MBeanParameterInfo");
80
81
mbeanConstructorInfo = new MBeanConstructorInfo(
82
"", "", new MBeanParameterInfo[]{}, null);
83
test(mbeanConstructorInfo0, mbeanConstructorInfo, "descriptor");
84
85
// ----
86
System.out.println("\n---Testing on MBeanOperationInfo...");
87
MBeanOperationInfo mbeanOperationInfo0 = new MBeanOperationInfo(
88
"name", "description", new MBeanParameterInfo[]{}, "type",
89
MBeanOperationInfo.UNKNOWN, new DescriptorSupport());
90
91
MBeanOperationInfo mbeanOperationInfo = new MBeanOperationInfo(
92
null, "description", new MBeanParameterInfo[]{}, "type",
93
MBeanOperationInfo.UNKNOWN, new DescriptorSupport());
94
test(mbeanOperationInfo0, mbeanOperationInfo, "name");
95
96
mbeanOperationInfo = new MBeanOperationInfo(
97
"name", null, new MBeanParameterInfo[]{}, "type",
98
MBeanOperationInfo.UNKNOWN, new DescriptorSupport());
99
test(mbeanOperationInfo0, mbeanOperationInfo, "description");
100
101
mbeanOperationInfo = new MBeanOperationInfo(
102
"name", "description", null, "type", 1, new DescriptorSupport());
103
test(mbeanOperationInfo0, mbeanOperationInfo, "MBeanParameterInfo");
104
105
mbeanOperationInfo = new MBeanOperationInfo(
106
"name", "description", new MBeanParameterInfo[]{}, null,
107
MBeanOperationInfo.UNKNOWN, new DescriptorSupport());
108
test(mbeanOperationInfo0, mbeanOperationInfo, "type");
109
110
mbeanOperationInfo = new MBeanOperationInfo(
111
"name", "description", new MBeanParameterInfo[]{}, null,
112
MBeanOperationInfo.UNKNOWN, null);
113
test(mbeanOperationInfo0, mbeanOperationInfo, "Descriptor");
114
115
// ----
116
System.out.println("\n---Testing on MBeanParameterInfo...");
117
MBeanParameterInfo mbeanParameterInfo0 = new MBeanParameterInfo(
118
"name", "type", "description", new DescriptorSupport());
119
MBeanParameterInfo mbeanParameterInfo = new MBeanParameterInfo(
120
null, "type", "description", new DescriptorSupport());
121
test(mbeanParameterInfo0, mbeanParameterInfo, "name");
122
123
mbeanParameterInfo = new MBeanParameterInfo(
124
"name", null, "description", new DescriptorSupport());
125
test(mbeanParameterInfo0, mbeanParameterInfo, "type");
126
127
mbeanParameterInfo = new MBeanParameterInfo(
128
"name", "type", null, new DescriptorSupport());
129
test(mbeanParameterInfo0, mbeanParameterInfo, "description");
130
131
mbeanParameterInfo = new MBeanParameterInfo(
132
"name", "type", "description", null);
133
test(mbeanParameterInfo0, mbeanParameterInfo, "Descriptor");
134
135
// ----
136
System.out.println("\n---Testing on MBeanFeatureInfo ...");
137
MBeanFeatureInfo mbeanFeatureInfo0 = new MBeanFeatureInfo(
138
"name", "description", new DescriptorSupport());
139
MBeanFeatureInfo mbeanFeatureInfo = new MBeanFeatureInfo(
140
null, "description", new DescriptorSupport());
141
test(mbeanFeatureInfo0, mbeanFeatureInfo, "name");
142
143
mbeanFeatureInfo = new MBeanFeatureInfo(
144
"name", null, new DescriptorSupport());
145
test(mbeanParameterInfo0, mbeanParameterInfo, "description");
146
147
mbeanFeatureInfo = new MBeanFeatureInfo(
148
"name", "description", null);
149
test(mbeanParameterInfo0, mbeanParameterInfo, "Descriptor");
150
151
// ----
152
System.out.println("\n---Testing on MBeanInfo...");
153
String className = "toto";
154
String description = "titi";
155
MBeanAttributeInfo[] attrInfos = new MBeanAttributeInfo[]{};
156
MBeanConstructorInfo[] constrInfos = new MBeanConstructorInfo[]{};
157
MBeanOperationInfo[] operaInfos = new MBeanOperationInfo[]{};
158
MBeanNotificationInfo[] notifInfos = new MBeanNotificationInfo[]{};
159
160
MBeanInfo minfo0 = new MBeanInfo("toto", description, attrInfos, constrInfos, operaInfos, notifInfos);
161
MBeanInfo minfo = new MBeanInfo(null, description, attrInfos, constrInfos, operaInfos, notifInfos);
162
test(minfo0, minfo, "class name");
163
164
minfo = new MBeanInfo(className, null, attrInfos, constrInfos, operaInfos, notifInfos);
165
test(minfo0, minfo, "description");
166
167
minfo = new MBeanInfo(className, description, null, constrInfos, operaInfos, notifInfos);
168
test(minfo0, minfo, "attrInfos");
169
170
minfo = new MBeanInfo(className, description, attrInfos, null, operaInfos, notifInfos);
171
test(minfo0, minfo, "constrInfos");
172
173
minfo = new MBeanInfo(className, description, attrInfos, constrInfos, null, notifInfos);
174
test(minfo0, minfo, "operaInfos");
175
176
minfo = new MBeanInfo(className, description, attrInfos, constrInfos, operaInfos, null);
177
test(minfo0, minfo, "notifInfos");
178
179
if (failed > 0) {
180
throw new RuntimeException("Test failed: "+failed);
181
} else {
182
System.out.println("---Test: PASSED");
183
}
184
}
185
186
private static void test(Object obj1, Object obj2, String param) {
187
try {
188
obj1.equals(obj2);
189
System.out.println("OK-1: "+obj1.getClass().getSimpleName()+".equals worked with a null paramer: "+param);
190
} catch (NullPointerException npe) {
191
System.out.println("--->KO-1!!! "+obj1.getClass().getSimpleName()+".equals got NPE with a null paramer: "+param);
192
npe.printStackTrace();
193
failed++;
194
}
195
196
try {
197
obj2.equals(obj1);
198
System.out.println("OK-2: "+obj2.getClass().getSimpleName()+".equals worked with a null paramer: "+param);
199
} catch (NullPointerException npe) {
200
System.out.println("--->KO-2!!! "+obj2.getClass().getSimpleName()+".equals got NPE with a null paramer: "+param);
201
npe.printStackTrace();
202
failed++;
203
}
204
205
try {
206
obj1.equals(null);
207
obj2.equals(null);
208
209
System.out.println("OK-3: "+obj1.getClass().getSimpleName()+".equals worked with a null field.");
210
} catch (NullPointerException npe) {
211
System.out.println("--->KO-3!!! "+obj1.getClass().getSimpleName()+".equals got NPE with a null field.");
212
npe.printStackTrace();
213
failed++;
214
}
215
}
216
}
217
218