From 66faa7347addc7e471fae7110da349485008adf2 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 24 Mar 2009 12:58:17 +0000
Subject: [PATCH] Fix for issue 3826 (Exception in control panel LDAP browser)

---
 opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
index f8e39c4..baf3b9d 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
@@ -664,6 +664,7 @@
     setPrimaryValid(lFilter);
     String s = getBaseDN();
     boolean displayAll = false;
+    DN theDN = null;
     if (s != null)
     {
       displayAll = s.equals(ALL_BASE_DNS);
@@ -671,7 +672,7 @@
       {
         try
         {
-          DN.decode(s);
+          theDN = DN.decode(s);
         }
         catch (Throwable t)
         {
@@ -712,6 +713,10 @@
         {
           for (BaseDNDescriptor baseDN : backend.getBaseDns())
           {
+            if ((theDN != null) && baseDN.getDn().equals(theDN))
+            {
+              isBaseDN = true;
+            }
             String dn = Utilities.unescapeUtf8(baseDN.getDn().toString());
             if (displayAll)
             {
@@ -720,7 +725,6 @@
             else if (s.equals(dn))
             {
               controller.addSuffix(dn, null);
-              isBaseDN = true;
             }
           }
         }
@@ -1331,16 +1335,22 @@
                 }
                 if (baseDN.getEntries() > 0)
                 {
-                  if (!controller.hasSuffix(dn))
+                  try
                   {
-                    if (displayAll)
+                    if (!controller.hasSuffix(dn))
                     {
-                      controller.addSuffix(dn, null);
+                      if (displayAll || isBaseDN)
+                      {
+                        controller.addSuffix(dn, null);
+                      }
                     }
-                    else if (s.equals(dn))
-                    {
-                      controller.addSuffix(dn, null);
-                    }
+                  }
+                  catch (IllegalArgumentException iae)
+                  {
+                    // The suffix node exists but is not a suffix node.
+                    // Simply log a message.
+                    LOG.log(Level.WARNING, "Suffix: "+dn+
+                        " added as a non suffix node. Exception: "+iae, iae);
                   }
                 }
               }

--
Gitblit v1.10.0