diff options
author | Bernard Normier <bernard@zeroc.com> | 2008-12-30 14:30:38 -0500 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2008-12-30 14:30:38 -0500 |
commit | 0fe58031a3450b81c4ab5c47b929bb703164eba7 (patch) | |
tree | d242c8bf2c2097d651795269b91ba7f1a0d26b0c | |
parent | Revert "Fix 3608 - IceStorm.ice includes Identity.ice" (diff) | |
download | ice-0fe58031a3450b81c4ab5c47b929bb703164eba7.tar.bz2 ice-0fe58031a3450b81c4ab5c47b929bb703164eba7.tar.xz ice-0fe58031a3450b81c4ab5c47b929bb703164eba7.zip |
Fixed bugs #3325, #3326 and #3327
-rw-r--r-- | java/build.xml | 3 | ||||
-rw-r--r-- | java/demo/build.xml | 2 | ||||
-rw-r--r-- | java/src/IceGridGUI/Coordinator.java | 7 | ||||
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/Server.java | 140 | ||||
-rw-r--r-- | java/src/IceGridGUI/LiveDeployment/ServerEditor.java | 26 | ||||
-rw-r--r-- | java/src/IceGridGUI/SessionKeeper.java | 38 | ||||
-rw-r--r-- | java/src/IceGridGUI/XMLWriter.java | 2 |
7 files changed, 160 insertions, 58 deletions
diff --git a/java/build.xml b/java/build.xml index 089ed7c091e..34b4dedce2e 100644 --- a/java/build.xml +++ b/java/build.xml @@ -221,7 +221,8 @@ <target name="icegridadmin-plain-jar" depends="icegridadmin-compile" if="build-icegridadmin-plain-jar"> <manifest file="${lib.dir}/icegridgui.mf"> - <attribute name="Class-Path" value="Ice.jar ../resources/"/> + <attribute name="Main-Class" value="IceGridGUI.Main"/> + <attribute name="Class-Path" value="Ice.jar ${jgoodies.forms} ${jgoodies.looks} ../resources/ "/> </manifest> <jar jarfile="${lib.dir}/IceGridGUI.jar" manifest="${lib.dir}/icegridgui.mf" basedir="${lib.dir}"> <include name="IceGridGUI/**"/> diff --git a/java/demo/build.xml b/java/demo/build.xml index ad885813321..a4ed891a065 100644 --- a/java/demo/build.xml +++ b/java/demo/build.xml @@ -19,7 +19,6 @@ <ant dir="Glacier2"/> <ant dir="IceGrid"/> <ant dir="book"/> - <ant dir="RMI"/> </target> <target name="clean"> @@ -30,7 +29,6 @@ <ant dir="Glacier2" target="clean"/> <ant dir="IceGrid" target="clean"/> <ant dir="book" target="clean"/> - <ant dir="RMI" target="clean"/> </target> </project> diff --git a/java/src/IceGridGUI/Coordinator.java b/java/src/IceGridGUI/Coordinator.java index 3a128ca91c1..245b52a36f2 100644 --- a/java/src/IceGridGUI/Coordinator.java +++ b/java/src/IceGridGUI/Coordinator.java @@ -1396,7 +1396,7 @@ public class Coordinator { JOptionPane.showMessageDialog( parent, - "This version of IceGrid Admin requires an IceGrid Registry version 3.2 or higher", + "This version of IceGrid Admin requires an IceGrid Registry version 3.3", "Version Mismatch", JOptionPane.ERROR_MESSAGE); return null; @@ -1627,6 +1627,11 @@ public class Coordinator return _sessionKeeper.addCallback(servant, name, facet); } + public Ice.ObjectPrx retrieveCallback(String name, String facet) + { + return _sessionKeeper.retrieveCallback(name, facet); + } + public Ice.Object removeCallback(String name, String facet) { return _sessionKeeper.removeCallback(name, facet); 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; diff --git a/java/src/IceGridGUI/LiveDeployment/ServerEditor.java b/java/src/IceGridGUI/LiveDeployment/ServerEditor.java index 6b81a98c045..5b0f9577ce8 100644 --- a/java/src/IceGridGUI/LiveDeployment/ServerEditor.java +++ b/java/src/IceGridGUI/LiveDeployment/ServerEditor.java @@ -95,6 +95,9 @@ class ServerEditor extends CommunicatorEditor void show(Server server) { + + Server previousServer = _target; + _target = server; ServerState state = server.getState(); @@ -108,6 +111,7 @@ class ServerEditor extends CommunicatorEditor _currentPid.setText(""); _buildId.setText("Unknown"); _properties.clear(); + _propertiesRetrieved = false; _refreshButton.setEnabled(false); } else @@ -128,19 +132,29 @@ class ServerEditor extends CommunicatorEditor int iceIntVersion = server.getIceVersion(); if(state == ServerState.Active && (iceIntVersion == 0 || iceIntVersion >= 30300)) { - _buildId.setText("Retrieving..."); - _properties.clear(); + if(!_propertiesRetrieved || previousServer != server) + { + _buildId.setText("Retrieving..."); + _properties.clear(); + // + // Retrieve all properties in background + // + _target.showRuntimeProperties(); + _propertiesRetrieved = true; // set to true immediately to avoid 'spinning' + } + // - // Retrieve all properties in background + // Otherwise, use current value // - _target.showRuntimeProperties(); _refreshButton.setEnabled(true); + } else { _buildId.setText(""); _properties.clear(); + _propertiesRetrieved = false; _refreshButton.setEnabled(false); } } @@ -215,7 +229,8 @@ class ServerEditor extends CommunicatorEditor if(server == _target) { _properties.setSortedMap(map); - + _propertiesRetrieved = true; + String buildString = (String)map.get("BuildId"); if(buildString == null) { @@ -370,6 +385,7 @@ class ServerEditor extends CommunicatorEditor private JTextField _buildId = new JTextField(20); private JButton _refreshButton; private TableField _properties = new TableField("Name", "Value"); + private boolean _propertiesRetrieved = false; private JTextField _application = new JTextField(20); private JButton _gotoApplication; diff --git a/java/src/IceGridGUI/SessionKeeper.java b/java/src/IceGridGUI/SessionKeeper.java index 128ce1a7b80..5130b133c6d 100644 --- a/java/src/IceGridGUI/SessionKeeper.java +++ b/java/src/IceGridGUI/SessionKeeper.java @@ -99,6 +99,17 @@ class SessionKeeper _serverAdminCategory = _admin.getServerAdminCategory(); } + catch(Ice.OperationNotExistException e) + { + logout(true); + JOptionPane.showMessageDialog( + parent, + "This version of IceGrid Admin requires an IceGrid Registry version 3.3", + "Login failed: Version Mismatch", + JOptionPane.ERROR_MESSAGE); + throw e; + + } catch(Ice.LocalException e) { logout(true); @@ -189,6 +200,27 @@ class SessionKeeper } } + Ice.ObjectPrx retrieveCallback(String name, String facet) + { + if(_adminCallbackCategory == null) + { + return null; + } + else + { + Ice.Identity ident = new Ice.Identity(name, _adminCallbackCategory); + if(_adapter.findFacet(ident, facet) == null) + { + return null; + } + else + { + return _adapter.createProxy(ident).ice_facet(facet); + } + } + } + + Ice.Object removeCallback(String name, String facet) { if(_adminCallbackCategory == null) @@ -1388,6 +1420,12 @@ class SessionKeeper { return _session == null ? null : _session.addCallback(servant, name, facet); } + + Ice.ObjectPrx retrieveCallback(String name, String facet) + { + return _session == null ? null : _session.retrieveCallback(name, facet); + } + Ice.Object removeCallback(String name, String facet) { diff --git a/java/src/IceGridGUI/XMLWriter.java b/java/src/IceGridGUI/XMLWriter.java index 30bb46ffba5..a0c6e225f87 100644 --- a/java/src/IceGridGUI/XMLWriter.java +++ b/java/src/IceGridGUI/XMLWriter.java @@ -93,7 +93,7 @@ public class XMLWriter while(p.hasNext()) { String[] pair = (String[])p.next(); - _writer.write(" " + pair[0] + "=\"" + pair[1] + "\""); + _writer.write(" " + pair[0] + "=\"" + escape(pair[1]) + "\""); } } } |