summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2008-12-30 14:30:38 -0500
committerBernard Normier <bernard@zeroc.com>2008-12-30 14:30:38 -0500
commit0fe58031a3450b81c4ab5c47b929bb703164eba7 (patch)
treed242c8bf2c2097d651795269b91ba7f1a0d26b0c
parentRevert "Fix 3608 - IceStorm.ice includes Identity.ice" (diff)
downloadice-0fe58031a3450b81c4ab5c47b929bb703164eba7.tar.bz2
ice-0fe58031a3450b81c4ab5c47b929bb703164eba7.tar.xz
ice-0fe58031a3450b81c4ab5c47b929bb703164eba7.zip
Fixed bugs #3325, #3326 and #3327
-rw-r--r--java/build.xml3
-rw-r--r--java/demo/build.xml2
-rw-r--r--java/src/IceGridGUI/Coordinator.java7
-rw-r--r--java/src/IceGridGUI/LiveDeployment/Server.java140
-rw-r--r--java/src/IceGridGUI/LiveDeployment/ServerEditor.java26
-rw-r--r--java/src/IceGridGUI/SessionKeeper.java38
-rw-r--r--java/src/IceGridGUI/XMLWriter.java2
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]) + "\"");
}
}
}