From 0494a58c31ae6df20f4024c52248a8ff34b5612e Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 03 Aug 2016 16:06:26 +0000
Subject: [PATCH] CustomSearchResult: use DN

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java |   16 +++-----
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java         |    6 +-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java            |   40 +++++--------------
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java        |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java       |    9 ++--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java          |   10 ++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java  |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java       |    2 
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java            |    7 ++-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java         |    4 -
 10 files changed, 36 insertions(+), 62 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
index 0f2c399..15e7e16 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
@@ -46,7 +46,7 @@
  */
 public class CustomSearchResult implements Comparable<CustomSearchResult>
 {
-  private final String dn;
+  private final DN dn;
   private Map<String, List<Object>> attributes;
   private SortedSet<String> attrNames;
   private String toString;
@@ -58,7 +58,7 @@
    * editors use some methods that require CustomSearchResult.
    * @param dn the dn of the entry.
    */
-  public CustomSearchResult(String dn)
+  public CustomSearchResult(DN dn)
   {
     this.dn = dn;
     attributes = new HashMap<>();
@@ -74,7 +74,7 @@
    */
   public CustomSearchResult(SearchResultEntry sr) throws NamingException
   {
-    dn = sr.getName().toString();
+    dn = sr.getName();
 
     attributes = new HashMap<>();
     attrNames = new TreeSet<>();
@@ -100,7 +100,8 @@
    * Returns the DN of the entry.
    * @return the DN of the entry.
    */
-  public String getDN() {
+  public DN getDN()
+  {
     return dn;
   }
 
@@ -113,11 +114,7 @@
    */
   public List<Object> getAttributeValues(String name) {
     List<Object> values = attributes.get(name.toLowerCase());
-    if (values == null)
-    {
-      values = Collections.emptyList();
-    }
-    return values;
+    return values != null ? values : Collections.emptyList();
   }
 
   /**
@@ -209,7 +206,6 @@
    */
   public Entry getEntry() throws OpenDsException
   {
-    DN dn = DN.valueOf(getDN());
     Map<ObjectClass,String> objectClasses = new HashMap<>();
     Map<AttributeType,List<org.opends.server.types.Attribute>> userAttributes = new HashMap<>();
     Map<AttributeType,List<org.opends.server.types.Attribute>> operationalAttributes = new HashMap<>();
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
index 4200792..5c909d4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
@@ -320,7 +320,6 @@
 
     String filter = "(|(objectClass=*)(objectclass=ldapsubentry))";
     SearchRequest request = newSearchRequest(dnToRemove, SINGLE_LEVEL, Filter.valueOf(filter), NO_ATTRIBUTES);
-    DN entryDNFound = dnToRemove;
     try (ConnectionEntryReader entryDNs = conn.getConnection().search(request))
     {
       while (entryDNs.hasNext())
@@ -329,8 +328,7 @@
         if (!sr.getName().equals(""))
         {
           CustomSearchResult res = new CustomSearchResult(sr);
-          entryDNFound = DN.valueOf(res.getDN());
-          deleteSubtreeRecursively(conn, entryDNFound, null, toNotify);
+          deleteSubtreeRecursively(conn, res.getDN(), null, toNotify);
         }
       }
     }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java
index fe6753a..e4c8b35 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java
@@ -96,7 +96,7 @@
     this.treePath = path;
 
     DN newDn = newEntry.getName();
-    oldDn = DN.valueOf(oldEntry.getDN());
+    oldDn = oldEntry.getDN();
     for (BackendDescriptor backend : info.getServerDescriptor().getBackends())
     {
       for (BaseDNDescriptor baseDN : backend.getBaseDns())
@@ -228,7 +228,7 @@
             }
           });
 
-          conn.getLdapContext().modifyAttributes(Utilities.getJNDIName(oldEntry.getDN()), mods);
+          conn.getLdapContext().modifyAttributes(Utilities.getJNDIName(oldEntry.getDN().toString()), mods);
 
           SwingUtilities.invokeLater(new Runnable()
           {
@@ -515,7 +515,7 @@
        * modifications.
        */
       ByteString oldRdnValueDeleted = null;
-      RDN oldRDN = DN.valueOf(oldEntry.getDN()).rdn();
+      RDN oldRDN = oldEntry.getDN().rdn();
       for (AVA ava : oldRDN)
       {
         if (ava.getAttributeType().equals(attrDesc.getAttributeType()))
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
index 2f0c80e..bedd2d2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseEntriesPanel.java
@@ -336,7 +336,7 @@
           for (TreePath p : paths)
           {
             BasicNode n = (BasicNode)p.getLastPathComponent();
-            if (!entryPane.canDelete(n.getDN()))
+            if (!entryPane.canDelete(DN.valueOf(n.getDN())))
             {
               return false;
             }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java
index b6ce150..d7f6b73 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java
@@ -377,7 +377,7 @@
       }
       else
       {
-        String newValue = getFirstValue(dn);
+        String newValue = getFirstValue(DN.valueOf(dn));
         if (values.size() == 1)
         {
           sb.append("\n");
@@ -404,9 +404,9 @@
     return sb.toString();
   }
 
-  private String getFirstValue(String dn)
+  private String getFirstValue(DN dn)
   {
-    return DN.valueOf(dn).rdn().getFirstAVA().getAttributeValue().toString();
+    return dn.rdn().getFirstAVA().getAttributeValue().toString();
   }
 
   private void browseClicked()
@@ -467,8 +467,7 @@
           entryToDuplicate = sr;
           try
           {
-            DN dn = DN.valueOf(sr.getDN());
-            rdnAttribute = dn.rdn().getFirstAVA().getAttributeType().getNameOrOID();
+            rdnAttribute = sr.getDN().rdn().getFirstAVA().getAttributeType().getNameOrOID();
 
             updateDNValue();
             Boolean hasPassword = !sr.getAttributeValues(
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java
index 15595c3..02274fc 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java
@@ -36,6 +36,7 @@
 import javax.swing.tree.TreePath;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.ldap.DN;
 import org.opends.guitools.controlpanel.browser.BasicNodeError;
 import org.opends.guitools.controlpanel.browser.BrowserController;
 import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
@@ -52,7 +53,6 @@
 import org.opends.guitools.controlpanel.task.Task;
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.server.config.ConfigConstants;
-import org.forgerock.opendj.ldap.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.OpenDsException;
 import org.opends.server.util.ServerConstants;
@@ -192,11 +192,8 @@
           }
           else
           {
-            boolean modified =
-              !Utilities.areDnsEqual(ev.getEntry().getName().toString(),
-                  searchResult.getDN()) ||
-                  !ModifyEntryTask.getModifications(ev.getEntry(), searchResult,
-                      getInfo()).isEmpty();
+            boolean modified = !ev.getEntry().getName().equals(searchResult.getDN())
+                || !ModifyEntryTask.getModifications(ev .getEntry(), searchResult, getInfo()).isEmpty();
             enable = modified;
           }
         }
@@ -441,44 +438,29 @@
    * @return <CODE>true</CODE> if the provided DN corresponds to a read-only
    * entry and <CODE>false</CODE> otherwise.
    */
-  private boolean isReadOnly(String sDn)
+  private boolean isReadOnly(DN dn)
   {
-    boolean isReadOnly = false;
-    try
+    for (DN parentDN : parentReadOnly)
     {
-      DN dn = DN.valueOf(sDn);
-      for (DN parentDN : parentReadOnly)
+      if (dn.isSubordinateOrEqualTo(parentDN))
       {
-        if (dn.isSubordinateOrEqualTo(parentDN))
-        {
-          isReadOnly = true;
-          break;
-        }
-      }
-      if (!isReadOnly)
-      {
-        isReadOnly = dn.equals(DN.rootDN());
+        return true;
       }
     }
-    catch (Throwable t)
-    {
-      throw new RuntimeException("Error decoding DNs: "+t, t);
-    }
-    return isReadOnly;
+    return dn.equals(DN.rootDN());
   }
 
   /**
    * Returns <CODE>true</CODE> if the provided DN corresponds to an entry that
    * can be deleted and <CODE>false</CODE> otherwise.
-   * @param sDn the DN of the entry.
+   * @param dn the DN of the entry.
    * @return <CODE>true</CODE> if the provided DN corresponds to an entry that
    * can be deleted and <CODE>false</CODE> otherwise.
    */
-  public boolean canDelete(String sDn)
+  public boolean canDelete(DN dn)
   {
     try
     {
-      DN dn = DN.valueOf(sDn);
       return !dn.equals(DN.rootDN())
           && !nonDeletable.contains(dn)
           && isDescendantOfAny(dn, parentReadOnly);
@@ -591,7 +573,7 @@
               INFO_CTRL_PANEL_CONFIRMATION_REQUIRED_SUMMARY.get(),
               confirmationMessage))
           {
-            String dn = searchResult.getDN();
+            DN dn = searchResult.getDN();
             if (isLeaf)
             {
               launchOperation(newTask,
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
index c5c5f38..3f2fcd0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ManageTasksPanel.java
@@ -57,6 +57,7 @@
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
 import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
 import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
@@ -72,7 +73,6 @@
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeBuilder;
 import org.opends.server.types.Entry;
-import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.opends.server.types.OpenDsException;
 
 /** The panel displaying the list of scheduled tasks. */
@@ -468,8 +468,7 @@
     int numberTasks = r.nextInt(10);
     for (int i= 0; i<numberTasks; i++)
     {
-      CustomSearchResult csr =
-        new CustomSearchResult("cn=mytask"+i+",cn=tasks");
+      CustomSearchResult csr = new CustomSearchResult(DN.valueOf("cn=mytask" + i + ",cn=tasks"));
       String p = "ds-task-";
       String[] attrNames =
       {
@@ -534,8 +533,7 @@
     Set<TaskEntry> list = new HashSet<>();
     for (int i= 0; i<10; i++)
     {
-      CustomSearchResult csr =
-        new CustomSearchResult("cn=mytask"+i+",cn=tasks");
+      CustomSearchResult csr = new CustomSearchResult(DN.valueOf("cn=mytask" + i + ",cn=tasks"));
       String p = "ds-task-";
       String[] attrNames =
       {
@@ -634,7 +632,7 @@
    */
   private static Entry getEntry(CustomSearchResult csr) throws OpenDsException
   {
-    DN dn = DN.valueOf(csr.getDN());
+    DN dn = csr.getDN();
     Map<ObjectClass,String> objectClasses = new HashMap<>();
     Map<AttributeType,List<Attribute>> userAttributes = new HashMap<>();
     Map<AttributeType,List<Attribute>> operationalAttributes = new HashMap<>();
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
index c839e9d..80e74a9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
@@ -1422,7 +1422,7 @@
     StringBuilder sb = new StringBuilder();
     try
     {
-      DN oldDN = DN.valueOf(searchResult.getDN());
+      DN oldDN = searchResult.getDN();
       if (oldDN.size() > 0)
       {
         List<AVA> avas = toAvas(oldDN.rdn());
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
index 1a29adc..154eff0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
@@ -262,7 +262,7 @@
     StringBuilder sb = new StringBuilder();
     try
     {
-      DN oldDN = DN.valueOf(searchResult.getDN());
+      DN oldDN = searchResult.getDN();
       if (oldDN.size() > 0)
       {
         RDN rdn = oldDN.rdn();
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
index 11d0c4c..3e92d2c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
@@ -37,6 +37,7 @@
 import org.forgerock.opendj.ldap.AVA;
 import org.forgerock.opendj.ldap.AttributeDescription;
 import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.forgerock.opendj.ldap.schema.ObjectClassType;
@@ -181,10 +182,10 @@
    */
   protected void updateTitle(CustomSearchResult sr, TreePath path)
   {
-    String dn = sr.getDN();
-    if (dn != null && dn.length() > 0)
+    final DN dn = sr.getDN();
+    if (dn != null && dn.size() > 0)
     {
-      title.setText(sr.getDN());
+      title.setText(dn.toString());
     }
     else if (path != null)
     {

--
Gitblit v1.10.0