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/proxy/ProxyObjectMethodsTest.java
38838 views
1
/*
2
* Copyright (c) 2004, 2005, 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 6177524
27
* @summary Test how to execute the 3 Object methods by a Proxy.
28
* @author Shanliang JIANG
29
* @run clean ProxyObjectMethodsTest
30
* @run build ProxyObjectMethodsTest
31
* @run main ProxyObjectMethodsTest
32
*/
33
34
import java.lang.management.ManagementFactory;
35
import java.lang.reflect.*;
36
import java.util.*;
37
38
import javax.management.*;
39
import javax.management.remote.*;
40
41
public class ProxyObjectMethodsTest {
42
43
public static void main(String[] args) throws Exception {
44
System.out.println("<<< Test how to execute the 3 Object methods by a Proxy.");
45
46
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
47
final ObjectName name = new ObjectName(":class=Simple");
48
49
JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
50
final JMXConnectorServer server =
51
JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
52
server.start();
53
url = server.getAddress();
54
55
final JMXConnector client = JMXConnectorFactory.connect(url);
56
57
System.out.println("<<< Test the methods at local side.");
58
59
final Simple simple = new Simple();
60
mbs.registerMBean(simple, name);
61
62
SimpleMBean simple0 =
63
MBeanServerInvocationHandler.newProxyInstance(client.getMBeanServerConnection(),
64
name,
65
SimpleMBean.class,
66
false);
67
68
SimpleMBean simple1 =
69
MBeanServerInvocationHandler.newProxyInstance(client.getMBeanServerConnection(),
70
name,
71
SimpleMBean.class,
72
false);
73
74
Simplest simple3 =
75
MBeanServerInvocationHandler.newProxyInstance(client.getMBeanServerConnection(),
76
name,
77
Simplest.class,
78
false);
79
80
if (!simple0.equals(simple1) ||
81
simple0.equals(simple) ||
82
simple0.equals(simple3)) {
83
throw new RuntimeException("The method equals does not work correctly.");
84
}
85
86
if (simple0.hashCode() != simple1.hashCode() ||
87
simple.hashCode() == simple0.hashCode()) {
88
throw new RuntimeException("The method hashCode does not work correctly.");
89
}
90
91
if (!simple0.toString().equals(simple1.toString()) ||
92
simple.toString().equals(simple0.toString())) {
93
throw new RuntimeException("The method toString does not work correctly.");
94
}
95
96
/* Sorry about this. This is the equals(String) method,
97
which returns String, not boolean. */
98
if (!simple0.equals("foo").equals("foo"))
99
throw new RuntimeException("The method equals(String) was not forwarded.");
100
101
ArrayList al = new ArrayList();
102
al.add(simple0);
103
104
if (!al.contains(simple0) || !al.contains(simple1)) {
105
throw new RuntimeException("Cannot find correctly a proxy in an ArrayList.");
106
}
107
108
System.out.println("<<< Test whether the methods are done at server side.");
109
110
final ObjectName name1 = new ObjectName(":class=Test");
111
mbs.registerMBean(new Test(), name1);
112
113
TestMBean test0 = MBeanServerInvocationHandler.newProxyInstance(mbs,
114
name1,
115
TestMBean.class,
116
false);
117
118
if(test0.equals(test0)) {
119
throw new RuntimeException("The method equals is not done remotely as expected.");
120
}
121
122
if (!test0.toString().equals("Test-toString")) {
123
throw new RuntimeException("The method toString is not done remotely as expected.");
124
}
125
126
if (test0.hashCode() != 123) {
127
throw new RuntimeException("The method hashCode is not done remotely as expected.");
128
}
129
130
System.out.println("<<< Test on using a null connection or a null name.");
131
SimpleMBean simple2;
132
try {
133
simple2 = MBeanServerInvocationHandler.newProxyInstance(null,
134
name,
135
SimpleMBean.class,
136
false);
137
throw new RuntimeException(
138
"Null connection does not cause an IllegalArgumentException.");
139
} catch (IllegalArgumentException ie) {
140
// as expected
141
}
142
143
try {
144
simple2 = MBeanServerInvocationHandler.newProxyInstance(mbs,
145
null,
146
SimpleMBean.class,
147
false);
148
throw new RuntimeException(
149
"Null object name does not cause an IllegalArgumentException.");
150
} catch (IllegalArgumentException ie) {
151
// as expected
152
}
153
}
154
155
public static interface Simplest {
156
157
}
158
159
public static interface SimpleMBean extends Simplest {
160
public String equals(String x);
161
}
162
163
private static class Simple implements SimpleMBean {
164
public String equals(String x) {
165
return x;
166
}
167
}
168
169
public static interface TestMBean {
170
public boolean equals(Object o);
171
172
public String toString();
173
174
public int hashCode();
175
}
176
177
private static class Test implements TestMBean {
178
public boolean equals(Object o) {
179
// what can do here?
180
181
return false;
182
}
183
184
public String toString() {
185
return "Test-toString";
186
}
187
188
public int hashCode() {
189
return 123;
190
}
191
}
192
}
193
194