From 7202af24c668dba3f56c85a178bbe57c69d15691 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 09 Sep 2009 17:57:29 +0000
Subject: [PATCH] Fix for issue 4224 (The error messages connecting to server are not consistent)

---
 opends/src/guitools/org/opends/guitools/controlpanel/ui/LoginPanel.java         |    5 
 opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java         |    2 
 opends/src/messages/messages/quicksetup.properties                              |   17 +++
 opends/src/quicksetup/org/opends/quicksetup/util/Utils.java                     |   86 +++++++++++++++++++++
 opends/src/messages/messages/admin_tool.properties                              |    6 -
 opends/src/server/org/opends/server/util/cli/ConsoleApplication.java            |   16 ---
 opends/src/guitools/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java |   12 +-
 opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java            |   60 +++-----------
 8 files changed, 130 insertions(+), 74 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java
index b75f70c..e15deba 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java
@@ -56,6 +56,7 @@
 import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 
+import org.opends.admin.ads.ServerDescriptor;
 import org.opends.admin.ads.util.ApplicationTrustManager;
 import org.opends.admin.ads.util.ConnectionUtils;
 import org.opends.guitools.controlpanel.datamodel.ConfigReadException;
@@ -556,17 +557,18 @@
                 }
                 else
                 {
-                  errors.add(ERR_CANNOT_CONNECT_TO_LOGIN_WITHOUT_CAUSE.get());
+                  errors.add(Utils.getMessageForException(
+                      (NamingException)throwable));
                 }
                 localServerErrorConnecting = true;
               }
               else
               {
-                String msg = throwable.toString();
-                errors.add(ERR_CANNOT_CONNECT_TO_REMOTE.get(
+                String hostPort = ServerDescriptor.getServerRepresentation(
                     hostName.getText().trim(),
-                    port.getText().trim(),
-                    msg));
+                    new Integer(port.getText().trim()));
+                NamingException ne = (NamingException)throwable;
+                errors.add(Utils.getMessageForException(ne, hostPort));
                 setPrimaryInvalid(portLabel);
               }
               setPrimaryInvalid(dnLabel);
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LoginPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LoginPanel.java
index 36d7873..468f43c 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/LoginPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/LoginPanel.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.ui;
@@ -354,7 +354,8 @@
               }
               else
               {
-                errors.add(ERR_CANNOT_CONNECT_TO_LOGIN_WITHOUT_CAUSE.get());
+                errors.add(Utils.getMessageForException(
+                    (NamingException)throwable));
               }
 
               setPrimaryInvalid(dnLabel);
diff --git a/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java b/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java
index cd7be62..a25c30e 100644
--- a/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java
+++ b/opends/src/guitools/org/opends/guitools/uninstaller/ui/LoginDialog.java
@@ -533,7 +533,7 @@
             {
               // Generic message
               displayError(
-                  ERR_CANNOT_CONNECT_TO_LOGIN_WITHOUT_CAUSE.get(),
+                  Utils.getMessageForException((NamingException)throwable),
                   INFO_ERROR_TITLE.get());
             }
           }
diff --git a/opends/src/messages/messages/admin_tool.properties b/opends/src/messages/messages/admin_tool.properties
index cc16421..54082b9 100644
--- a/opends/src/messages/messages/admin_tool.properties
+++ b/opends/src/messages/messages/admin_tool.properties
@@ -59,12 +59,6 @@
 INFO_CANCEL_BUTTON_UNINSTALL_TOOLTIP=Cancel Uninstall
 MILD_ERR_CANNOT_CONNECT_TO_LOGIN_WITH_CAUSE=Could not connect to the Directory \
  Server with the provided credentials.  The possible causes for this are:%n%s
-MILD_ERR_CANNOT_CONNECT_TO_LOGIN_WITHOUT_CAUSE=Could not connect to the Directory \
- Server with the provided credentials.%nCheck that the Administrative User DN \
- and password are valid.
-MILD_ERR_CANNOT_CONNECT_WITH_ADS_CREDENTIALS_WITHOUT_CAUSE=Could not connect to \
- the Directory Server with the provided credentials.%nCheck that the \
- Administrative User ID and password are valid.
 INFO_CLI_UNINSTALL_CONFIRM_BACKUPS=Remove Backup Files Contained in bak \
  Directory?
 INFO_CLI_UNINSTALL_CONFIRM_CONFIGURATION_SCHEMA=Remove Configuration and \
diff --git a/opends/src/messages/messages/quicksetup.properties b/opends/src/messages/messages/quicksetup.properties
index d069b79..46d1da2 100644
--- a/opends/src/messages/messages/quicksetup.properties
+++ b/opends/src/messages/messages/quicksetup.properties
@@ -80,13 +80,26 @@
  port could be already in use by another application or maybe you do not have \
  the rights to access it.
 INFO_CANNOT_CONNECT_TO_REMOTE_AUTHENTICATION=The provided credentials are not \
