Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/management/remote/mandatory/notif/EmptyDomainNotificationTest.java
41155 views
1
/*
2
* Copyright (c) 2005, 2016, 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 6238731
27
* @summary Check that the expected notification is received by the JMX
28
* client even when the domain in the ObjectName is not specified
29
* @author Shanliang JIANG
30
*
31
* @run clean EmptyDomainNotificationTest
32
* @run build EmptyDomainNotificationTest
33
* @run main EmptyDomainNotificationTest
34
*/
35
36
import java.util.ArrayList;
37
import java.util.List;
38
import javax.management.MBeanServer;
39
import javax.management.MBeanServerConnection;
40
import javax.management.MBeanServerFactory;
41
import javax.management.Notification;
42
import javax.management.NotificationBroadcasterSupport;
43
import javax.management.NotificationListener;
44
import javax.management.ObjectName;
45
import javax.management.remote.JMXConnector;
46
import javax.management.remote.JMXConnectorFactory;
47
import javax.management.remote.JMXConnectorServer;
48
import javax.management.remote.JMXConnectorServerFactory;
49
import javax.management.remote.JMXServiceURL;
50
51
public class EmptyDomainNotificationTest {
52
53
public static interface SimpleMBean {
54
public void emitNotification();
55
}
56
57
public static class Simple
58
extends NotificationBroadcasterSupport
59
implements SimpleMBean {
60
public void emitNotification() {
61
sendNotification(new Notification("simple", this, 0));
62
}
63
}
64
65
public static class Listener implements NotificationListener {
66
public void handleNotification(Notification n, Object h) {
67
System.out.println(
68
"EmptyDomainNotificationTest-Listener-handleNotification: receives:" + n);
69
70
if (n.getType().equals("simple")) {
71
synchronized(this) {
72
received++;
73
74
this.notifyAll();
75
}
76
}
77
}
78
79
public int received;
80
}
81
82
public static void main(String[] args) throws Exception {
83
84
final MBeanServer mbs = MBeanServerFactory.createMBeanServer();
85
86
final JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
87
88
JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
89
server.start();
90
91
JMXConnector client = JMXConnectorFactory.connect(server.getAddress(), null);
92
93
final MBeanServerConnection mbsc = client.getMBeanServerConnection();
94
95
final ObjectName mbean = ObjectName.getInstance(":type=Simple");
96
mbsc.createMBean(Simple.class.getName(), mbean);
97
98
System.out.println("EmptyDomainNotificationTest-main: add a listener ...");
99
final Listener li = new Listener();
100
mbsc.addNotificationListener(mbean, li, null, null);
101
102
System.out.println("EmptyDomainNotificationTest-main: ask to send a notif ...");
103
mbsc.invoke(mbean, "emitNotification", null, null);
104
105
System.out.println("EmptyDomainNotificationTest-main: waiting notif...");
106
synchronized(li) {
107
while (li.received < 1) {
108
li.wait();
109
}
110
}
111
112
if (li.received != 1) {
113
throw new RuntimeException("Wait one notif but got: "+li.received);
114
}
115
116
System.out.println("EmptyDomainNotificationTest-main: Got the expected notif!");
117
118
System.out.println("EmptyDomainNotificationTest-main: remove the listener.");
119
mbsc.removeNotificationListener(mbean, li);
120
121
// clean
122
client.close();
123
server.stop();
124
125
System.out.println("EmptyDomainNotificationTest-main: Bye.");
126
}
127
}
128
129