From e651d8a4ba69ea4764d780ccf66068bd6f9c9c46 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 04 Nov 2008 17:47:26 +0000
Subject: [PATCH] Fix for issue 3554 (Control Panel : Error displayed after deleting several entries).

---
 opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java b/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
index b395fe4..850b93b 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
@@ -89,6 +89,8 @@
   private String startTLSURL;
   private String ldapsURL;
   private String adminConnectorURL;
+  private String lastWorkingBindDN;
+  private String lastWorkingBindPwd;
 
   private static boolean mustDeregisterConfig;
 
@@ -288,6 +290,11 @@
   public void setDirContext(InitialLdapContext ctx)
   {
     this.ctx = ctx;
+    if (ctx != null)
+    {
+      lastWorkingBindDN = ConnectionUtils.getBindDN(ctx);
+      lastWorkingBindPwd = ConnectionUtils.getBindPassword(ctx);
+    }
   }
 
   /**
@@ -498,6 +505,29 @@
             desc.getInstallPath().getAbsolutePath())))
     {
       desc.setStatus(ServerDescriptor.ServerStatus.STARTED);
+
+      if ((ctx == null) && (lastWorkingBindDN != null))
+      {
+        // Try with previous credentials.
+        try
+        {
+          ctx = Utilities.getAdminDirContext(this, lastWorkingBindDN,
+              lastWorkingBindPwd);
+        }
+        catch (ConfigReadException cre)
+        {
+//        Ignore: we will ask the user for credentials.
+        }
+        catch (NamingException ne)
+        {
+          // Ignore: we will ask the user for credentials.
+        }
+        if (ctx != null)
+        {
+          this.ctx = ctx;
+        }
+      }
+
       if (ctx == null)
       {
         reader = createNewConfigFromFileReader();
@@ -521,6 +551,13 @@
             }
             catch (NamingException ne)
             {
+              try
+              {
+                Thread.sleep(400);
+              }
+              catch (Throwable t)
+              {
+              }
             }
           }
           if (!connectionWorks)

--
Gitblit v1.10.0