- valid.
+ valid in server %s.  Details: %s
 INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC=Could not connect to %s.  Check that the \
  server is running and that the provided credentials are valid.%nError \
  details:%n%s
+SEVERE_ERR_CANNOT_CONNECT_TO_REMOTE_COMMUNICATION=Could not connect to the \
+ remote server %s.  Check that the server is running and that is accessible \
+ from the local machine.  Details: %s
 INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS=You do not have enough access \
  rights to read the configuration in %s. %nProvide credentials with enough \
- rights.
+ rights.  Details: %s
+SEVERE_ERR_CANNOT_CONNECT_TO_LOCAL_AUTHENTICATION=The provided credentials are \
+ not valid.  Details: %s
+SEVERE_ERR_CANNOT_CONNECT_TO_LOCAL_GENERIC=Could not connect to the server.  \
+ Check that the server is running and that the provided credentials are \
+ valid.%nError details:%n%s
+SEVERE_ERR_CANNOT_CONNECT_TO_LOCAL_COMMUNICATION=Could not connect to the \
+ server.  Check that the server is running.  Details: %s
+SEVERE_ERR_CANNOT_CONNECT_TO_LOCAL_PERMISSIONS=You do not have enough access \
+ rights to read the configuration in the server. %nProvide credentials \
+ with enough rights.  Details: %s
 INFO_CANNOT_CONNECT_TO_SHUTDOWN_WITH_CAUSE=Could not connect to the Directory \
  Server with the provided credentials.  The possible causes for this are:%n%s
 INFO_CANNOT_CONNECT_TO_SHUTDOWN_WITHOUT_CAUSE=Could not connect to the \
diff --git a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
index 9e4e242..b10f049 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -34,12 +34,11 @@
 import java.util.logging.Logger;
 import java.awt.event.WindowEvent;
 
-import javax.naming.AuthenticationException;
 import javax.naming.NameAlreadyBoundException;
 import javax.naming.NameNotFoundException;
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
-import javax.naming.NoPermissionException;
+import javax.naming.NamingSecurityException;
 import javax.naming.directory.Attribute;
 import javax.naming.directory.BasicAttribute;
 import javax.naming.directory.BasicAttributes;
@@ -2636,40 +2635,21 @@
         }
       }
     }
-    catch (NoPermissionException ne)
-    {
-      if (isRemoteServer)
-      {
-        throw new ApplicationException(
-                ReturnCode.CONFIGURATION_ERROR,
-                INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS.get(
-                        getHostDisplay(auth)), ne);
-      }
-      else
-      {
-        // TODO: INFO for local PERMISSIONS exception?
-        Message failedMsg = getThrowableMsg(
-                INFO_ERROR_CONNECTING_TO_LOCAL.get(), ne);
-        throw new ApplicationException(
-                ReturnCode.CONFIGURATION_ERROR,
-                failedMsg, ne);
-      }
-    }
     catch (NamingException ne)
     {
+      Message msg;
       if (isRemoteServer)
       {
-        throw new ApplicationException(
-                ReturnCode.CONFIGURATION_ERROR,
-                INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC.get(
-                        getHostDisplay(auth), ne.toString(true)), ne);
+        msg = Utils.getMessageForException(ne, getHostDisplay(auth));
       }
       else
       {
-        throw new ApplicationException(
-                ReturnCode.CONFIGURATION_ERROR,
-                getThrowableMsg(INFO_ERROR_CONNECTING_TO_LOCAL.get(), ne), ne);
+        msg = Utils.getMessageForException(ne);
       }
+      throw new ApplicationException(
+          ReturnCode.CONFIGURATION_ERROR,
+          msg,
+          ne);
     }
     catch (ADSContextException ace)
     {
@@ -3641,27 +3621,17 @@
                   host+":"+port, t.toString()));
         }
       }
