summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rwxr-xr-xjava/src/IceGridGUI/Application/PlainServer.java4
-rwxr-xr-xjava/src/IceGridGUI/Application/ServerSubEditor.java14
-rwxr-xr-xjava/src/IceGridGUI/LiveDeployment/Server.java83
-rwxr-xr-xjava/src/IceGridGUI/LiveDeployment/ServerEditor.java130
-rwxr-xr-xjava/src/IceGridGUI/LiveDeployment/TableField.java8
-rwxr-xr-xjava/src/IceGridGUI/Utils.java52
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);