--- a/jdk/test/javax/management/eventService/NotSerializableNotifTest.java Wed Oct 21 15:47:09 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
- * Copyright 2007-2008 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-
-/*
- * @test NotSerializableNotifTest.java 1.5 08/01/22
- * @bug 5108776
- * @summary Basic test for EventClient.
- * @author Shanliang JIANG
- * @run clean NotSerializableNotifTest
- * @run build NotSerializableNotifTest
- * @run main NotSerializableNotifTest
- */
-
-
-// JMX imports
-//
-import javax.management.* ;
-import javax.management.event.EventClient;
-import javax.management.event.EventClientDelegate;
-import javax.management.event.EventClientDelegateMBean;
-import javax.management.event.EventRelay;
-import javax.management.event.FetchingEventRelay;
-
-import javax.management.remote.*;
-import javax.management.remote.JMXServiceURL;
-
-public class NotSerializableNotifTest {
- private static MBeanServer mbeanServer =
- MBeanServerFactory.createMBeanServer();
- private static ObjectName emitter;
- private static int port = 2468;
-
- private static String[] protocols;
-
- private static final int sentNotifs = 50;
-
- public static void main(String[] args) throws Exception {
- System.out.println(">>> Test to send a not serializable notification");
-
- // for 1.5
- if (System.getProperty("java.version").startsWith("1.5") &&
- !mbeanServer.isRegistered(EventClientDelegateMBean.OBJECT_NAME)) {
- System.out.print("Working on "+System.getProperty("java.version")+
- " register "+EventClientDelegateMBean.OBJECT_NAME);
-
- mbeanServer.registerMBean(EventClientDelegate.
- getEventClientDelegate(mbeanServer),
- EventClientDelegateMBean.OBJECT_NAME);
- }
-
- NotificationEmitter nm = new NotificationEmitter();
- emitter = new ObjectName("Default:name=NotificationEmitter");
- mbeanServer.registerMBean(nm, emitter);
- String proto = "rmi";
-
- System.out.println(">>> Test for protocol " + proto);
-
- JMXServiceURL url = new JMXServiceURL(proto, null, 0);
-
- JMXConnectorServer server =
- JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbeanServer);
-
- server.start();
-
- url = server.getAddress();
- JMXConnector conn = JMXConnectorFactory.connect(url, null);
- MBeanServerConnection client = conn.getMBeanServerConnection();
-
- EventClientDelegateMBean ecd = EventClientDelegate.getProxy(client);
- EventRelay eventRelay = new FetchingEventRelay(
- ecd,
- FetchingEventRelay.DEFAULT_BUFFER_SIZE,
- 10,
- FetchingEventRelay.DEFAULT_MAX_NOTIFICATIONS,
- null);
- EventClient ec = new EventClient(ecd, eventRelay, null, null,
- EventClient.DEFAULT_REQUESTED_LEASE_TIME);
-
- // add listener from the client side
- Listener listener = new Listener();
- ec.addNotificationListener(emitter, listener, null, null);
-
- LostListener lostListener = new LostListener();
- ec.addEventClientListener(lostListener, null, null);
-
- // ask to send one not serializable notif
- System.out.println(">>> sending not serializable notifs ...");
-
- Object[] params = new Object[] {new Integer(sentNotifs)};
- String[] signatures = new String[] {"java.lang.Integer"};
- client.invoke(emitter, "sendNotserializableNotifs", params, signatures);
-
-// nm.sendNotserializableNotifs(sentNotifs);
-// nm.sendNotifications(1);
-
- // waiting
- synchronized(lostListener) {
- if (lostListener.lostCount != sentNotifs) {
- lostListener.wait(6000);
- }
- }
-
- Thread.sleep(100);
-
- if (lostListener.lostCount != sentNotifs) {
- System.out.println(">>> FAILED. Expected "+sentNotifs+", but got "+lostListener.lostCount);
- System.exit(1);
- }
-
- System.out.println(">>> Passed.");
-
- ec.close();
- conn.close();
- server.stop();
- }
-
-
-//--------------------------
-// private classes
-//--------------------------
- private static class Listener implements NotificationListener {
- public void handleNotification(Notification n, Object handback) {
- System.out.println(">>> Listener: receive: "+n);
- }
- }
-
-
- private static class LostListener implements NotificationListener {
- public void handleNotification(Notification n, Object handback) {
- if (!EventClient.NOTIFS_LOST.equals(n.getType())) {
- return;
- }
-
- if (!(n.getUserData() instanceof Long)) {
- System.out.println(">>> Listener: JMXConnectionNotification userData " +
- "not a Long: " + n.getUserData());
- System.exit(1);
- } else {
- int lost = ((Long) n.getUserData()).intValue();
- lostCount += lost;
- if (lostCount >= sentNotifs) {
- synchronized(this) {
- this.notifyAll();
- }
- }
- }
-
- }
-
-
- private int lostCount = 0;
- }
-
- public static class NotificationEmitter extends NotificationBroadcasterSupport
- implements NotificationEmitterMBean {
-
- public MBeanNotificationInfo[] getNotificationInfo() {
- final String[] ntfTypes = {myType};
-
- final MBeanNotificationInfo[] ntfInfoArray = {
- new MBeanNotificationInfo(ntfTypes,
- "javax.management.Notification",
- "Notifications sent by the NotificationEmitter")};
-
- return ntfInfoArray;
- }
-
- /**
- * Send not serializable Notifications.
- *
- * @param nb The number of notifications to send
- */
- public void sendNotserializableNotifs(Integer nb) {
-
- Notification notif;
- for (int i=1; i<=nb.intValue(); i++) {
- notif = new Notification(myType, this, i);
-
- notif.setUserData(new Object());
- sendNotification(notif);
- }
- }
-
- /**
- * Send Notification objects.
- *
- * @param nb The number of notifications to send
- */
- public void sendNotifications(Integer nb) {
- Notification notif;
- for (int i=1; i<=nb.intValue(); i++) {
- notif = new Notification(myType, this, i);
-
- sendNotification(notif);
- }
- }
-
- private final String myType = "notification.my_notification";
- }
-
- public interface NotificationEmitterMBean {
- public void sendNotifications(Integer nb);
-
- public void sendNotserializableNotifs(Integer nb);
- }
-}