From 5d7be546948d1d019e3d29932b222d69412643dd Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 01 Jul 2014 15:23:25 +0000
Subject: [PATCH] Code cleanups.

---
 opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java |  767 ++++++++++++++++++++--------------------------------------
 1 files changed, 268 insertions(+), 499 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java b/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java
index 5fd3a99..01884ad 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java
@@ -89,20 +89,20 @@
   /**
    * The mask used to display the number of ACIs or not.
    */
-  public final static int DISPLAY_ACI_COUNT        = 0x01;
+  private static final int DISPLAY_ACI_COUNT = 0x01;
 
   /**
    * The list of attributes that are used to sort the entries (if the sorting
    * option is used).
    */
-  public static final String[] SORT_ATTRIBUTES = {"cn", "givenname", "o", "ou",
-    "sn", "uid"};
+  private static final String[] SORT_ATTRIBUTES =
+    { "cn", "givenname", "o", "ou", "sn", "uid" };
 
   /**
    * This is a key value.  It is used to specify that the attribute that should
    * be used to display the entry is the RDN attribute.
    */
-  public static final String RDN_ATTRIBUTE = "rdn attribute";
+  private static final String RDN_ATTRIBUTE = "rdn attribute";
 
   /**
    * The filter used to retrieve all the entries.
@@ -110,12 +110,12 @@
   public static final String ALL_OBJECTS_FILTER =
     "(|(objectClass=*)(objectClass=ldapsubentry))";
 
-  private JTree tree;
-  private DefaultTreeModel treeModel;
-  private RootNode rootNode;
+  private final JTree tree;
+  private final DefaultTreeModel treeModel;
+  private final RootNode rootNode;
   private int displayFlags;
   private String displayAttribute;
-  private boolean showAttributeName;
+  private final boolean showAttributeName;
   private InitialLdapContext ctxConfiguration;
   private InitialLdapContext ctxUserData;
   private boolean followReferrals;
@@ -127,12 +127,12 @@
   private NumSubordinateHacker numSubordinateHacker;
   private int queueTotalSize;
   private int maxChildren = 0;
-  private Collection<BrowserEventListener> listeners =
+  private final Collection<BrowserEventListener> listeners =
     new ArrayList<BrowserEventListener>();
-  private LDAPConnectionPool connectionPool;
-  private IconPool iconPool;
+  private final LDAPConnectionPool connectionPool;
+  private final IconPool iconPool;
 
-  private NodeSearcherQueue refreshQueue;
+  private final NodeSearcherQueue refreshQueue;
 
   private String filter;
 
@@ -159,6 +159,7 @@
     tree.addTreeExpansionListener(this);
     tree.setCellRenderer(new BrowserCellRenderer());
     displayFlags = DISPLAY_ACI_COUNT;
+    showAttributeName = false;
     displayAttribute = RDN_ATTRIBUTE;
     followReferrals = false;
     sorted = false;
@@ -260,17 +261,16 @@
   }
 
   /**
-   * Tells wether the given suffix is in the tree or not.
+   * Tells whether the given suffix is in the tree or not.
    * @param suffixDn the DN of the suffix to be analyzed.
    * @return <CODE>true</CODE> if the provided String is the DN of a suffix
    * and <CODE>false</CODE> otherwise.
    * @throws IllegalArgumentException if a node with the given dn exists but
    * is not a suffix node.
    */
-  public boolean hasSuffix(String suffixDn)
-  throws IllegalArgumentException
+  public boolean hasSuffix(String suffixDn) throws IllegalArgumentException
   {
-    return (findSuffixNode(suffixDn, rootNode) != null);
+    return findSuffixNode(suffixDn, rootNode) != null;
   }
 
   /**
@@ -328,28 +328,6 @@
     return new TreePath(treeModel.getPathToRoot(newNode));
   }
 
-
-
-  /**
-   * Remove the suffix from this controller.
-   * The controller updates the JTree and returns the TreePath
-   * of the parent node.
-   * @param suffixDn the DN of the suffix to be removed.
-   * @return the TreePath of the parent node of the removed node.
-   */
-  public TreePath removeSuffix(String suffixDn) {
-    TreePath result = null;
-    BasicNode node = findSuffixNode(suffixDn, rootNode);
-    TreeNode parentNode = node.getParent();
-    /* If the parent is null... the node is no longer in the tree */
-    if (parentNode != null) {
-      removeOneNode(node);
-      result = new TreePath(treeModel.getPathToRoot(parentNode));
-    }
-    return result;
-  }
-
-
   /**
    * Remove all the suffixes.
    * The controller removes all the nodes from the JTree except the root.
@@ -403,18 +381,6 @@
   }
 
   /**
-   * Says wether to show the attribute name or not.
-   * This routine collapses the JTree and invokes startRefresh().
-   * @param showAttributeName whether to show the attribute name or not.
-   */
-  public void showAttributeName(boolean showAttributeName) {
-    this.showAttributeName = showAttributeName;
-    stopRefresh();
-    removeAllChildNodes(rootNode, true /* Keep suffixes */);
-    startRefresh(null);
-  }
-
-  /**
    * Says wether we are showing the attribute name or not.
    * @return <CODE>true</CODE> if we are showing the attribute name and
    * <CODE>false</CODE> otherwise.
@@ -586,16 +552,6 @@
     listeners.add(l);
   }
 
-
-  /**
-   * Remove a BrowserEventListener from this controller.
-   * @param l the listener to be removed.
-   */
-  public void removeBrowserEventListener(BrowserEventListener l) {
-    listeners.remove(l);
-  }
-
-
   /**
    * Notify this controller that an entry has been added.
    * The controller adds a new node in the JTree and starts refreshing this new
@@ -635,19 +591,18 @@
    * @return the tree path associated with the parent of the deleted node.
    */
   public TreePath notifyEntryDeleted(BrowserNodeInfo nodeInfo) {
-    TreePath result = null;
     BasicNode node = nodeInfo.getNode();
     if (node == rootNode) {
       throw new IllegalArgumentException("Root node cannot be removed");
     }
-    TreeNode parentNode = node.getParent();
 
     /* If the parent is null... the node is no longer in the tree */
+    final TreeNode parentNode = node.getParent();
     if (parentNode != null) {
       removeOneNode(node);
-      result = new TreePath(treeModel.getPathToRoot(parentNode));
+      return new TreePath(treeModel.getPathToRoot(parentNode));
     }
-    return result;
+    return null;
   }
 
 
