usr/src/java/vpanels/panels/examples/org/opensolaris/os/vp/panels/example/time2/client/swing/TimePanelDescriptor.java
changeset 545 7a29a25b92e2
parent 459 abb4563e4968
child 551 aff4e93d292e
--- a/usr/src/java/vpanels/panels/examples/org/opensolaris/os/vp/panels/example/time2/client/swing/TimePanelDescriptor.java	Wed Jul 21 10:13:44 2010 -0700
+++ b/usr/src/java/vpanels/panels/examples/org/opensolaris/os/vp/panels/example/time2/client/swing/TimePanelDescriptor.java	Wed Jul 21 20:26:39 2010 -0400
@@ -20,14 +20,11 @@
  */
 
 /*
- * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  */
 
 package org.opensolaris.os.vp.panels.example.time2.client.swing;
 
-import java.io.IOException;
-import javax.management.JMX;
 import org.opensolaris.os.vp.panel.common.*;
 import org.opensolaris.os.vp.panel.common.control.*;
 import org.opensolaris.os.vp.panel.common.model.*;
@@ -37,15 +34,14 @@
 import org.opensolaris.os.vp.util.misc.Finder;
 
 public class TimePanelDescriptor
-    extends AbstractSwingPanelDescriptor<ManagedObject>
-    implements ConnectionListener {
+    extends AbstractSwingPanelDescriptor<ManagedObject> {
 
     //
     // Instance data
     //
 
     private DefaultControl control;
-    private TimeMXBean bean;
+    private MXBeanTracker<TimeMXBean> beanTracker;
 
     //
     // Constructors
@@ -68,29 +64,23 @@
 	control = new PanelFrameControl<TimePanelDescriptor>(this);
 	control.addChildren(new TimeControl(this));
 
-	setBean(context.getConnectionInfo());
-	context.addConnectionListener(this);
-    }
-
-    //
-    // ConnectionListener methods
-    //
-
-    @Override
-    public void connectionChanged(ConnectionEvent event) {
-	setBean(event.getConnectionInfo());
-    }
-
-    @Override
-    public void connectionFailed(ConnectionEvent event) {
-        // There's nothing particularly helpful we can do here except wait for
-        // the repaired connection in connectionChanged
+	beanTracker = new MXBeanTracker<TimeMXBean>(
+	    TimeMXBean.class, context, TimeUtil.OBJECT_NAME);
     }
 
     //
     // ManagedObject methods
     //
 
+    /**
+     * Stops monitoring the connection to the remote host.
+     */
+    @Override
+    public void dispose() {
+	beanTracker.dispose();
+	super.dispose();
+    }
+
     @Override
     public String getName() {
 	return Finder.getString("panel.time.name");
@@ -110,20 +100,6 @@
     //
 
     public TimeMXBean getTimeBean() {
-	return bean;
-    }
-
-    //
-    // Private methods
-    //
-
-    private void setBean(ConnectionInfo info) {
-	try {
-	    bean = JMX.newMXBeanProxy(
-		info.getConnector().getMBeanServerConnection(),
-		TimeUtil.OBJECT_NAME, TimeMXBean.class);
-	} catch (IOException e) {
-	    bean = null;
-	}
+	return beanTracker.getBean();
     }
 }