summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/LiveDeployment/Server.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGridGUI/LiveDeployment/Server.java')
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Server.java140
1 files changed, 92 insertions, 48 deletions
diff --git a/java/src/IceGridGUI/LiveDeployment/Server.java b/java/src/IceGridGUI/LiveDeployment/Server.java
index a9ac2d67c1e..4767c04a8c2 100644
--- a/java/src/IceGridGUI/LiveDeployment/Server.java
+++ b/java/src/IceGridGUI/LiveDeployment/Server.java
@@ -711,6 +711,21 @@ class Server extends ListArrayTreeNode
}
}
+ void updateServices()
+ {
+ for(Service service: _services)
+ {
+ if(_startedServices.contains(service.getId()))
+ {
+ service.started();
+ }
+ else
+ {
+ service.stopped();
+ }
+ }
+ }
+
void rebuild(Server server)
{
_resolver = server._resolver;
@@ -722,6 +737,10 @@ class Server extends ListArrayTreeNode
_dbEnvs = server._dbEnvs;
_services = server._services;
+ _childrenArray[0] = _adapters;
+ _childrenArray[1] = _dbEnvs;
+ _childrenArray[2] = _services;
+
//
// Need to re-parent all the children
//
@@ -740,9 +759,7 @@ class Server extends ListArrayTreeNode
service.reparent(this);
}
- _childrenArray[0] = _adapters;
- _childrenArray[1] = _dbEnvs;
- _childrenArray[2] = _services;
+ updateServices();
getRoot().getTreeModel().nodeStructureChanged(this);
}
@@ -777,6 +794,7 @@ class Server extends ListArrayTreeNode
_services.clear();
_servicePropertySets.clear();
createServices();
+ updateServices();
getRoot().getTreeModel().nodeStructureChanged(this);
}
@@ -785,6 +803,8 @@ class Server extends ListArrayTreeNode
_services.clear();
_servicePropertySets.clear();
createServices();
+ updateServices();
+
getRoot().getTreeModel().nodeStructureChanged(this);
}
}
@@ -813,63 +833,77 @@ class Server extends ListArrayTreeNode
{
if(_serviceObserver == null)
{
- IceBox.ServiceObserver servant = new IceBox._ServiceObserverDisp()
- {
- public void servicesStarted(final String[] services, Ice.Current current)
+ _serviceObserver = IceBox.ServiceObserverPrxHelper.uncheckedCast(
+ getCoordinator().retrieveCallback(_id, "IceBox.ServiceManager"));
+
+ if(_serviceObserver == null)
+ {
+ IceBox.ServiceObserver servant = new IceBox._ServiceObserverDisp()
{
- final java.util.Set<String> serviceSet = new java.util.HashSet<String>(java.util.Arrays.asList(services));
-
- SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
+ public void servicesStarted(final String[] services, Ice.Current current)
+ {
+ final java.util.Set<String> serviceSet = new java.util.HashSet<String>(java.util.Arrays.asList(services));
+
+ SwingUtilities.invokeLater(new Runnable()
{
- for(Service service: _services)
+ public void run()
{
- if(serviceSet.contains(service.getId()))
+ for(Service service: _services)
{
- service.started();
+ if(serviceSet.contains(service.getId()))
+ {
+ service.started();
+ }
}
+ _startedServices.addAll(serviceSet);
+ getCoordinator().getLiveDeploymentPane().refresh();
}
- getCoordinator().getLiveDeploymentPane().refresh();
- }
- });
- }
-
- public void servicesStopped(final String[] services, Ice.Current current)
- {
- final java.util.Set<String> serviceSet = new java.util.HashSet<String>(java.util.Arrays.asList(services));
+ });
+ }
- SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
+ public void servicesStopped(final String[] services, Ice.Current current)
+ {
+ final java.util.Set<String> serviceSet = new java.util.HashSet<String>(java.util.Arrays.asList(services));
+
+ SwingUtilities.invokeLater(new Runnable()
{
- for(Service service: _services)
+ public void run()
{
- if(serviceSet.contains(service.getId()))
+ for(Service service: _services)
{
- service.stopped();
+ if(serviceSet.contains(service.getId()))
+ {
+ service.stopped();
+ }
}
+ _startedServices.removeAll(serviceSet);
+ getCoordinator().getLiveDeploymentPane().refresh();
}
- getCoordinator().getLiveDeploymentPane().refresh();
- }
- });
- }
-
- };
+ });
+ }
+
+ };
- _serviceObserver = IceBox.ServiceObserverPrxHelper.uncheckedCast(
- getCoordinator().addCallback(servant, _id, "IceBox.ServiceManager"));
+ _serviceObserver = IceBox.ServiceObserverPrxHelper.uncheckedCast(
+ getCoordinator().addCallback(servant, _id, "IceBox.ServiceManager"));
- if(_serviceObserver == null)
- {
- // TODO: log/report condition (observer not available, e.g. adapter not configured)
+ if(_serviceObserver == null)
+ {
+ JOptionPane.showMessageDialog(
+ getCoordinator().getMainFrame(),
+ "Could not create servant for service-manager observer",
+ "Observer creation error",
+ JOptionPane.ERROR_MESSAGE);
+ }
}
+
}
-
+
if(_serviceObserver != null)
{
//
// Add observer to service manager using AMI call
+ // Note that duplicate registrations are ignored
//
IceBox.AMI_ServiceManager_addObserver cb = new IceBox.AMI_ServiceManager_addObserver()
@@ -881,7 +915,11 @@ class Server extends ListArrayTreeNode
public void ice_exception(Ice.LocalException e)
{
- // TODO: log/report exception
+ JOptionPane.showMessageDialog(
+ getCoordinator().getMainFrame(),
+ "Failed to register service-manager observer: " + e.toString(),
+ "Observer registration error",
+ JOptionPane.ERROR_MESSAGE);
}
};
@@ -897,20 +935,24 @@ class Server extends ListArrayTreeNode
}
catch(Ice.LocalException ex)
{
- // TODO: log/report exception
+ JOptionPane.showMessageDialog(
+ getCoordinator().getMainFrame(),
+ "Failed to contact service-manager: " + ex.toString(),
+ "Observer communication error",
+ JOptionPane.ERROR_MESSAGE);
}
}
}
}
- else if(_state == null || _state == ServerState.Inactive)
+ }
+ else if(_state == null || _state == ServerState.Inactive)
+ {
+ for(Service service: _services)
{
- for(Service service: _services)
- {
- service.stopped();
- }
+ service.stopped();
}
}
-
+
if(fireEvent)
{
getRoot().getTreeModel().nodeChanged(this);
@@ -1157,6 +1199,8 @@ class Server extends ListArrayTreeNode
private java.util.List<DbEnv> _dbEnvs = new java.util.LinkedList<DbEnv>();
private java.util.List<Service> _services = new java.util.LinkedList<Service>();
+ private java.util.Set<String> _startedServices = new java.util.HashSet<String>();
+
private ServerState _state;
private boolean _enabled;
private int _stateIconIndex;