@@ -663,50 +618,10 @@
   }
 
   /**
-   * Notify this controller that a child entry has changed.
-   * The controller has to refresh the corresponding node and (if necessary)
-   * itself.
-   * @param nodeInfo the parent of the node that changed.
-   * @param dn the DN of the entry that changed.
-   */
-  public void notifyChildEntryChanged(BrowserNodeInfo nodeInfo, String dn) {
-    BasicNode node = nodeInfo.getNode();
-    startRefreshNode(node, null, true);
-  }
-
-  /**
-   * Notify this controller that a child entry has been added.
-   * The controller has to refresh the corresponding node and (if necessary)
-   * itself.
-   * @param nodeInfo the parent of the node that was added.
-   * @param dn the DN of the entry that was added.
-   */
-  public void notifyChildEntryAdded(BrowserNodeInfo nodeInfo, String dn) {
-    BasicNode node = nodeInfo.getNode();
-    startRefreshNode(node, null, true);
-  }
-
-  /**
-   * Notify this controller that a child entry has been deleted.
-   * The controller has to refresh the corresponding node and (if necessary)
-   * itself.
-   * @param nodeInfo the parent of the node that was deleted.
-   * @param dn the DN of the entry that was deleted.
-   */
-  public void notifyChildEntryDeleted(BrowserNodeInfo nodeInfo, String dn) {
-    BasicNode node = nodeInfo.getNode();
-    if (node.getParent() != null) {
-      startRefreshNode((BasicNode) node.getParent(), null, true);
-    } else {
-      startRefreshNode(node, null, true);
-    }
-  }
-
-
-  /**
    * Notify this controller that authentication data have changed in the
    * connection pool.
    */
+  @Override
   public void notifyAuthDataChanged() {
     notifyAuthDataChanged(null);
   }
@@ -718,7 +633,7 @@
    * url.
    * @param url the URL of the connection that changed.
    */
