summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/LiveDeployment/Service.java
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2012-09-28 23:44:07 +0200
committerJose <jose@zeroc.com>2012-09-28 23:44:07 +0200
commit9fa149f8507463a7e92a313057d5614eeb00084b (patch)
treed630a4595907f7782e773a6af6daef2ce5d1030d /java/src/IceGridGUI/LiveDeployment/Service.java
parentMerge branch 'mx' of ssh://dev.zeroc.com/home/git/ice into mx (diff)
downloadice-9fa149f8507463a7e92a313057d5614eeb00084b.tar.bz2
ice-9fa149f8507463a7e92a313057d5614eeb00084b.tar.xz
ice-9fa149f8507463a7e92a313057d5614eeb00084b.zip
Added support to display IceBox metrics
Diffstat (limited to 'java/src/IceGridGUI/LiveDeployment/Service.java')
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Service.java140
1 files changed, 137 insertions, 3 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/Service.java b/java/src/IceGridGUI/LiveDeployment/Service.java
index a584d7798ba..a375e8f1422 100644
--- a/java/src/IceGridGUI/LiveDeployment/Service.java
+++ b/java/src/IceGridGUI/LiveDeployment/Service.java
@@ -272,7 +272,7 @@ public class Service extends ListArrayTreeNode
Service(Server parent, String serviceName, Utils.Resolver resolver, ServiceInstanceDescriptor descriptor,
ServiceDescriptor serviceDescriptor, PropertySetDescriptor serverInstancePSDescriptor)
{
- super(parent, serviceName, 2);
+ super(parent, serviceName, 3);
_resolver = resolver;
_instanceDescriptor = descriptor;
@@ -281,6 +281,7 @@ public class Service extends ListArrayTreeNode
_childrenArray[0] = _adapters;
_childrenArray[1] = _dbEnvs;
+ _childrenArray[2] = _metrics;
createAdapters();
createDbEnvs();
@@ -331,6 +332,10 @@ public class Service extends ListArrayTreeNode
if(!_started)
{
_started = true;
+ if(getRoot().getTree().isExpanded(getPath()))
+ {
+ fetchMetricsViewNames();
+ }
getRoot().getTreeModel().nodeChanged(this);
}
}
@@ -339,6 +344,9 @@ public class Service extends ListArrayTreeNode
{
if(_started)
{
+ _metricsRetrieved = false;
+ _metrics.clear();
+ rebuild(this);
_started = false;
getRoot().getTreeModel().nodeChanged(this);
}
@@ -470,15 +478,141 @@ public class Service extends ListArrayTreeNode
}
}
+ public void fetchMetricsViewNames()
+ {
+ if(!_started || _metricsRetrieved)
+ {
+ return; // Already loaded or not started.
+ }
+ _metricsRetrieved = true;
+
+ Ice.ObjectPrx serverAdmin = ((Server)_parent).getServerAdmin();
+ if(serverAdmin == null)
+ {
+ return;
+ }
+ final IceMX.MetricsAdminPrx metricsAdmin =
+ IceMX.MetricsAdminPrxHelper.uncheckedCast(serverAdmin.ice_facet("IceBox.Service." + _id +
+ ".MetricsAdmin"));
+
+ IceMX.Callback_MetricsAdmin_getMetricsViewNames cb = new IceMX.Callback_MetricsAdmin_getMetricsViewNames()
+ {
+ public void response(final String[] names)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _metricsNames = names;
+ createMetrics(metricsAdmin);
+ rebuild(Service.this);
+ }
+ });
+ }
+
+ public void exception(final Ice.LocalException e)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ if(e instanceof Ice.ObjectNotExistException)
+ {
+ // Server is down.
+ }
+ else if(e instanceof Ice.FacetNotExistException)
+ {
+ // MetricsAdmin facet not present. Old server version?
+ }
+ else
+ {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(getCoordinator().getMainFrame(),
+ "Error: " + e.toString(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ });
+ }
+ };
+ try
+ {
+ metricsAdmin.begin_getMetricsViewNames(cb);
+ }
+ catch(Ice.LocalException e)
+ {
+ JOptionPane.showMessageDialog(getCoordinator().getMainFrame(), "Error: " + e.toString(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+ private void createMetrics(IceMX.MetricsAdminPrx metricsAdmin)
+ {
+ if(_metricsNames != null)
+ {
+ for(String name : _metricsNames)
+ {
+ insertSortedChild(new MetricsView(this, name, metricsAdmin), _metrics, null);
+ }
+ }
+ }
+
+ void rebuild(Service service, boolean fetchMetricsViewNames)
+ {
+ _metrics.clear();
+ rebuild(service);
+ if(fetchMetricsViewNames)
+ {
+ _metricsRetrieved = false;
+ if(getRoot().getTree().isExpanded(getPath()))
+ {
+ fetchMetricsViewNames();
+ }
+ }
+ }
+
+ void rebuild(Service service)
+ {
+ _adapters = service._adapters;
+ _dbEnvs = service._dbEnvs;
+ _metrics = service._metrics;
+
+ _childrenArray[0] = _adapters;
+ _childrenArray[1] = _dbEnvs;
+ _childrenArray[2] = _metrics;
+
+ //
+ // Need to re-parent all the children
+ //
+ for(Adapter adapter: _adapters)
+ {
+ adapter.reparent(this);
+ }
+
+ for(DbEnv dbEnv: _dbEnvs)
+ {
+ dbEnv.reparent(this);
+ }
+
+ for(MetricsView metrics: _metrics)
+ {
+ metrics.reparent(this);
+ }
+ getRoot().getTreeModel().nodeStructureChanged(this);
+ }
+
private final ServiceInstanceDescriptor _instanceDescriptor;
private final ServiceDescriptor _serviceDescriptor;
private final PropertySetDescriptor _serverInstancePSDescriptor;
private final Utils.Resolver _resolver;
- private final java.util.List<Adapter> _adapters = new java.util.LinkedList<Adapter>();
- private final java.util.List<DbEnv> _dbEnvs = new java.util.LinkedList<DbEnv>();
+ private java.util.List<Adapter> _adapters = new java.util.LinkedList<Adapter>();
+ private java.util.List<DbEnv> _dbEnvs = new java.util.LinkedList<DbEnv>();
+ private java.util.List<MetricsView> _metrics = new java.util.LinkedList<MetricsView>();
private boolean _started = false;
+ private boolean _metricsRetrieved = false;
+ private String[] _metricsNames;
static private ServiceEditor _editor;
static private DefaultTreeCellRenderer _cellRenderer;