mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

jvergara
26.52.2010 defab91e498d4516f715e0523da20004459211c9
Fix for issue 4515 (control-panel entry browser does not deal well with sub-suffixes)
2 files modified
54 ■■■■ changed files
opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java 40 ●●●●● patch | view | raw | blame | history
opends/src/guitools/org/opends/guitools/controlpanel/util/NumSubordinateHacker.java 14 ●●●● patch | view | raw | blame | history
opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
@@ -1307,6 +1307,7 @@
          InitialLdapContext ctx = getInfo().getDirContext();
          InitialLdapContext ctx1 = controller.getConfigurationConnection();
          boolean setConnection = ctx != ctx1;
          updateNumSubordinateHacker(desc);
          if (setConnection)
          {
            if (getInfo().getUserDataDirContext() == null)
@@ -1780,6 +1781,45 @@
  }
  /**
   * Updates the NumsubordinateHacker of the browser controller with the
   * provided server descriptor.
   * @param server the server descriptor.
   */
  private void updateNumSubordinateHacker(ServerDescriptor server)
  {
    String serverHost = server.getHostname();
    int serverPort = server.getAdminConnector().getPort();
    ArrayList<DN> allSuffixes = new ArrayList<DN>();
    for (BackendDescriptor backend : server.getBackends())
    {
      for (BaseDNDescriptor baseDN : backend.getBaseDns())
      {
        allSuffixes.add(baseDN.getDn());
      }
    }
    ArrayList<DN> rootSuffixes = new ArrayList<DN>();
    for (DN dn : allSuffixes)
    {
      boolean isRootSuffix = true;
      for (DN dn1 : allSuffixes)
      {
        if (dn1.isAncestorOf(dn) && !dn1.equals(dn))
        {
          isRootSuffix = false;
          break;
        }
      }
      if (isRootSuffix)
      {
        rootSuffixes.add(dn);
      }
    }
    controller.getNumSubordinateHacker().update(allSuffixes, rootSuffixes,
        serverHost, serverPort);
  }
  /**
   * This is a class that simply checks the number of entries that the browser
   * contains and updates a counter with the new number of entries.
   * It is basically a thread that sleeps and checks whether some
opends/src/guitools/org/opends/guitools/controlpanel/util/NumSubordinateHacker.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008-2009 Sun Microsystems, Inc.
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 */
package org.opends.guitools.controlpanel.util;
@@ -56,7 +56,7 @@
  }
  /**
    * Tells wether the list of unreliable contains children of
    * Tells whether the list of unreliable contains children of
    * the entry with LDAPUrl parentUrl.
    * @param parentUrl the LDAPURL of the parent.
    * @return <CODE>true</CODE> if the list of unreliable entries contains a
@@ -66,9 +66,9 @@
    boolean containsChildren = false;
    if (!isUnreliableEntryListEmpty) {
      boolean isInServer = serverHost.equals(parentUrl.getHost()) &&
      boolean isInServer = serverHost.equalsIgnoreCase(
          String.valueOf(parentUrl.getHost())) &&
      (serverPort == parentUrl.getPort());
      if (isInServer) {
        for (DN dn : unreliableEntryList)
        {
@@ -92,7 +92,7 @@
  }
  /**
    * Tells wether the list of unreliable contains the entry with LDAPURL
    * Tells whether the list of unreliable contains the entry with LDAPURL
    * url.
    * It assumes that we previously called containsChildrenOf (there's no check
    * of the host/port).
@@ -103,9 +103,9 @@
  public boolean contains(LDAPURL url) {
    boolean contains = false;
    if (!isUnreliableEntryListEmpty) {
      boolean isInServer = serverHost.equals(url.getHost()) &&
      boolean isInServer =
        serverHost.equalsIgnoreCase(String.valueOf(url.getHost())) &&
      (serverPort == url.getPort());
      if (isInServer) {
        for (DN dn : unreliableEntryList)
        {