-  public void notifyAuthDataChanged(LDAPURL url) {
+  private void notifyAuthDataChanged(LDAPURL url) {
     // TODO: temporary implementation
     //    we should refresh only nodes :
     //    - whose URL matches 'url'
@@ -730,7 +645,7 @@
 
   /**
    * Start a refresh from the specified node.
-   * If some refresh are on-going on descendent nodes, they are stopped.
+   * If some refresh are on-going on descendant nodes, they are stopped.
    * If nodeInfo is null, refresh is started from the root.
    * @param nodeInfo the node to be refreshed.
    */
@@ -746,35 +661,15 @@
     startRefreshNode(node, null, true);
   }
 
-
-  /**
-   * Equivalent to startRefresh(null).
-   */
-  public void startRefresh() {
-    startRefresh(null);
-  }
-
-
   /**
    * Stop the current refreshing.
    * Nodes being expanded are collapsed.
    */
-  public void stopRefresh() {
+  private void stopRefresh() {
     stopRefreshNode(rootNode);
     // TODO: refresh must be stopped in a clean state.
   }
 
-
-  /**
-   * Shutdown the controller : all the backgroup threads are stopped.
-   * After this call, the controller is no longer usable.
-   */
-  public void shutDown() {
-    tree.removeTreeExpansionListener(this);
-    refreshQueue.shutdown();
-    connectionPool.flush();
-  }
-
   /**
    * Start refreshing the whole tree from the specified node.
    * We queue a refresh which:
@@ -784,7 +679,7 @@
    * @param localEntry the local entry corresponding to the node.
    * @param recursive whether the refresh must be executed recursively or not.
    */
-  void startRefreshNode(BasicNode node, SearchResult localEntry,
+  private void startRefreshNode(BasicNode node, SearchResult localEntry,
       boolean recursive) {
     if (node == rootNode) {
       // For the root node, readBaseEntry is meaningless.
@@ -803,7 +698,7 @@
       // The task does not *see* suffixes.
       // So we need to propagate the refresh on
       // the sub-suffixes if any.
-      if (recursive && (node instanceof SuffixNode)) {
+      if (recursive && node instanceof SuffixNode) {
         Enumeration<?> e = node.children();
         while (e.hasMoreElements()) {
           BasicNode child = (BasicNode)e.nextElement();
@@ -824,7 +719,7 @@
    * root node.
    * @param node the node where the refresh must stop.
    */
-  void stopRefreshNode(BasicNode node) {
+  private void stopRefreshNode(BasicNode node) {
     if (node == rootNode) {
       refreshQueue.cancelAll();
     }
@@ -844,11 +739,11 @@
    * Call startRefreshNode() on each referral node accessible from parentNode.
    * @param parentNode the parent node.
    */
-  void startRefreshReferralNodes(BasicNode parentNode) {
+  private void startRefreshReferralNodes(BasicNode parentNode) {
     Enumeration<?> e = parentNode.children();
     while (e.hasMoreElements()) {
       BasicNode child = (BasicNode)e.nextElement();
-      if ((child.getReferral() != null) || (child.getRemoteUrl() != null)) {
+      if (child.getReferral() != null || child.getRemoteUrl() != null) {
         startRefreshNode(child, null, true);
       }
       else {
@@ -866,10 +761,10 @@
    * @param parentNode the parent node.
    * @param keepSuffixes whether the suffixes should be kept or not.
    */
-  void removeAllChildNodes(BasicNode parentNode, boolean keepSuffixes) {
+  private void removeAllChildNodes(BasicNode parentNode, boolean keepSuffixes) {
     for (int i = parentNode.getChildCount() - 1; i >= 0; i--) {
       BasicNode child = (BasicNode)parentNode.getChildAt(i);
-      if ((child instanceof SuffixNode) && keepSuffixes) {
+      if (child instanceof SuffixNode && keepSuffixes) {
         removeAllChildNodes(child, true);
         child.setRefreshNeededOnExpansion(true);
       }
@@ -885,6 +780,7 @@
    * if it needs it (to search the children for instance).
    * @param event the tree expansion event.
    */
+  @Override
   public void treeExpanded(TreeExpansionEvent event) {
     if (!automaticallyExpandedNode)
     {
@@ -904,6 +800,7 @@
    * tasks on it are canceled.
    * @param event the tree collapse event.
    */
+  @Override
   public void treeCollapsed(TreeExpansionEvent event) {
     Object node = event.getPath().getLastPathComponent();
     if (!(node instanceof RootNode)) {
@@ -1054,32 +951,19 @@
    * @throws NamingException if there is an error retrieving the connection.
    * @return the LDAP connection to reading the base entry of a node.
    */
-  InitialLdapContext findConnectionForLocalEntry(BasicNode node,
-      boolean isConfigurationNode)
-  throws NamingException {
-    InitialLdapContext result;
+  private InitialLdapContext findConnectionForLocalEntry(BasicNode node,
+      boolean isConfigurationNode) throws NamingException
+  {
     if (node == rootNode) {
-      result = ctxConfiguration;
+      return ctxConfiguration;
     }
-    else  {
-      BasicNode parent = (BasicNode)node.getParent();
-      if ((parent != null) && (parent != rootNode))
-      {
-        result = findConnectionForDisplayedEntry(parent, isConfigurationNode);
-      }
-      else
-      {
-        if (isConfigurationNode)
-        {
-          result = ctxConfiguration;
-        }
-        else
-        {
-          result = ctxUserData;
-        }
-      }
+
+    final BasicNode parent = (BasicNode) node.getParent();
+    if (parent != null && parent != rootNode)
+    {
+      return findConnectionForDisplayedEntry(parent, isConfigurationNode);
     }
-    return result;
+    return isConfigurationNode ? ctxConfiguration : ctxUserData;
   }
 
   /**
@@ -1090,7 +974,6 @@
    */
   public boolean isConfigurationNode(BasicNode node)
   {
-    boolean isConfigurationNode = false;
     if (node instanceof SuffixNode)
     {
       String dn = node.getDN();
@@ -1103,12 +986,12 @@
           Utilities.areDnsEqual(dn, ConfigConstants.DN_BACKUP_ROOT) ||
           Utilities.areDnsEqual(dn, ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT))
       {
-        isConfigurationNode = true;
+        return true;
       }
     }
     else if (node instanceof RootNode)
     {
-      isConfigurationNode = true;
+      return true;
     }
     else
     {
@@ -1116,7 +999,7 @@
       return isConfigurationNode(parentNode);
     }
 
-    return isConfigurationNode;
+    return false;
   }
 
   /**
@@ -1140,18 +1023,13 @@
    * @return the LDAP connection to search the displayed entry.
    * @throws NamingException if there is an error retrieving the connection.
    */
-  InitialLdapContext findConnectionForDisplayedEntry(BasicNode node,
-      boolean isConfigurationNode)
-  throws NamingException {
-    InitialLdapContext result;
-    if (followReferrals && (node.getRemoteUrl() != null))
+  private InitialLdapContext findConnectionForDisplayedEntry(BasicNode node,
+      boolean isConfigurationNode) throws NamingException {
+    if (followReferrals && node.getRemoteUrl() != null)
     {
-      result = connectionPool.getConnection(node.getRemoteUrl());
+      return connectionPool.getConnection(node.getRemoteUrl());
     }
-    else {
-      result = findConnectionForLocalEntry(node, isConfigurationNode);
-    }
-    return result;
+    return findConnectionForLocalEntry(node, isConfigurationNode);
   }
 
 
@@ -1162,8 +1040,7 @@
    * @param ctx the connection to be released.
    */
   void releaseLDAPConnection(InitialLdapContext ctx) {
-    if ((ctx != this.ctxConfiguration) &&
-        (ctx != this.ctxUserData))
+    if (ctx != this.ctxConfiguration && ctx != this.ctxUserData)
     {
       // Thus it comes from the connection pool
       connectionPool.releaseConnection(ctx);
@@ -1177,20 +1054,16 @@
    * @return the local entry URL for a given node.
    */
   LDAPURL findUrlForLocalEntry(BasicNode node) {
-    LDAPURL result;
     if (node == rootNode) {
-      result = LDAPConnectionPool.makeLDAPUrl(ctxConfiguration, "");
+      return LDAPConnectionPool.makeLDAPUrl(ctxConfiguration, "");
     }
-    else {
-      BasicNode parent = (BasicNode)node.getParent();
-      if (parent != null) {
-        LDAPURL parentUrl = findUrlForDisplayedEntry(parent);
-        result = LDAPConnectionPool.makeLDAPUrl(parentUrl, node.getDN());
-      } else {
-        result = LDAPConnectionPool.makeLDAPUrl(ctxConfiguration, node.getDN());
-      }
+    final BasicNode parent = (BasicNode) node.getParent();
+    if (parent != null)
+    {
+      final LDAPURL parentUrl = findUrlForDisplayedEntry(parent);
+      return LDAPConnectionPool.makeLDAPUrl(parentUrl, node.getDN());
     }
-    return result;
+    return LDAPConnectionPool.makeLDAPUrl(ctxConfiguration, node.getDN());
   }
 
 
@@ -1199,15 +1072,12 @@
    * @param node the node.
    * @return the displayed entry URL for a given node.
    */
-  LDAPURL findUrlForDisplayedEntry(BasicNode node) {
-    LDAPURL result;
-    if (followReferrals && (node.getRemoteUrl() != null)) {
-      result = node.getRemoteUrl();
+  private LDAPURL findUrlForDisplayedEntry(BasicNode node)
+  {
+    if (followReferrals && node.getRemoteUrl() != null) {
+      return node.getRemoteUrl();
     }
-    else {
-      result = findUrlForLocalEntry(node);
-    }
-    return result;
+    return findUrlForLocalEntry(node);
   }
 
 
@@ -1221,15 +1091,10 @@
    * @return the DN to use for searching children of a given node.
    */
   String findBaseDNForChildEntries(BasicNode node) {
-    String result;
-
-    if (followReferrals && (node.getRemoteUrl() != null)) {
-      result = node.getRemoteUrl().getRawBaseDN();
+    if (followReferrals && node.getRemoteUrl() != null) {
+      return node.getRemoteUrl().getRawBaseDN();
     }
-    else {
-      result = node.getDN();
-    }
-    return result;
+    return node.getDN();
   }
 
 
@@ -1240,24 +1105,20 @@
    * @return <CODE>true</CODE> if the node displays a remote entry and
    * <CODE>false</CODE> otherwise.
    */
-  boolean isDisplayedEntryRemote(BasicNode node) {
-    boolean result = false;
+  private boolean isDisplayedEntryRemote(BasicNode node) {
     if (followReferrals) {
       if (node == rootNode) {
-        result = false;
+        return false;
       }
-      else if (node.getRemoteUrl() != null) {
-        result = true;
+      if (node.getRemoteUrl() != null) {
+        return true;
       }
-      else {
-        BasicNode parent = (BasicNode)node.getParent();
-        if (parent != null) {
-          result = isDisplayedEntryRemote(parent);
-        }
+      final BasicNode parent = (BasicNode)node.getParent();
+      if (parent != null) {
+        return isDisplayedEntryRemote(parent);
       }
     }
-
-    return result;
+    return false;
   }
 
 
@@ -1275,30 +1136,11 @@
     if ((displayFlags & DISPLAY_ACI_COUNT) != 0) {
       v.add("aci");
     }
-    if (!displayAttribute.equals(RDN_ATTRIBUTE)) {
+    if (!RDN_ATTRIBUTE.equals(displayAttribute)) {
       v.add(displayAttribute);
     }
 
-    String[] result = new String[v.size()];
-    v.toArray(result);
-    return result;
-  }
-
-
-  /**
-   * Returns the list of attributes for the green search.
-   * @return the list of attributes for the green search.
-   */
-  String[] getAttrsForGreenSearch() {
-    if (!displayAttribute.equals(RDN_ATTRIBUTE)) {
-      return new String[] {
-          "aci",
-          displayAttribute};
-    } else {
-      return new String[] {
-          "aci"
-      };
-    }
+    return v.toArray(new String[v.size()]);
   }
 
   /**
@@ -1306,7 +1148,7 @@
    * @return the list of attributes for the black search.
    */
   String[] getAttrsForBlackSearch() {
-    if (!displayAttribute.equals(RDN_ATTRIBUTE)) {
+    if (!RDN_ATTRIBUTE.equals(displayAttribute)) {
       return new String[] {
           "objectClass",
           "numsubordinates",
@@ -1339,7 +1181,7 @@
    * Returns the request controls to search user data.
    * @return the request controls to search user data.
    */
-  Control[] getRequestControls()
+  private Control[] getRequestControls()
   {
     Control ctls[];
     if (followReferrals)
@@ -1378,7 +1220,7 @@
    * Returns the request controls to search configuration data.
    * @return the request controls to search configuration data.
    */
-  Control[] getConfigurationRequestControls()
+  private Control[] getConfigurationRequestControls()
   {
     return getRequestControls();
   }
@@ -1430,8 +1272,8 @@
       // tree.
       // Except when it's due a to referral resolution: we keep the node
       // in order the user can fix the referral.
-      if (isNameNotFoundException(task.getException()) &&
-          (oldState != NodeRefresher.State.SOLVING_REFERRAL)) {
+      if (isNameNotFoundException(task.getException())
+          && oldState != NodeRefresher.State.SOLVING_REFERRAL) {
         removeOneNode(node);
       }
       else {
@@ -1460,8 +1302,8 @@
         nodeChanged = updateNodeRendering(node, task.getDisplayedEntry());
       }
     }
-    else if ((newState == NodeRefresher.State.CANCELLED) &&
-        (newState == NodeRefresher.State.INTERRUPTED)) {
+    else if (newState == NodeRefresher.State.CANCELLED
+        && newState == NodeRefresher.State.INTERRUPTED) {
 
       // Let's collapse task.getNode()
       tree.collapsePath(new TreePath(treeModel.getPathToRoot(node)));
@@ -1470,8 +1312,8 @@
     }
     else {
 
-      if ((oldState != NodeRefresher.State.SEARCHING_CHILDREN) &&
-          (newState == NodeRefresher.State.SEARCHING_CHILDREN)) {
+      if (oldState != NodeRefresher.State.SEARCHING_CHILDREN
+          && newState == NodeRefresher.State.SEARCHING_CHILDREN) {
         // The children search is going to start
         if (canDoDifferentialUpdate(task)) {
           Enumeration<?> e = node.children();
@@ -1538,11 +1380,9 @@
         }
       }
 
-      if (newState == NodeRefresher.State.FINISHED) {
-        if (node.getError() != null) {
-          node.setError(null);
-          nodeChanged = updateNodeRendering(node, task.getDisplayedEntry());
-        }
+      if (newState == NodeRefresher.State.FINISHED && node.getError() != null) {
+        node.setError(null);
+        nodeChanged = updateNodeRendering(node, task.getDisplayedEntry());
       }
     }
 
@@ -1551,10 +1391,9 @@
       treeModel.nodeChanged(task.getNode());
     }
 
-    if (node.isLeaf() && (node.getChildCount() >= 1)) {
+    if (node.isLeaf() && node.getChildCount() >= 1) {
       throw new RuntimeException("Inconsistent node: " + node.getDN());
     }
-
   }
 
 
@@ -1570,8 +1409,8 @@
       final NodeRefresher.State oldState,
       final NodeRefresher.State newState)
   throws InterruptedException {
-
     Runnable r = new Runnable() {
+      @Override
       public void run() {
         try {
           refreshTaskDidProgress(task, oldState, newState);
@@ -1635,13 +1474,13 @@
         child = new BasicNode(entry.getName());
         parent.insert(child, index);
         updateNodeRendering(child, entry);
-        insertIndex.add(new Integer(index));
+        insertIndex.add(Integer.valueOf(index));
 //      System.out.println("Inserted " + child.getDN() + " at " + index);
       }
       else { // Else we update the existing one
         child = (BasicNode)parent.getChildAt(index);
         if (updateNodeRendering(child, entry)) {
-          changedIndex.add(new Integer(index));
+          changedIndex.add(Integer.valueOf(index));
         }
         // The node is no longer obsolete
         child.setObsolete(false);
@@ -1649,24 +1488,13 @@
 
       // NUMSUBORDINATE HACK
       // Let's see if child has subordinates or not.
-      // Thanks to slapd, we cannot always trust the
-      // numSubOrdinates attribute. If the child entry's DN
-      // is found in the hacker's list, then we ignore
+      // Thanks to slapd, we cannot always trust the numSubOrdinates attribute.
+      // If the child entry's DN is found in the hacker's list, then we ignore
       // the numSubordinate attribute... :((
       boolean hasNoSubOrdinates;
       if (!child.hasSubOrdinates() && dontTrust) {
         LDAPURL childUrl = findUrlForDisplayedEntry(child);
-        if (numSubordinateHacker.contains(childUrl)) {
-          // The numSubOrdinates we have is unreliable.
-          // child may potentially have subordinates.
-          hasNoSubOrdinates = false;
-//        System.out.println("numSubordinates of " + childUrl +
-//        " is not reliable");
-        }
-        else {
-          // We can trust this 0 value
-          hasNoSubOrdinates = true;
-        }
+        hasNoSubOrdinates = !numSubordinateHacker.contains(childUrl);
       }
       else {
         hasNoSubOrdinates = !child.hasSubOrdinates();
@@ -1675,7 +1503,7 @@
 
 
       // Propagate the refresh
-      // Note: logically we should unconditionaly call:
+      // Note: logically we should unconditionally call:
       //  startRefreshNode(child, false, true);
       //
       // However doing that saturates refreshQueue
@@ -1691,9 +1519,9 @@
       // node had children (in the tree).  In this case
       // we force the refresh. See bug 5015115
       //
-      if (!hasNoSubOrdinates ||
-          (child.getReferral() != null) ||
-          (child.getChildCount() > 0)) {
+      if (!hasNoSubOrdinates
+          || child.getReferral() != null
+          || child.getChildCount() > 0) {
         startRefreshNode(child, entry, true);
       }
     }
@@ -1711,16 +1539,14 @@
 
 
   /**
-   * Tells wheter a differential update can be made in the provided task.
+   * Tells whether a differential update can be made in the provided task.
    * @param task the task.
    * @return <CODE>true</CODE> if a differential update can be made and
    * <CODE>false</CODE> otherwise.
    */
   private boolean canDoDifferentialUpdate(NodeRefresher task) {
-    return (
-        (task.getNode().getChildCount() >= 1) &&
-        (task.getNode().getNumSubOrdinates() <= 100)
-    );
+    return task.getNode().getChildCount() >= 1
+        && task.getNode().getNumSubOrdinates() <= 100;
   }
 
 
@@ -1736,82 +1562,25 @@
     if (entry != null) {
       // Get the numsubordinates
       node.setNumSubOrdinates(getNumSubOrdinates(entry));
-      if (node.getNumSubOrdinates() > 0)
-      {
-        node.setHasSubOrdinates(true);
-      }
-      else
-      {
-        // Calculate based also in the hasSubordinates attribute
-        node.setHasSubOrdinates(getHasSubOrdinates(entry));
-      }
+      node.setHasSubOrdinates(
+          node.getNumSubOrdinates() > 0 || getHasSubOrdinates(entry));
       node.setReferral(getReferral(entry));
       Set<String> ocValues = ConnectionUtils.getValues(entry, "objectClass");
       if (ocValues != null) {
-        String[] array = new String[ocValues.size()];
-        ocValues.toArray(array);
-        node.setObjectClassValues(array);
+        node.setObjectClassValues(ocValues.toArray(new String[ocValues.size()]));
       }
     }
-    // Get the aci count
-    int aciCount;
-
-    if (((displayFlags & DISPLAY_ACI_COUNT) != 0) && (entry != null)) {
-      Set<String> aciValues = ConnectionUtils.getValues(entry, "aci");
-      if (aciValues != null) {
-        aciCount = aciValues.size();
-      }
-      else {
-        aciCount = 0;
-      }
-    }
-    else {
-      aciCount = 0;
-    }
 
-    // Select the icon according the objectClass,...
-    int modifiers = 0;
-    if (node.isLeaf() && !node.hasSubOrdinates()) {
-      modifiers |= IconPool.MODIFIER_LEAF;
-    }
-    if (node.getReferral() != null) {
-      modifiers |= IconPool.MODIFIER_REFERRAL;
-    }
-    if (node.getError() != null) {
-      if (node.getError().getException() != null)
-      {
-        LOG.log(Level.SEVERE, "node has error: "+node.getError().getException(),
-            node.getError().getException());
-      }
-      modifiers |= IconPool.MODIFIER_ERROR;
-    }
-    SortedSet<String> objectClasses = new TreeSet<String>();
-    if (entry != null) {
-      Set<String> ocs = ConnectionUtils.getValues(entry, "objectClass");
-      if (ocs != null)
-      {
-        objectClasses.addAll(ocs);
-      }
-    }
-    Icon newIcon;
-    if (node instanceof SuffixNode)
-    {
-      newIcon = iconPool.getSuffixIcon();
-    }
-    else
-    {
-      newIcon = iconPool.getIcon(objectClasses, modifiers);
-    }
+    int aciCount = getAciCount(entry);
+    Icon newIcon = getNewIcon(node, entry);
 
     // Construct the icon text according the dn, the aci count...
     StringBuilder sb2 = new StringBuilder();
     if (aciCount >= 1) {
-      sb2.append(String.valueOf(aciCount));
-      if (aciCount == 1) {
-        sb2.append(" aci");
-      }
-      else {
-        sb2.append(" acis");
+      sb2.append(aciCount);
+      sb2.append(" aci");
+      if (aciCount != 1) {
+        sb2.append("s");
       }
     }
 
@@ -1822,8 +1591,7 @@
       }
     } else {
       boolean useRdn = true;
-      if (!displayAttribute.equals(RDN_ATTRIBUTE) &&
-          (entry != null)) {
+      if (!RDN_ATTRIBUTE.equals(displayAttribute) && entry != null) {
         String value = ConnectionUtils.getFirstValue(entry,displayAttribute);
         if (value != null) {
           if (showAttributeName) {
@@ -1833,9 +1601,10 @@
           useRdn = false;
         }
       }
+
       if (useRdn) {
         String rdn;
-        if (followReferrals && (node.getRemoteUrl() != null)) {
+        if (followReferrals && node.getRemoteUrl() != null) {
           if (showAttributeName) {
             rdn = node.getRemoteRDNWithAttributeName();
           } else {
@@ -1866,21 +1635,66 @@
     }
 
     // Determine if the rendering needs to be updated
-    boolean changed = (
-        (node.getIcon() != newIcon) ||
-        (node.getDisplayName() != newDisplayName) ||
-        (node.getFontStyle() != newStyle)
-    );
+    boolean changed =
+        node.getIcon() != newIcon
+        || node.getDisplayName() != newDisplayName
+        || node.getFontStyle() != newStyle;
     if (changed) {
       node.setIcon(newIcon);
       node.setDisplayName(newDisplayName);
       node.setFontStyle(newStyle);
     }
 
-
     return changed;
   }
 
+  private int getAciCount(SearchResult entry) throws NamingException
+  {
+    if ((displayFlags & DISPLAY_ACI_COUNT) != 0 && entry != null) {
+      Set<String> aciValues = ConnectionUtils.getValues(entry, "aci");
+      if (aciValues != null) {
+        return aciValues.size();
+      }
+    }
+    return 0;
+  }
+
+
+  private Icon getNewIcon(BasicNode node, SearchResult entry)
+      throws NamingException
+  {
+    // Select the icon according the objectClass,...
+    int modifiers = 0;
+    if (node.isLeaf() && !node.hasSubOrdinates()) {
+      modifiers |= IconPool.MODIFIER_LEAF;
+    }
+    if (node.getReferral() != null) {
+      modifiers |= IconPool.MODIFIER_REFERRAL;
+    }
+    if (node.getError() != null) {
+      final Exception ex = node.getError().getException();
+      if (ex != null)
+      {
+        LOG.log(Level.SEVERE, "node has error: " + ex, ex);
+      }
+      modifiers |= IconPool.MODIFIER_ERROR;
+    }
+
+    SortedSet<String> objectClasses = new TreeSet<String>();
+    if (entry != null) {
+      Set<String> ocs = ConnectionUtils.getValues(entry, "objectClass");
+      if (ocs != null)
+      {
+        objectClasses.addAll(ocs);
+      }
+    }
+
+    if (node instanceof SuffixNode)
+    {
+      return iconPool.getSuffixIcon();
+    }
+    return iconPool.getIcon(objectClasses, modifiers);
+  }
 
   /**
    * Find a child node matching a given DN.
@@ -1895,14 +1709,13 @@
   public int findChildNode(BasicNode parent, String childDn) {
     int childCount = parent.getChildCount();
     int i = 0;
-    while ((i < childCount) &&
-        !childDn.equals(((BasicNode)parent.getChildAt(i)).getDN())) {
+    while (i < childCount
+        && !childDn.equals(((BasicNode)parent.getChildAt(i)).getDN())) {
       i++;
     }
     if (i >= childCount) { // Not found
       i = -(childCount + 1);
     }
-
     return i;
   }
 
@@ -1936,10 +1749,10 @@
       newSize = newSize - 1;
     }
     if (newSize != queueTotalSize) {
-      if ((queueTotalSize == 0) && (newSize >= 1)) {
+      if (queueTotalSize == 0 && newSize >= 1) {
         fireEvent(BrowserEvent.Type.UPDATE_START);
       }
-      else if ((queueTotalSize >= 1) && (newSize == 0)) {
+      else if (queueTotalSize >= 1 && newSize == 0) {
         fireEvent(BrowserEvent.Type.UPDATE_END);
       }
       queueTotalSize = newSize;
@@ -1985,46 +1798,44 @@
    * @throws IllegalArgumentException if a node with the given dn exists but
    * is not a suffix node.
    */
-  SuffixNode findSuffixNode(String suffixDn, SuffixNode suffixNode)
-  throws IllegalArgumentException
+  private SuffixNode findSuffixNode(String suffixDn, SuffixNode suffixNode)
+      throws IllegalArgumentException
   {
-    SuffixNode result;
-
     if (Utilities.areDnsEqual(suffixNode.getDN(), suffixDn)) {
-      result = suffixNode;
-    }
-    else {
-      int childCount = suffixNode.getChildCount();
-      if (childCount == 0) {
-        result = null;
-      }
-      else {
-        BasicNode child;
-        int i = 0;
-        boolean found = false;
-        do {
-          child = (BasicNode)suffixNode.getChildAt(i) ;
-          if (Utilities.areDnsEqual(child.getDN(), suffixDn)) {
-            found = true;
-          }
-          i++;
-        }
-        while ((i < childCount) && !found);
-        if (!found) {
-          result = null;
-        }
-        else if (child instanceof SuffixNode) {
-          result = (SuffixNode)child;
-        }
-        else {
-          // A node matches suffixDn however it's not a suffix node.
-          // There's a bug in the caller.
-          throw new IllegalArgumentException(suffixDn +" is not a suffix node");
-        }
-      }
+      return suffixNode;
     }
 
-    return result;
+    int childCount = suffixNode.getChildCount();
+    if (childCount == 0)
+    {
+      return null;
+    }
+    BasicNode child;
+    int i = 0;
+    boolean found = false;
+    do
+    {
+      child = (BasicNode) suffixNode.getChildAt(i);
+      if (Utilities.areDnsEqual(child.getDN(), suffixDn))
+      {
+        found = true;
+      }
+      i++;
+    }
+    while (i < childCount && !found);
+
+    if (!found)
+    {
+      return null;
+    }
+    if (child instanceof SuffixNode)
+    {
+      return (SuffixNode) child;
+    }
+
+    // A node matches suffixDn however it's not a suffix node.
+    // There's a bug in the caller.
+    throw new IllegalArgumentException(suffixDn + " is not a suffix node");
   }
 
 
@@ -2036,15 +1847,7 @@
    * NameNotFoundException.
    */
   private boolean isNameNotFoundException(Object x) {
-    boolean result;
-    if ((x != null) && (x instanceof NameNotFoundException))
-    {
-      result = true;
-    }
-    else {
-      result = false;
-    }
-    return result;
+    return x instanceof NameNotFoundException;
   }
 
 
@@ -2054,28 +1857,12 @@
    * If numsubordinates is not present, returns 0.
    * @param entry the entry to analyze.
    * @throws NamingException if an error occurs.
-   * @return the value of the numsubordinate attribute.  0 if the attribute
+   * @return the value of the numsubordinates attribute.  0 if the attribute
    * could not be found.
    */
-  public static int getNumSubOrdinates(SearchResult entry)
-  throws NamingException
+  private static int getNumSubOrdinates(SearchResult entry) throws NamingException
   {
-    int result;
-
-    String v = ConnectionUtils.getFirstValue(entry, "numsubordinates");
-    if (v == null) {
-      result = 0;
-    }
-    else {
-      try {
-        result = Integer.parseInt(v);
-      }
-      catch(NumberFormatException x) {
-        result = 0;
-      }
-    }
-
-    return result;
+    return toInt(ConnectionUtils.getFirstValue(entry, "numsubordinates"));
   }
 
   /**
@@ -2090,49 +1877,46 @@
   public static boolean getHasSubOrdinates(SearchResult entry)
   throws NamingException
   {
-    boolean result;
-
     String v = ConnectionUtils.getFirstValue(entry, "hassubordinates");
-    if (v == null) {
-      result = getNumSubOrdinates(entry) > 0;
+    if (v != null) {
+      return "true".equalsIgnoreCase(v);
     }
-    else {
-      result = "true".equalsIgnoreCase(v);
-    }
-
-    return result;
+    return getNumSubOrdinates(entry) > 0;
   }
 
   /**
    * Get the value of the numsubordinates attribute.
    * If numsubordinates is not present, returns 0.
    * @param entry the entry to analyze.
-   * @return the value of the numsubordinate attribute.  0 if the attribute
+   * @return the value of the numsubordinates attribute.  0 if the attribute
    * could not be found.
    */
-  public static int getNumSubOrdinates(CustomSearchResult entry)
+  private static int getNumSubOrdinates(CustomSearchResult entry)
   {
-    int result;
-
     List<Object> vs = entry.getAttributeValues("numsubordinates");
     String v = null;
     if (vs != null && !vs.isEmpty())
     {
       v = vs.get(0).toString();
     }
-    if (v == null) {
-      result = 0;
-    }
-    else {
-      try {
-        result = Integer.parseInt(v);
-      }
-      catch(NumberFormatException x) {
-        result = 0;
-      }
-    }
+    return toInt(v);
+  }
 
-    return result;
+
+  private static int toInt(String v)
+  {
+    if (v == null)
+    {
+      return 0;
+    }
+    try
+    {
+      return Integer.parseInt(v);
+    }
+    catch (NumberFormatException x)
+    {
+      return 0;
+    }
   }
 
   /**
@@ -2145,22 +1929,17 @@
    */
   public static boolean getHasSubOrdinates(CustomSearchResult entry)
   {
-    boolean result;
-
     List<Object> vs = entry.getAttributeValues("hassubordinates");
     String v = null;
     if (vs != null && !vs.isEmpty())
     {
       v = vs.get(0).toString();
     }
-    if (v == null) {
-      result = getNumSubOrdinates(entry) > 0;
+    if (v != null)
+    {
+      return "true".equalsIgnoreCase(v);
     }
-    else {
-      result = "true".equalsIgnoreCase(v);
-    }
-
-    return result;
+    return getNumSubOrdinates(entry) > 0;
   }
 
 
@@ -2180,7 +1959,7 @@
     {
       for (String value : values)
       {
-        boolean isReferral = value.equalsIgnoreCase("referral");
+        boolean isReferral = "referral".equalsIgnoreCase(value);
         if (isReferral)
         {
           Set<String> refValues = ConnectionUtils.getValues(entry, "ref");
@@ -2231,7 +2010,7 @@
    * @param v the Collection of Integer objects.
    * @return an array of int from a Collection of Integer objects.
    */
-  static int[] intArrayFromCollection(Collection<Integer> v) {
+  private static int[] intArrayFromCollection(Collection<Integer> v) {
     int[] result = new int[v.size()];
     int i = 0;
     for (Integer value : v)
@@ -2242,29 +2021,6 @@
     return result;
   }
 
-  /**
-   * Returns an array of SearchResult from a Collection of SearchResult objects.
-   * @param v the Collection of SearchResult objects.
-   * @return an array of SearchResult from a Collection of SearchResult objects.
-   */
-  static SearchResult[] entryArrayFromCollection(Collection<SearchResult> v) {
-    SearchResult[] result = new SearchResult[v.size()];
-    v.toArray(result);
-    return result;
-  }
-
-  /**
-   * Returns an array of BasicNode from a Collection of BasicNode objects.
-   * @param v the Collection of BasicNode objects.
-   * @return an array of BasicNode from a Collection of BasicNode objects.
-   */
-  static BasicNode[] nodeArrayFromCollection(Collection<BasicNode> v) {
-    BasicNode[] result = new BasicNode[v.size()];
-    v.toArray(result);
-    return result;
-  }
-
-
 
   /**
    * For debugging purpose: allows to switch easily
@@ -2273,8 +2029,7 @@
    * @param r the runnable to be invoked.
    * @throws InterruptedException if there is an error invoking SwingUtilities.
    */
-  static void swingInvoke(Runnable r)
-  throws InterruptedException {
+  private static void swingInvoke(Runnable r) throws InterruptedException {
     try {
       SwingUtilities.invokeAndWait(r);
     }
@@ -2289,23 +2044,23 @@
 
 
   /**
-   * The default implementaion of the BrowserNodeInfo interface.
+   * The default implementation of the BrowserNodeInfo interface.
    */
-  class BrowserNodeInfoImpl implements BrowserNodeInfo
+  private class BrowserNodeInfoImpl implements BrowserNodeInfo
   {
-    BasicNode node;
-    LDAPURL url;
-    boolean isRemote;
-    boolean isSuffix;
-    boolean isRootNode;
-    String[] referral;
-    int numSubOrdinates;
-    boolean hasSubOrdinates;
-    int errorType;
-    Exception errorException;
-    Object errorArg;
-    String[] objectClassValues;
-    String toString;
+    private BasicNode node;
+    private LDAPURL url;
+    private boolean isRemote;
+    private boolean isSuffix;
+    private boolean isRootNode;
+    private String[] referral;
+    private int numSubOrdinates;
+    private boolean hasSubOrdinates;
+    private int errorType;
+    private Exception errorException;
+    private Object errorArg;
+    private String[] objectClassValues;
+    private String toString;
 
     /**
      * The constructor of this object.
@@ -2353,6 +2108,7 @@
      * Returns the node associated with this object.
      * @return  the node associated with this object.
      */
+    @Override
     public BasicNode getNode() {
       return node;
     }
@@ -2361,6 +2117,7 @@
      * Returns the LDAP URL associated with this object.
      * @return the LDAP URL associated with this object.
      */
+    @Override
     public LDAPURL getURL() {
       return url;
     }
@@ -2370,6 +2127,7 @@
      * @return <CODE>true</CODE> if this is a root node and <CODE>false</CODE>
      * otherwise.
      */
+    @Override
     public boolean isRootNode() {
       return isRootNode;
     }
@@ -2379,6 +2137,7 @@
      * @return <CODE>true</CODE> if this is a suffix node and <CODE>false</CODE>
      * otherwise.
      */
+    @Override
     public boolean isSuffix() {
       return isSuffix;
     }
@@ -2388,6 +2147,7 @@
      * @return <CODE>true</CODE> if this is a remote node and <CODE>false</CODE>
      * otherwise.
      */
+    @Override
     public boolean isRemote() {
       return isRemote;
     }
@@ -2396,6 +2156,7 @@
      * Returns the list of referral associated with this node.
      * @return the list of referral associated with this node.
      */
+    @Override
     public String[] getReferral() {
       return referral;
     }
@@ -2406,6 +2167,7 @@
      * @return the number of subordinates of the entry associated with this
      * node.
      */
+    @Override
     public int getNumSubOrdinates() {
       return numSubOrdinates;
     }
@@ -2415,6 +2177,7 @@
      * @return {@code true} if the entry has subordinates and {@code false}
      * otherwise.
      */
+    @Override
     public boolean hasSubOrdinates() {
       return hasSubOrdinates;
     }
@@ -2425,6 +2188,7 @@
      * @return the error type associated we got when refreshing the node.
      * <CODE>null</CODE> if no error was found.
      */
+    @Override
     public int getErrorType() {
       return errorType;
     }
@@ -2435,6 +2199,7 @@
      * @return the exception associated we got when refreshing the node.
      * <CODE>null</CODE> if no exception was found.
      */
+    @Override
     public Exception getErrorException() {
       return errorException;
     }
@@ -2445,6 +2210,7 @@
      * @return the error argument associated we got when refreshing the node.
      * <CODE>null</CODE> if no error argument was found.
      */
+    @Override
     public Object getErrorArg() {
       return errorArg;
     }
@@ -2453,6 +2219,7 @@
      * Return the tree path associated with the node in the tree.
      * @return the tree path associated with the node in the tree.
      */
+    @Override
     public TreePath getTreePath() {
       return new TreePath(treeModel.getPathToRoot(node));
     }
@@ -2461,6 +2228,7 @@
      * Returns the object class values of the entry associated with the node.
      * @return the object class values of the entry associated with the node.
      */
+    @Override
     public String[] getObjectClassValues() {
       return objectClassValues;
     }
@@ -2469,6 +2237,7 @@
      * Returns a String representation of the object.
      * @return a String representation of the object.
      */
+    @Override
     public String toString() {
       return toString;
     }
@@ -2479,12 +2248,12 @@
      * @return <CODE>true</CODE> if the node info represents the same node as
      * this and <CODE>false</CODE> otherwise.
      */
+    @Override
     public boolean representsSameNode(BrowserNodeInfo node) {
-      boolean representsSameNode = false;
       if (node != null) {
-        representsSameNode = node.getNode() == node;
+        return node.getNode() == node;
       }
-      return representsSameNode;
+      return false;
     }
   }
 

--
Gitblit v1.10.0