-      else if (t instanceof AuthenticationException)
-      {
-        errorMsgs.add(INFO_CANNOT_CONNECT_TO_REMOTE_AUTHENTICATION.get());
-        qs.displayFieldInvalid(FieldName.REMOTE_SERVER_DN, true);
-        qs.displayFieldInvalid(FieldName.REMOTE_SERVER_PWD, true);
-      }
-      else if (t instanceof NoPermissionException)
-      {
-        errorMsgs.add(INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS.get(
-                  host+":"+port));
-        qs.displayFieldInvalid(FieldName.REMOTE_SERVER_DN, true);
-        qs.displayFieldInvalid(FieldName.REMOTE_SERVER_PWD, true);
-      }
       else if (t instanceof NamingException)
       {
-        errorMsgs.add(INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC.get(
-                host+":"+port, ((NamingException)t).toString(true)));
-        qs.displayFieldInvalid(FieldName.REMOTE_SERVER_HOST, true);
-        qs.displayFieldInvalid(FieldName.REMOTE_SERVER_PORT, true);
+        errorMsgs.add(Utils.getMessageForException((NamingException)t,
+            host+":"+port));
         qs.displayFieldInvalid(FieldName.REMOTE_SERVER_DN, true);
         qs.displayFieldInvalid(FieldName.REMOTE_SERVER_PWD, true);
+        if (!(t instanceof NamingSecurityException))
+        {
+          qs.displayFieldInvalid(FieldName.REMOTE_SERVER_HOST, true);
+          qs.displayFieldInvalid(FieldName.REMOTE_SERVER_PORT, true);
+        }
       }
       else if (t instanceof ADSContextException)
       {
diff --git a/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java b/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
index d7995e9..58c2e30 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
@@ -48,8 +48,12 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.naming.AuthenticationException;
+import javax.naming.CommunicationException;
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
+import javax.naming.NamingSecurityException;
+import javax.naming.NoPermissionException;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
 import javax.naming.ldap.InitialLdapContext;
@@ -1122,6 +1126,88 @@
   }
 
   /**
+   * Returns a message object for the given NamingException.
+   * @param ne the NamingException.
+   * @param hostPort the hostPort representation of the server we were
+   * contacting when the NamingException occurred.
+   * @return a message object for the given NamingException.
+   */
+  public static Message getMessageForException(NamingException ne,
+      String hostPort)
+  {
+    Message msg;
+    if (Utils.isCertificateException(ne))
+    {
+      msg = INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE_SERVER.get(
+              hostPort, ne.toString(true));
+    }
+    else if (ne instanceof AuthenticationException)
+    {
+      msg = INFO_CANNOT_CONNECT_TO_REMOTE_AUTHENTICATION.get(hostPort,
+          ne.toString(true));
+    }
+    else if (ne instanceof NoPermissionException)
+    {
+      msg = INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS.get(hostPort,
+          ne.toString(true));
+    }
+    else if (ne instanceof NamingSecurityException)
+    {
+      msg = INFO_CANNOT_CONNECT_TO_REMOTE_PERMISSIONS.get(hostPort,
+          ne.toString(true));
+    }
+    else if (ne instanceof CommunicationException)
+    {
+      msg = ERR_CANNOT_CONNECT_TO_REMOTE_COMMUNICATION.get(
+          hostPort, ne.toString(true));
+    }
+    else
+    {
+       msg = INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC.get(
+          hostPort, ne.toString(true));
+    }
+    return msg;
+  }
+
+
+
+  /**
+   * Returns a message object for the given NamingException.  The code assume
+   * that we are trying to connect to the local server.
+   * @param ne the NamingException.
+   * @return a message object for the given NamingException.
+   */
+  public static Message getMessageForException(NamingException ne)
+  {
+    Message msg;
+    if (Utils.isCertificateException(ne))
+    {
+      msg = INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE.get(ne.toString(true));
+    }
+    else if (ne instanceof AuthenticationException)
+    {
+      msg = ERR_CANNOT_CONNECT_TO_LOCAL_AUTHENTICATION.get(ne.toString(true));
+    }
+    else if (ne instanceof NoPermissionException)
+    {
+      msg = ERR_CANNOT_CONNECT_TO_LOCAL_PERMISSIONS.get(ne.toString(true));
+    }
+    else if (ne instanceof NamingSecurityException)
+    {
+      msg = ERR_CANNOT_CONNECT_TO_LOCAL_PERMISSIONS.get(ne.toString(true));
+    }
+    else if (ne instanceof CommunicationException)
+    {
+      msg = ERR_CANNOT_CONNECT_TO_LOCAL_COMMUNICATION.get(ne.toString(true));
+    }
+    else
+    {
+       msg = ERR_CANNOT_CONNECT_TO_LOCAL_GENERIC.get(ne.toString(true));
+    }
+    return msg;
+  }
+
+  /**
    * Returns the default LDAP timeout in milliseconds when we try to connect to
    * a server.
    * @return the default LDAP timeout in milliseconds when we try to connect to
diff --git a/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java b/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
index 554d1e4..09d51e8 100644
--- a/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
+++ b/opends/src/server/org/opends/server/util/cli/ConsoleApplication.java
@@ -654,20 +654,10 @@
    * contacting when the NamingException occurred.
    * @return a message object for the given NamingException.
    */
-  protected Message getMessageForException(NamingException ne, String hostPort)
+  protected Message getMessageForException(NamingException ne,
+      String hostPort)
   {
-    Message msg;
-    if (Utils.isCertificateException(ne))
-    {
-      msg = INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE_SERVER.get(
-              hostPort, ne.toString(true));
-    }
-    else
-    {
-       msg = INFO_CANNOT_CONNECT_TO_REMOTE_GENERIC.get(
-          hostPort, ne.toString(true));
-    }
-    return msg;
+    return Utils.getMessageForException(ne, hostPort);
   }
 
   /**

--
Gitblit v1.10.0