diff options
author | Bernard Normier <bernard@zeroc.com> | 2007-09-24 17:07:33 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2007-09-24 17:07:33 -0400 |
commit | 080656b952732140cae223651714b0a0fc460b08 (patch) | |
tree | fea62f6e795b522ac64230c0a67f7c9cd89544ef /java/src | |
parent | Fixed test warning (diff) | |
download | ice-080656b952732140cae223651714b0a0fc460b08.tar.bz2 ice-080656b952732140cae223651714b0a0fc460b08.tar.xz ice-080656b952732140cae223651714b0a0fc460b08.zip |
Squashed commit of the following:
commit 67f0310e1125b278157942d1387f694d9bf9921a
Author: Bernard Normier <bernard@zeroc.com>
Date: Mon Sep 24 16:56:17 2007 -0400
Added ability to retrieve server properties from IceGrid GUI
Diffstat (limited to 'java/src')
-rwxr-xr-x | java/src/IceGridGUI/Application/PlainServer.java | 4 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Application/ServerSubEditor.java | 14 | ||||
-rwxr-xr-x | java/src/IceGridGUI/LiveDeployment/Server.java | 83 | ||||
-rwxr-xr-x | java/src/IceGridGUI/LiveDeployment/ServerEditor.java | 130 | ||||
-rwxr-xr-x | java/src/IceGridGUI/LiveDeployment/TableField.java | 8 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Utils.java | 52 |
6 files changed, 278 insertions, 13 deletions
diff --git a/java/src/IceGridGUI/Application/PlainServer.java b/java/src/IceGridGUI/Application/PlainServer.java index 8b686e55a4e..9f4eba87ebf 100755 --- a/java/src/IceGridGUI/Application/PlainServer.java +++ b/java/src/IceGridGUI/Application/PlainServer.java @@ -303,6 +303,10 @@ class PlainServer extends Communicator implements Server { attributes.add(createAttribute("exe", descriptor.exe)); } + if(descriptor.iceVersion.length() > 0) + { + attributes.add(createAttribute("ice-version", descriptor.iceVersion)); + } if(descriptor.pwd.length() > 0) { attributes.add(createAttribute("pwd", descriptor.pwd)); diff --git a/java/src/IceGridGUI/Application/ServerSubEditor.java b/java/src/IceGridGUI/Application/ServerSubEditor.java index 058c8ab2d27..9e23519e510 100755 --- a/java/src/IceGridGUI/Application/ServerSubEditor.java +++ b/java/src/IceGridGUI/Application/ServerSubEditor.java @@ -43,6 +43,11 @@ class ServerSubEditor extends CommunicatorSubEditor + "myHelloServer<br>" + "C:\\testbed\\hello\\server</html>"); + _iceVersion.getDocument().addDocumentListener( + _mainEditor.getUpdateListener()); + _iceVersion.setToolTipText("<html>The Ice version used by this server;<br>" + + "blank means 'same version as the IceGrid registry'.</html>"); + _pwd.getDocument().addDocumentListener( _mainEditor.getUpdateListener()); _pwd.setToolTipText( @@ -151,6 +156,9 @@ class ServerSubEditor extends CommunicatorSubEditor builder.append("Path to Executable"); builder.append(_exe, 3); builder.nextLine(); + builder.append("Ice Version"); + builder.append(_iceVersion, 3); + builder.nextLine(); builder.append("Working Directory"); builder.append(_pwd, 3); builder.nextLine(); @@ -205,6 +213,7 @@ class ServerSubEditor extends CommunicatorSubEditor ServerDescriptor descriptor = getServerDescriptor(); descriptor.id = _id.getText().trim(); descriptor.exe = _exe.getText().trim(); + descriptor.iceVersion = _iceVersion.getText().trim(); descriptor.pwd = _pwd.getText().trim(); descriptor.options = _options.getList(); @@ -272,6 +281,10 @@ class ServerSubEditor extends CommunicatorSubEditor _exe.setText( Utils.substitute(descriptor.exe, detailResolver)); _exe.setEditable(isEditable); + _iceVersion.setText( + Utils.substitute(descriptor.iceVersion, detailResolver)); + _iceVersion.setEditable(isEditable); + _pwd.setText( Utils.substitute(descriptor.pwd, detailResolver)); _pwd.setEditable(isEditable); @@ -381,6 +394,7 @@ class ServerSubEditor extends CommunicatorSubEditor private JTextField _id = new JTextField(20); private JTextField _exe = new JTextField(20); + private JTextField _iceVersion = new JTextField(20); private JTextField _pwd = new JTextField(20); private ListTextField _options = new ListTextField(20); private JTextField _user = new JTextField(20); diff --git a/java/src/IceGridGUI/LiveDeployment/Server.java b/java/src/IceGridGUI/LiveDeployment/Server.java index 4ba21661ef3..0ae8bc93d69 100755 --- a/java/src/IceGridGUI/LiveDeployment/Server.java +++ b/java/src/IceGridGUI/LiveDeployment/Server.java @@ -16,6 +16,7 @@ import javax.swing.JMenu; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JTree; +import javax.swing.SwingUtilities; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; @@ -420,6 +421,88 @@ class Server extends ListArrayTreeNode } } + public void showRuntimeProperties() + { + AMI_Admin_getServerProperties cb = new AMI_Admin_getServerProperties() + { + public void ice_response(final java.util.Map properties) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + _editor.setRuntimeProperties((java.util.SortedMap)properties, Server.this); + } + }); + } + + public void ice_exception(final Ice.UserException e) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + if(e instanceof IceGrid.ServerUnreachableException) + { + _editor.setBuildId("Error: can't reach this server", Server.this); + } + else if(e instanceof IceGrid.NodeNotExistException) + { + _editor.setBuildId( + "Error: this node is not known to this IceGrid Registry", + Server.this); + } + else if(e instanceof IceGrid.NodeUnreachableException) + { + _editor.setBuildId("Error: cannot reach this node", Server.this); + } + else + { + _editor.setBuildId("Error: " + e.toString(), Server.this); + } + } + }); + } + + public void ice_exception(final Ice.LocalException e) + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + _editor.setBuildId("Error: " + e.toString(), Server.this); + } + }); + } + }; + + try + { + getCoordinator().getMainFrame().setCursor( + Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + IceGrid.AdminPrx admin = getCoordinator().getAdmin(); + if(admin == null) + { + _editor.setBuildId("", this); + } + else + { + admin.getServerProperties_async(cb, _id); + } + } + catch(Ice.LocalException e) + { + _editor.setBuildId("Error: " + e.toString(), this); + } + finally + { + getCoordinator().getMainFrame().setCursor( + Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + } + + public JPopupMenu getPopupMenu() { LiveActions la = getCoordinator().getLiveActionsForPopup(); diff --git a/java/src/IceGridGUI/LiveDeployment/ServerEditor.java b/java/src/IceGridGUI/LiveDeployment/ServerEditor.java index c216a4c9d71..d46894fbde1 100755 --- a/java/src/IceGridGUI/LiveDeployment/ServerEditor.java +++ b/java/src/IceGridGUI/LiveDeployment/ServerEditor.java @@ -41,16 +41,17 @@ class ServerEditor extends CommunicatorEditor return _toolBar; } - ServerEditor(Coordinator c) { _coordinator = c; _currentState.setEditable(false); - _currentPid.setEditable(false); _enabled.setEnabled(false); + _currentPid.setEditable(false); + _buildId.setEditable(false); _application.setEditable(false); _exe.setEditable(false); + _iceVersion.setEditable(false); _pwd.setEditable(false); _activation.setEditable(false); @@ -65,6 +66,19 @@ class ServerEditor extends CommunicatorEditor _icepatch.setEditable(false); _directories.setEditable(false); + Action refresh = new AbstractAction("Refresh") + { + public void actionPerformed(ActionEvent e) + { + _buildId.setText("Retrieving..."); + _properties.clear(); + _target.showRuntimeProperties(); + } + }; + refresh.putValue(Action.SHORT_DESCRIPTION, + "Reread the properties from the server"); + _refreshButton = new JButton(refresh); + Action gotoApplication = new AbstractAction( "", Utils.getIcon("/icons/16x16/goto.png")) { @@ -89,35 +103,63 @@ class ServerEditor extends CommunicatorEditor _target = server; ServerState state = server.getState(); + ServerDescriptor descriptor = server.getServerDescriptor(); + final Utils.Resolver resolver = server.getResolver(); + if(state == null) { _currentState.setText("Unknown"); - _currentPid.setText(""); _enabled.setSelected(false); + _currentPid.setText(""); + _buildId.setText("Unknown"); + _properties.clear(); + _refreshButton.setEnabled(false); } else { _currentState.setText(state.toString()); + _enabled.setSelected(server.isEnabled()); int pid = server.getPid(); if(pid == 0) { _currentPid.setText(""); + _buildId.setText(""); + _properties.clear(); + _refreshButton.setEnabled(false); } else { _currentPid.setText(Integer.toString(pid)); + + int iceIntVersion = Utils.getIntVersion(resolver.substitute(descriptor.iceVersion)); + + if(iceIntVersion == 0 || iceIntVersion >= 30300) + { + _buildId.setText("Retrieving..."); + _properties.clear(); + + // + // Retrieve all properties in background + // + _target.showRuntimeProperties(); + _refreshButton.setEnabled(true); + } + else + { + _buildId.setText(""); + _properties.clear(); + _refreshButton.setEnabled(false); + } } - _enabled.setSelected(server.isEnabled()); } - ServerDescriptor descriptor = server.getServerDescriptor(); - final Utils.Resolver resolver = server.getResolver(); - + _application.setText(resolver.find("application")); super.show(descriptor, server.getProperties(), resolver); _exe.setText(resolver.substitute(descriptor.exe)); + _iceVersion.setText(resolver.substitute(descriptor.iceVersion)); _pwd.setText(resolver.substitute(descriptor.pwd)); Ice.StringHolder toolTipHolder = new Ice.StringHolder(); @@ -162,6 +204,41 @@ class ServerEditor extends CommunicatorEditor _directories.setToolTipText(toolTip); } + void setBuildId(String buildString, Server server) + { + // + // That's to report error messages + // + + if(server == _target && _target.getPid() != 0) + { + _buildId.setText(buildString); + } + // + // Otherwise we've already moved to another server + // + } + + void setRuntimeProperties(java.util.SortedMap map, Server server) + { + if(server == _target && _target.getPid() != 0) + { + _properties.setSortedMap(map); + + String buildString = (String)map.get("BuildId"); + if(buildString == null) + { + _buildId.setText(""); + } + else + { + _buildId.setText(buildString); + } + } + // + // Otherwise we've already moved to another server + // + } protected void appendProperties(DefaultFormBuilder builder) { @@ -171,11 +248,32 @@ class ServerEditor extends CommunicatorEditor builder.append(_currentState, 3); builder.nextLine(); - builder.append("Process ID"); + builder.append("", _enabled); + builder.nextLine(); + + builder.append("Process Id"); builder.append(_currentPid, 3); builder.nextLine(); - - builder.append("", _enabled); + + builder.append("Build Id"); + builder.append(_buildId, _refreshButton); + builder.nextLine(); + + builder.append("Properties"); + builder.nextLine(); + builder.append(""); + builder.nextLine(); + builder.append(""); + + builder.nextLine(); + builder.append(""); + + builder.nextRow(-6); + CellConstraints cc = new CellConstraints(); + JScrollPane scrollPane = new JScrollPane(_properties); + builder.add(scrollPane, + cc.xywh(builder.getColumn(), builder.getRow(), 3, 7)); + builder.nextRow(6); builder.nextLine(); builder.appendSeparator("Configuration"); @@ -194,6 +292,9 @@ class ServerEditor extends CommunicatorEditor builder.append("Path to Executable"); builder.append(_exe, 3); builder.nextLine(); + builder.append("Ice Version"); + builder.append(_iceVersion, 3); + builder.nextLine(); builder.append("Working Directory"); builder.append(_pwd, 3); builder.nextLine(); @@ -211,8 +312,7 @@ class ServerEditor extends CommunicatorEditor builder.nextLine(); builder.append(""); builder.nextRow(-6); - CellConstraints cc = new CellConstraints(); - JScrollPane scrollPane = new JScrollPane(_envs); + scrollPane = new JScrollPane(_envs); builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 7)); builder.nextRow(6); @@ -274,13 +374,17 @@ class ServerEditor extends CommunicatorEditor private Server _target; private JTextField _currentState = new JTextField(20); - private JTextField _currentPid = new JTextField(20); private JCheckBox _enabled = new JCheckBox("Enabled"); + private JTextField _currentPid = new JTextField(20); + private JTextField _buildId = new JTextField(20); + private JButton _refreshButton; + private TableField _properties = new TableField("Name", "Value"); private JTextField _application = new JTextField(20); private JButton _gotoApplication; private JTextField _exe = new JTextField(20); + private JTextField _iceVersion = new JTextField(20); private JTextField _pwd = new JTextField(20); private JTextField _user = new JTextField(20); diff --git a/java/src/IceGridGUI/LiveDeployment/TableField.java b/java/src/IceGridGUI/LiveDeployment/TableField.java index 610872ed7cb..ceb9f670d26 100755 --- a/java/src/IceGridGUI/LiveDeployment/TableField.java +++ b/java/src/IceGridGUI/LiveDeployment/TableField.java @@ -189,6 +189,14 @@ public class TableField extends JTable cr.setOpaque(false); } + public void clear() + { + _model.setDataVector(new java.util.Vector(), _columnNames); + DefaultTableCellRenderer cr = (DefaultTableCellRenderer) + getDefaultRenderer(String.class); + cr.setOpaque(false); + } + private DefaultTableModel _model; private java.util.Vector _columnNames; } diff --git a/java/src/IceGridGUI/Utils.java b/java/src/IceGridGUI/Utils.java index 4a4310c61f6..a3bffbdc5ec 100755 --- a/java/src/IceGridGUI/Utils.java +++ b/java/src/IceGridGUI/Utils.java @@ -27,6 +27,58 @@ public class Utils } } + // + // Extract Ice version in the form XXYYZZ, e.g. 030201 (for 3.2.1) + // 0 == empty string + // -1 == error + // + static public int getIntVersion(String version) + { + int result = 0; + version = version.trim(); + if(version.length() > 0) + { + try + { + int firstDotPos = version.indexOf('.'); + + if(firstDotPos == -1) + { + result = -1; + } + else + { + result = Integer.parseInt(version.substring(0, firstDotPos)); + if(result == 0) + { + return -1; + } + result *= 100; + + + int secondDotPos = version.indexOf('.', firstDotPos + 1); + if(secondDotPos == -1) + { + result += Integer.parseInt(version.substring(firstDotPos + 1)); + result *= 100; + } + else + { + result += Integer.parseInt(version.substring(firstDotPos + 1, secondDotPos)); + result *= 100; + result += Integer.parseInt(version.substring(secondDotPos + 1)); + } + } + } + catch(NumberFormatException e) + { + result = -1; + } + } + return result; + } + + static public interface Stringifier { public String toString(Object obj); |