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

Jean-Noël Rouvignac
03.53.2016 c9958277baf5f911bda401802259a4b50d9cd599
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
@@ -94,7 +94,7 @@
    for (TreePath path : paths)
    {
      BasicNode node = (BasicNode)path.getLastPathComponent();
      entries.add(DN.valueOf(node.getDN()));
      entries.add(node.getDN());
    }
    for (BackendDescriptor backend : info.getServerDescriptor().getBackends())
    {
@@ -186,37 +186,20 @@
      for (TreePath path : paths)
      {
        BasicNode node = (BasicNode)path.getLastPathComponent();
        try
        DN dn = node.getDN();
        if (!isAlreadyDeleted(alreadyDeleted, dn))
        {
          DN dn = DN.valueOf(node.getDN());
          boolean isDnDeleted = false;
          for (DN deletedDn : alreadyDeleted)
          ConnectionWrapper conn = controller.findConnectionForDisplayedEntry(node);
          useAdminCtx = controller.isConfigurationNode(node);
          if (node.hasSubOrdinates())
          {
            if (dn.isSubordinateOrEqualTo(deletedDn))
            {
              isDnDeleted = true;
              break;
            }
            deleteSubtreeWithControl(conn, dn, path, toNotify);
          }
          if (!isDnDeleted)
          else
          {
            ConnectionWrapper conn = controller.findConnectionForDisplayedEntry(node);
            useAdminCtx = controller.isConfigurationNode(node);
            if (node.hasSubOrdinates())
            {
              deleteSubtreeWithControl(conn, dn, path, toNotify);
            }
            else
            {
              deleteSubtreeRecursively(conn, dn, path, toNotify);
            }
            alreadyDeleted.add(dn);
            deleteSubtreeRecursively(conn, dn, path, toNotify);
          }
        }
        catch (DirectoryException de)
        {
          throw new RuntimeException("Unexpected error parsing dn: "+
              node.getDN(), de);
          alreadyDeleted.add(dn);
        }
      }
      if (!toNotify.isEmpty())
@@ -247,6 +230,18 @@
    }
  }
  private boolean isAlreadyDeleted(ArrayList<DN> dns, DN dnToFind)
  {
    for (DN dn : dns)
    {
      if (dnToFind.isSubordinateOrEqualTo(dn))
      {
        return true;
      }
    }
    return false;
  }
  /**
   * Notifies that some entries have been deleted.  This will basically update
   * the browser controller so that the tree reflects the changes that have