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/MustBeValidMBeanInfo/MustBeValidCommand.java
38841 views
1
/*
2
* Copyright (c) 2003, 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 4874819
27
* @summary Test that MBeanInfo classes no longer throw an
28
* IllegalArgumentException when attribute names, operation names, and
29
* Java type names do not strictly follow the expected Java syntax.
30
* @author Daniel Fuchs
31
* @run clean MustBeValidCommand
32
* @run build MustBeValidCommand
33
* @run main MustBeValidCommand
34
*/
35
36
import javax.management.MBeanInfo;
37
import javax.management.MBeanAttributeInfo;
38
import javax.management.MBeanOperationInfo;
39
import javax.management.MBeanParameterInfo;
40
import javax.management.MBeanNotificationInfo;
41
import javax.management.MBeanConstructorInfo;
42
43
public class MustBeValidCommand {
44
45
private static String[][] attributes = {
46
{ "Attribute with valid identifiers",
47
"validType1","validNameAtt1" },
48
{ "Attribute with invalid type",
49
"invalid-type", "validNameAtt2" },
50
{ "Attribute with invalid name", "valid.type2",
51
"invalid-name-att3" },
52
{ "Attribute with invalid name and type",
53
"invalidtype[]","invalid.name.att4" }
54
};
55
private static String[][] constructors = {
56
{ "Constructor with valid name",
57
"ValidConstructor1" },
58
{ "Constructor with invalid name",
59
"invalid.Constructor2"},
60
{ "Constructor with invalid name",
61
"invalid-constructor-3" },
62
{ "Constructor with invalid name",
63
"invalid constructor" }
64
};
65
private static String[][] mbeanclasses = {
66
{ "MBean with valid class name",
67
"ValidMBeanClass1" },
68
{ "MBean with valid class name",
69
"valid.mbean.Class2" },
70
{ "MBean with invalid class name",
71
"invalid.MBeanClass3[]"},
72
{ "MBean with invalid class name",
73
"invalid-mbean-class-4" },
74
{ "MBean with invalid class name",
75
"invalid mbean class 5" }
76
};
77
private static String[][] notificationclasses = {
78
{ "Notification with valid class name",
79
"ValidNotificationClass1" },
80
{ "Notification with valid class name",
81
"valid.notification.Class2" },
82
{ "Notification with invalid class name",
83
"invalid.NotificationClass3[]"},
84
{ "Notification with invalid class name",
85
"invalid-notification-class-4" },
86
{ "Notification with invalid class name",
87
"invalid notification class 5" }
88
};
89
private static String[][] operations = {
90
{ "Operation with valid identifiers",
91
"validType1","validNameOp1" },
92
{ "Operation with invalid type",
93
"invalid-type", "validNameOp2" },
94
{ "Operation with invalid name", "valid.type2",
95
"invalid-name-op3" },
96
{ "Operation with invalid name and type",
97
"invalidtype[]","invalid.name.op4" }
98
};
99
private static String[][] parameters = {
100
{ "Parameter with valid identifiers",
101
"validType1","validNamePar1" },
102
{ "Parameter with invalid type",
103
"invalid-type", "validNamePar2" },
104
{ "Parameter with invalid name", "valid.type2",
105
"invalid-name-par3" },
106
{ "Parameter with invalid name and type",
107
"invalidtype[]","invalid.name.par4" }
108
};
109
110
static private MBeanAttributeInfo[] makeAttInfos(String[][] spec) {
111
final MBeanAttributeInfo[] result =
112
new MBeanAttributeInfo[spec.length];
113
for (int i=0;i<result.length;i++) {
114
System.out.println("\tCreate an MBeanAttributeInfo: " +
115
spec[i][0]);
116
final MBeanAttributeInfo item =
117
new MBeanAttributeInfo(spec[i][2],spec[i][1],spec[i][0],
118
true,true,false);
119
result[i]=item;
120
}
121
return result;
122
}
123
124
static private MBeanParameterInfo[] makeParInfos(String[][] spec) {
125
final MBeanParameterInfo[] result =
126
new MBeanParameterInfo[spec.length];
127
for (int i=0;i<result.length;i++) {
128
System.out.println("\tCreate an MBeanParameterInfo: " +
129
spec[i][0]);
130
final MBeanParameterInfo item =
131
new MBeanParameterInfo(spec[i][2],spec[i][1],spec[i][0]);
132
result[i]=item;
133
}
134
return result;
135
}
136
137
static private MBeanOperationInfo[] makeOpInfos(String[][] spec) {
138
final MBeanOperationInfo[] result =
139
new MBeanOperationInfo[spec.length];
140
final MBeanParameterInfo[] pars = makeParInfos(parameters);
141
for (int i=0;i<result.length;i++) {
142
System.out.println("\tCreate an MBeanOperationInfo: " +
143
spec[i][0]);
144
final MBeanOperationInfo item =
145
new MBeanOperationInfo(spec[i][2],spec[i][0],pars,spec[i][1],
146
MBeanOperationInfo.ACTION_INFO);
147
result[i]=item;
148
}
149
return result;
150
}
151
152
static private MBeanConstructorInfo[] makeCtorInfos(String[][] spec) {
153
final MBeanConstructorInfo[] result =
154
new MBeanConstructorInfo[spec.length];
155
final MBeanParameterInfo[] pars = makeParInfos(parameters);
156
for (int i=0;i<result.length;i++) {
157
System.out.println("\tCreate an MBeanConstructorInfo: " +
158
spec[i][0]);
159
final MBeanConstructorInfo item =
160
new MBeanConstructorInfo(spec[i][1],spec[i][0],pars);
161
result[i]=item;
162
}
163
return result;
164
}
165
166
static private MBeanNotificationInfo[] makeNotifInfos(String[][] spec) {
167
final MBeanNotificationInfo[] result =
168
new MBeanNotificationInfo[spec.length];
169
final String[] types = {"valid.type","invalid-type"};
170
for (int i=0;i<result.length;i++) {
171
System.out.println("\tCreate an MBeanNotificationInfo: " +
172
spec[i][0]);
173
final MBeanNotificationInfo item =
174
new MBeanNotificationInfo(types,spec[i][1],spec[i][0]);
175
result[i]=item;
176
}
177
return result;
178
}
179
180
public static void main(String[] args) throws Exception {
181
// Instantiate the MBean server
182
//
183
final MBeanAttributeInfo[] atts = makeAttInfos(attributes);
184
final MBeanConstructorInfo[] ctors = makeCtorInfos(constructors);
185
final MBeanOperationInfo[] ops = makeOpInfos(operations);
186
final MBeanNotificationInfo[] notifs =
187
makeNotifInfos(notificationclasses);
188
189
for (int i=0; i<mbeanclasses.length;i++) {
190
System.out.println("Create an MBeanInfo: " + mbeanclasses[i][0]);
191
final MBeanInfo mbi =
192
new MBeanInfo(mbeanclasses[i][1],mbeanclasses[i][0],
193
atts, ctors, ops, notifs);
194
}
195
196
// Test OK!
197
//
198
System.out.println("All MBeanInfo successfuly created!");
199
System.out.println("Bye! Bye!");
200
}
201
}
202
203