diff options
author | Bernard Normier <bernard@zeroc.com> | 2006-09-15 19:37:33 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2006-09-15 19:37:33 +0000 |
commit | 9b65d302d076197c9c1bdfc8428dc354c82e42a0 (patch) | |
tree | 31c53ebd8dc658603f449a98348d47e770925091 /java | |
parent | Fix (diff) | |
download | ice-9b65d302d076197c9c1bdfc8428dc354c82e42a0.tar.bz2 ice-9b65d302d076197c9c1bdfc8428dc354c82e42a0.tar.xz ice-9b65d302d076197c9c1bdfc8428dc354c82e42a0.zip |
Merged fixes from 3.1 branch
Diffstat (limited to 'java')
-rwxr-xr-x | java/src/IceGridGUI/Application/Root.java | 16 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Application/TreeNode.java | 9 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Coordinator.java | 103 | ||||
-rwxr-xr-x | java/src/IceGridGUI/SessionKeeper.java | 184 |
4 files changed, 254 insertions, 58 deletions
diff --git a/java/src/IceGridGUI/Application/Root.java b/java/src/IceGridGUI/Application/Root.java index 0e4f904c709..47fe70decf0 100755 --- a/java/src/IceGridGUI/Application/Root.java +++ b/java/src/IceGridGUI/Application/Root.java @@ -472,6 +472,14 @@ public class Root extends ListTreeNode //
_coordinator.accessDenied(e);
}
+ catch(Ice.LocalException e)
+ {
+ JOptionPane.showMessageDialog(
+ _coordinator.getMainFrame(),
+ e.toString(),
+ "Communication Exception",
+ JOptionPane.ERROR_MESSAGE);
+ }
finally
{
_coordinator.getMainFrame().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
@@ -488,6 +496,14 @@ public class Root extends ListTreeNode {
_coordinator.accessDenied(e);
}
+ catch(Ice.LocalException e)
+ {
+ JOptionPane.showMessageDialog(
+ _coordinator.getMainFrame(),
+ e.toString(),
+ "Communication Exception",
+ JOptionPane.ERROR_MESSAGE);
+ }
}
public void saveToFile()
diff --git a/java/src/IceGridGUI/Application/TreeNode.java b/java/src/IceGridGUI/Application/TreeNode.java index 4971dac326d..75f33819ea7 100755 --- a/java/src/IceGridGUI/Application/TreeNode.java +++ b/java/src/IceGridGUI/Application/TreeNode.java @@ -230,7 +230,7 @@ public abstract class TreeNode extends TreeNodeBase java.util.Map defaultValues)
throws java.io.IOException
{
- java.util.Iterator p = parameters.iterator();
+ java.util.Iterator p = new java.util.LinkedHashSet(parameters).iterator();
while(p.hasNext())
{
String parameter = (String)p.next();
@@ -251,7 +251,10 @@ public abstract class TreeNode extends TreeNodeBase {
java.util.LinkedList result = new java.util.LinkedList();
- java.util.Iterator p = parameters.iterator();
+ //
+ // We use a LinkedHashSet to maintain order while eliminating duplicates
+ //
+ java.util.Iterator p = new java.util.LinkedHashSet(parameters).iterator();
while(p.hasNext())
{
String param = (String)p.next();
@@ -264,8 +267,6 @@ public abstract class TreeNode extends TreeNodeBase return result;
}
-
-
//
// Actions
//
diff --git a/java/src/IceGridGUI/Coordinator.java b/java/src/IceGridGUI/Coordinator.java index 60f7634fadb..ece3ed0ea1f 100755 --- a/java/src/IceGridGUI/Coordinator.java +++ b/java/src/IceGridGUI/Coordinator.java @@ -365,7 +365,17 @@ public class Coordinator {
if(_communicator == null)
{
- _communicator = Ice.Util.initialize(_initData);
+ try
+ {
+ _communicator = Ice.Util.initialize(_initData);
+ }
+ catch(Ice.LocalException e)
+ {
+ JOptionPane.showMessageDialog(null,
+ e.toString(),
+ "Communicator initialization failed",
+ JOptionPane.ERROR_MESSAGE);
+ }
}
return _communicator;
}
@@ -415,8 +425,6 @@ public class Coordinator return _discardUpdates;
}
-
-
//
// Open live application and select application tab
//
@@ -583,8 +591,6 @@ public class Coordinator public void accessDenied(AccessDeniedException e)
{
- assert false;
-
JOptionPane.showMessageDialog(
_mainFrame,
"Another session (username = " + e.lockUserId
@@ -805,18 +811,37 @@ public class Coordinator AdminSessionPrx session = null;
destroyCommunicator();
- //
- // Transform SSL info into properties
- //
- Ice.InitializationData initData = (Ice.InitializationData)_initData.clone();
- initData.properties = initData.properties._clone();
- initData.properties.setProperty("IceSSL.Keystore", info.keystore);
- initData.properties.setProperty("IceSSL.Password", new String(info.keyPassword));
- initData.properties.setProperty("IceSSL.KeystorePassword", new String(info.keystorePassword));
- initData.properties.setProperty("IceSSL.Alias", info.alias);
- initData.properties.setProperty("IceSSL.Truststore", info.truststore);
- initData.properties.setProperty("IceSSL.TruststorePassword", new String(info.truststorePassword));
- _communicator = Ice.Util.initialize(initData);
+
+ Ice.InitializationData initData = _initData;
+ if(info.routed && info.routerSSLEnabled || !info.routed && info.registrySSLEnabled)
+ {
+ initData = (Ice.InitializationData)initData.clone();
+ initData.properties = initData.properties._clone();
+ initData.properties.setProperty("Ice.Plugin.IceSSL", "IceSSL.PluginFactory");
+
+ //
+ // Transform SSL info into properties
+ //
+ initData.properties.setProperty("IceSSL.Keystore", info.keystore);
+ initData.properties.setProperty("IceSSL.Password", new String(info.keyPassword));
+ initData.properties.setProperty("IceSSL.KeystorePassword", new String(info.keystorePassword));
+ initData.properties.setProperty("IceSSL.Alias", info.alias);
+ initData.properties.setProperty("IceSSL.Truststore", info.truststore);
+ initData.properties.setProperty("IceSSL.TruststorePassword", new String(info.truststorePassword));
+ }
+
+ try
+ {
+ _communicator = Ice.Util.initialize(initData);
+ }
+ catch(Ice.LocalException e)
+ {
+ JOptionPane.showMessageDialog(parent,
+ e.toString(),
+ "Communicator initialization failed",
+ JOptionPane.ERROR_MESSAGE);
+ return null;
+ }
if(info.routed)
{
@@ -824,10 +849,12 @@ public class Coordinator // Router
//
+ Ice.Identity routerId = new Ice.Identity();
routerId.category = info.routerInstanceName;
routerId.name = "router";
String str = "\"" + _communicator.identityToString(routerId) + "\"";
+ if(!info.routerEndpoints.equals(""))
{
str += ":" + info.routerEndpoints;
@@ -846,18 +873,51 @@ public class Coordinator Glacier2.SessionPrx s;
if(info.routerUseSSL)
{
+ router = Glacier2.RouterPrxHelper.
+ uncheckedCast(router.ice_secure(true));
+
s = router.createSessionFromSecureConnection();
+
+ if(s == null)
+ {
+ JOptionPane.showMessageDialog(
+ parent,
+ "createSessionFromSecureConnection returned a null session: \n"
+ + "verify that Glacier2.SSLSessionManager is set to "
+ + "<IceGridInstanceName>/AdminSSLSessionManager in your Glacier2 router configuration",
+ "Login failed",
+ JOptionPane.ERROR_MESSAGE);
+
+ return null;
+ }
}
else
{
s = router.createSession(
info.routerUsername, new String(info.routerPassword));
+
+ if(s == null)
+ {
+ JOptionPane.showMessageDialog(
+ parent,
+ "createSession returned a null session: \n"
+ + "verify that Glacier2.SessionManager is set to "
+ + "<IceGridInstanceName>/AdminSessionManager in your Glacier2 router configuration",
+ "Login failed",
+ JOptionPane.ERROR_MESSAGE);
+
+ return null;
+ }
}
session = AdminSessionPrxHelper.uncheckedCast(s);
}
catch(Glacier2.PermissionDeniedException e)
{
+ if(e.reason.length() == 0)
+ {
+ e.reason = info.routerUseSSL ? "Invalid credentials" : "Invalid username/password";
+ }
JOptionPane.showMessageDialog(parent,
"Permission denied: "
+ e.reason,
@@ -928,6 +988,9 @@ public class Coordinator {
if(info.registryUseSSL)
{
+ registry = RegistryPrxHelper.
+ uncheckedCast(registry.ice_secure(true));
+
session = AdminSessionPrxHelper.uncheckedCast(
registry.createAdminSessionFromSecureConnection());
}
@@ -1109,14 +1172,13 @@ public class Coordinator destroyIceGridAdmin();
return null;
-
}
}
try
{
FileParserPrx fileParser = FileParserPrxHelper.checkedCast(
- getCommunicator().stringToProxy(_fileParser));
+ getCommunicator().stringToProxy(_fileParser).ice_router(null));
return fileParser.parse(file.getAbsolutePath(),
_sessionKeeper.getRoutedAdmin());
}
@@ -1219,9 +1281,6 @@ public class Coordinator //
properties.setProperty("Ice.Override.ConnectTimeout", "5000");
- //
- // For SSL with JDK 1.4
- //
properties.setProperty("Ice.ThreadPerConnection", "1");
//
diff --git a/java/src/IceGridGUI/SessionKeeper.java b/java/src/IceGridGUI/SessionKeeper.java index 6ca8324c9f0..1e8ec498993 100755 --- a/java/src/IceGridGUI/SessionKeeper.java +++ b/java/src/IceGridGUI/SessionKeeper.java @@ -370,7 +370,6 @@ class SessionKeeper registryEndpoints =
_connectionPrefs.get("registry.endpoints", registryEndpoints);
}
-
//
// Glacier2 properties
@@ -412,12 +411,15 @@ class SessionKeeper routerEndpoints =
_connectionPrefs.get("router.endpoints", routerEndpoints);
}
+ registrySSLEnabled = _connectionPrefs.getBoolean("routerSSLEnabled", registrySSLEnabled);
registryUsername = _connectionPrefs.get("registry.username", registryUsername);
registryUseSSL = _connectionPrefs.getBoolean("registry.useSSL", registryUseSSL);
+ registrySSLEnabled = _connectionPrefs.getBoolean("registry.sslEnabled", registryUseSSL); // not a typo!
routerUsername = _connectionPrefs.get("router.username", routerUsername);
routerUseSSL = _connectionPrefs.getBoolean("router.useSSL", routerUseSSL);
+ routerSSLEnabled = _connectionPrefs.getBoolean("router.sslEnabled", routerUseSSL); // not a typo!
routed = _connectionPrefs.getBoolean("routed", routed);
@@ -463,6 +465,7 @@ class SessionKeeper {
_connectionPrefs.put("router.username", routerUsername);
_connectionPrefs.putBoolean("router.useSSL", routerUseSSL);
+ _connectionPrefs.putBoolean("router.sslEnabled", routerSSLEnabled);
_connectionPrefs.put("router.instanceName", routerInstanceName);
_connectionPrefs.put("router.endpoints", routerEndpoints);
}
@@ -470,6 +473,7 @@ class SessionKeeper {
_connectionPrefs.put("registry.username", registryUsername);
_connectionPrefs.putBoolean("registry.useSSL", registryUseSSL);
+ _connectionPrefs.putBoolean("registry.sslEnabled", registrySSLEnabled);
_connectionPrefs.put("registry.instanceName", registryInstanceName);
_connectionPrefs.put("registry.endpoints", registryEndpoints);
}
@@ -479,7 +483,7 @@ class SessionKeeper //
_connectionPrefs.put("keystore", keystore);
_connectionPrefs.put("alias", alias);
- _connectionPrefs.put("truststore", keystore);
+ _connectionPrefs.put("truststore", truststore);
}
boolean routed = false;
@@ -487,15 +491,17 @@ class SessionKeeper String registryUsername = System.getProperty("user.name");
char[] registryPassword;
boolean registryUseSSL = false;
+ boolean registrySSLEnabled = false;
String registryInstanceName = "IceGrid";
String registryEndpoints = "";
String routerUsername = System.getProperty("user.name");
char[] routerPassword;
boolean routerUseSSL = false;
+ boolean routerSSLEnabled = false;
String routerInstanceName = "Glacier2";
String routerEndpoints = "";
-
+
//
// SSL Configuration
//
@@ -553,11 +559,7 @@ class SessionKeeper {
public void actionPerformed(ActionEvent e)
{
- boolean selected = _registryUseSSL.isSelected();
- _registryUsername.setEnabled(!selected);
- _registryUsernameLabel.setEnabled(!selected);
- _registryPassword.setEnabled(!selected);
- _registryPasswordLabel.setEnabled(!selected);
+ selectRegistryUseSSL(_registryUseSSL.isSelected());
}
};
_registryUseSSL = new JCheckBox(registryUseSSL);
@@ -567,15 +569,30 @@ class SessionKeeper {
public void actionPerformed(ActionEvent e)
{
- boolean selected = _routerUseSSL.isSelected();
- _routerUsername.setEnabled(!selected);
- _routerUsernameLabel.setEnabled(!selected);
- _routerPassword.setEnabled(!selected);
- _routerPasswordLabel.setEnabled(!selected);
+ selectRouterUseSSL(_routerUseSSL.isSelected());
}
};
_routerUseSSL = new JCheckBox(routerUseSSL);
+ Action registrySSLEnabled = new AbstractAction("Enable IceSSL")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ selectRegistrySSLEnabled(_registrySSLEnabled.isSelected());
+ }
+ };
+ _registrySSLEnabled = new JCheckBox(registrySSLEnabled);
+
+ Action routerSSLEnabled = new AbstractAction("Enable IceSSL")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ selectRouterSSLEnabled(_routerSSLEnabled.isSelected());
+ }
+ };
+ _routerSSLEnabled = new JCheckBox(routerSSLEnabled);
+
+
_keystore.setEditable(false);
_advancedKeystore.setEditable(false);
Action chooseKeystore = new AbstractAction("...")
@@ -687,6 +704,8 @@ class SessionKeeper builder.nextLine();
builder.append("", _registryUseSSL);
builder.nextLine();
+ builder.append("", _registrySSLEnabled);
+ builder.nextLine();
builder.append("IceGrid Instance Name", _registryInstanceName);
builder.nextLine();
builder.append("IceGrid Registry Endpoint(s)", _registryEndpoints);
@@ -711,11 +730,13 @@ class SessionKeeper builder.nextLine();
builder.append("", _routerUseSSL);
builder.nextLine();
+ builder.append("", _routerSSLEnabled);
+ builder.nextLine();
builder.append("Glacier2 Instance Name", _routerInstanceName);
builder.nextLine();
builder.append("Glacier2 Router Endpoint(s)", _routerEndpoints);
builder.nextLine();
-
+
routedPanel = builder.getPanel();
}
@@ -723,6 +744,21 @@ class SessionKeeper _mainPane.addTab("Routed", null, routedPanel, "Log into the IceGrid registry through a Glacier2 router");
_mainPane.setBorder(Borders.DIALOG_BORDER);
+ _mainPane.addChangeListener(new javax.swing.event.ChangeListener()
+ {
+ public void stateChanged(javax.swing.event.ChangeEvent e)
+ {
+ if(_mainPane.getSelectedIndex() == 0)
+ {
+ directTabSelected();
+ }
+ else
+ {
+ routedTabSelected();
+ }
+ }
+ });
+
JPanel basicSSLPanel = null;
{
FormLayout layout = new FormLayout(
@@ -732,7 +768,7 @@ class SessionKeeper builder.setDefaultDialogBorder();
builder.setRowGroupingEnabled(true);
builder.setLineGapSize(LayoutStyle.getCurrent().getLinePad());
-
+
builder.appendSeparator("Keystore");
builder.append("File", _keystore);
builder.append(new JButton(chooseKeystore));
@@ -779,31 +815,26 @@ class SessionKeeper advancedSSLPanel = builder.getPanel();
}
- JTabbedPane sslPane = new JTabbedPane();
-
- sslPane.addTab("Basic", basicSSLPanel);
- sslPane.addTab("Advanced", advancedSSLPanel);
+
+ _sslPane.addTab("Basic", basicSSLPanel);
+ _sslPane.addTab("Advanced", advancedSSLPanel);
TitledBorder titledBorder = BorderFactory.createTitledBorder(Borders.DIALOG_BORDER,
"SSL Configuration");
- sslPane.setBorder(titledBorder);
-
+ _sslPane.setBorder(titledBorder);
JComponent buttonBar =
ButtonBarFactory.buildOKCancelBar(okButton, cancelButton);
buttonBar.setBorder(Borders.DIALOG_BORDER);
-
-
Container contentPane = getContentPane();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
contentPane.add(_mainPane);
- contentPane.add(sslPane);
+ contentPane.add(_sslPane);
contentPane.add(buttonBar);
pack();
setResizable(false);
}
-
void showDialog()
{
@@ -812,15 +843,19 @@ class SessionKeeper _mainPane.setSelectedIndex(_loginInfo.routed ? 1 : 0);
_registryUsername.setText(_loginInfo.registryUsername);
- _registryUseSSL.setSelected(_loginInfo.registryUseSSL);
+ selectRegistryUseSSL(_loginInfo.registryUseSSL);
+
_registryInstanceName.setText(_loginInfo.registryInstanceName);
_registryEndpoints.setText(_loginInfo.registryEndpoints);
-
+ _registrySSLEnabled.setSelected(_loginInfo.routerSSLEnabled);
+
_routerUsername.setText(_loginInfo.routerUsername);
- _routerUseSSL.setSelected(_loginInfo.routerUseSSL);
+ selectRouterUseSSL(_loginInfo.routerUseSSL);
+
_routerInstanceName.setText(_loginInfo.routerInstanceName);
_routerEndpoints.setText(_loginInfo.routerEndpoints);
-
+ _routerSSLEnabled.setSelected(_loginInfo.routerSSLEnabled);
+
_keystore.setText(_loginInfo.keystore);
if(_loginInfo.keystore == null)
{
@@ -832,6 +867,15 @@ class SessionKeeper }
_truststore.setText(_loginInfo.truststore);
+ if(_loginInfo.routed)
+ {
+ routedTabSelected();
+ }
+ else
+ {
+ directTabSelected();
+ }
+
setLocationRelativeTo(_coordinator.getMainFrame());
setVisible(true);
}
@@ -848,12 +892,14 @@ class SessionKeeper _loginInfo.registryUsername = _registryUsername.getText();
_loginInfo.registryPassword = _registryPassword.getPassword();
_loginInfo.registryUseSSL = _registryUseSSL.isSelected();
+ _loginInfo.registrySSLEnabled = _registrySSLEnabled.isSelected();
_loginInfo.registryInstanceName = _registryInstanceName.getText();
_loginInfo.registryEndpoints = _registryEndpoints.getText();
_loginInfo.routerUsername = _routerUsername.getText();
_loginInfo.routerPassword = _routerPassword.getPassword();
_loginInfo.routerUseSSL = _routerUseSSL.isSelected();
+ _loginInfo.routerSSLEnabled = _routerSSLEnabled.isSelected();
_loginInfo.routerInstanceName = _routerInstanceName.getText();
_loginInfo.routerEndpoints = _routerEndpoints.getText();
@@ -930,6 +976,77 @@ class SessionKeeper _alias.setModel(new DefaultComboBoxModel());
}
+ private void selectRegistryUseSSL(boolean selected)
+ {
+ _registryUseSSL.setSelected(selected);
+ _registryUsername.setEnabled(!selected);
+ _registryUsernameLabel.setEnabled(!selected);
+ _registryPassword.setEnabled(!selected);
+ _registryPasswordLabel.setEnabled(!selected);
+
+ if(selected && _registrySSLEnabled.isSelected() == false)
+ {
+ selectRegistrySSLEnabled(selected);
+ }
+ }
+
+ private void selectRouterUseSSL(boolean selected)
+ {
+ _routerUseSSL.setSelected(selected);
+ _routerUsername.setEnabled(!selected);
+ _routerUsernameLabel.setEnabled(!selected);
+ _routerPassword.setEnabled(!selected);
+ _routerPasswordLabel.setEnabled(!selected);
+
+ if(selected && _routerSSLEnabled.isSelected() == false)
+ {
+ selectRouterSSLEnabled(selected);
+ }
+ }
+
+ private void selectRegistrySSLEnabled(boolean selected)
+ {
+ _registrySSLEnabled.setSelected(selected);
+ recursiveSetEnabled(_sslPane, selected);
+ if(!selected && _registryUseSSL.isSelected())
+ {
+ selectRegistryUseSSL(selected);
+ }
+ }
+
+ private void selectRouterSSLEnabled(boolean selected)
+ {
+ _routerSSLEnabled.setSelected(selected);
+ recursiveSetEnabled(_sslPane, selected);
+ if(!selected && _routerUseSSL.isSelected())
+ {
+ selectRouterUseSSL(selected);
+ }
+ }
+
+ private void recursiveSetEnabled(java.awt.Container c, boolean enabled)
+ {
+ for(int i = 0; i < c.getComponentCount(); ++i)
+ {
+ java.awt.Component comp = c.getComponent(i);
+ if(comp instanceof java.awt.Container)
+ {
+ recursiveSetEnabled((java.awt.Container)comp, enabled);
+ }
+ comp.setEnabled(enabled);
+ }
+ c.setEnabled(enabled);
+ }
+
+ private void directTabSelected()
+ {
+ recursiveSetEnabled(_sslPane, _registrySSLEnabled.isSelected());
+ }
+
+ private void routedTabSelected()
+ {
+ recursiveSetEnabled(_sslPane, _routerSSLEnabled.isSelected());
+ }
private JTabbedPane _mainPane = new JTabbedPane();
private JTextField _registryUsername = new JTextField(30);
@@ -937,17 +1054,20 @@ class SessionKeeper private JPasswordField _registryPassword = new JPasswordField(30);
private JLabel _registryPasswordLabel;
private JCheckBox _registryUseSSL;
+ private JCheckBox _registrySSLEnabled;
private JTextField _registryInstanceName = new JTextField(30);
private JTextField _registryEndpoints = new JTextField(30);
-
+
private JTextField _routerUsername = new JTextField(30);
private JLabel _routerUsernameLabel;
private JPasswordField _routerPassword = new JPasswordField(30);
private JLabel _routerPasswordLabel;
private JCheckBox _routerUseSSL;
+ private JCheckBox _routerSSLEnabled;
private JTextField _routerInstanceName = new JTextField(30);
private JTextField _routerEndpoints = new JTextField(30);
+ private JTabbedPane _sslPane = new JTabbedPane();
private JTextField _keystore = new JTextField(30);
private JPasswordField _keyPassword = new JPasswordField(30);
@@ -1113,9 +1233,9 @@ class SessionKeeper if(_session != null) // TODO: XXX: Review: The Session constructor might throw
{
_session.close(destroySession);
+ _coordinator.sessionLost();
+ _session = null;
}
- _coordinator.sessionLost();
- _session = null;
}
AdminSessionPrx getSession()
|