From 3e7100797afc9068d10990f57b46e868ff812966 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 28 Oct 2016 14:18:44 +0000
Subject: [PATCH] Use the new Entry.parseAttribute() method

---
 opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java                                    |    2 
 opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java                |   10 +-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java |    6 +-
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java             |    4 
 opendj-server-legacy/src/main/java/org/opends/server/tools/BackendToolUtils.java                                |   25 -------
 opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java                                        |    5 -
 opendj-server-legacy/src/main/java/org/opends/server/tasks/TaskUtils.java                                       |    9 +--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java             |    7 +-
 opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java                                      |   22 +++----
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java              |   33 +++-------
 opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java                                   |    5 -
 11 files changed, 42 insertions(+), 86 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java
index c9c7e70..caeb34b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/ServerDescriptor.java
@@ -18,7 +18,6 @@
 
 import static org.forgerock.opendj.ldap.SearchScope.*;
 import static org.forgerock.opendj.ldap.requests.Requests.*;
-import static org.opends.admin.ads.util.ConnectionUtils.*;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -780,7 +779,7 @@
       {
         SearchResultEntry sr = entryReader.readEntry();
 
-        String backendId = firstValueAsString(sr, "ds-cfg-backend-id");
+        String backendId = sr.parseAttribute("ds-cfg-backend-id").asString();
         if (!isConfigBackend(backendId) || isSchemaBackend(backendId))
         {
           Set<String> entries;
@@ -1021,7 +1020,7 @@
         SearchResultEntry sr = entryReader.readEntry();
 
         desc.serverProperties.put(ServerProperty.SCHEMA_GENERATION_ID,
-            firstValueAsString(sr, "ds-sync-generation-id"));
+            sr.parseAttribute("ds-sync-generation-id").asString());
       }
     }
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
index 1ed6bf9..06c7432 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/TopologyCache.java
@@ -31,6 +31,7 @@
 import java.util.Set;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizedIllegalArgumentException;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.EntryNotFoundException;
@@ -49,7 +50,6 @@
 
 import static org.forgerock.opendj.ldap.SearchScope.*;
 import static org.forgerock.opendj.ldap.requests.Requests.*;
-import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.messages.QuickSetupMessages.*;
 
 /**
@@ -458,7 +458,7 @@
       {
         SearchResultEntry sr = entryReader.readEntry();
 
-        final DN dn = DN.valueOf(firstValueAsString(sr, "domain-name"));
+        final DN dn = sr.parseAttribute("domain-name").asDN();
         int replicaId = -1;
         try
         {
@@ -509,18 +509,14 @@
 
   private void setAgeOfOldestMissingChange(ReplicaDescriptor replica, SearchResultEntry sr)
   {
-    String s = firstValueAsString(sr, "approx-older-change-not-synchronized-millis");
-    if (s != null)
+    try
     {
-      try
-      {
-        replica.setAgeOfOldestMissingChange(Long.valueOf(s));
-      }
-      catch (Throwable t)
-      {
-        logger.warn(LocalizableMessage.raw(
-            "Unexpected error reading age of oldest change: " + t, t));
-      }
+      replica.setAgeOfOldestMissingChange(
+          sr.parseAttribute("approx-older-change-not-synchronized-millis").asLong());
+    }
+    catch (LocalizedIllegalArgumentException t)
+    {
+      logger.warn(LocalizableMessage.raw("Unexpected error reading age of oldest change: " + t, t));
     }
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
index 80468dd..b42ace8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
@@ -39,6 +39,7 @@
 import javax.swing.tree.TreeNode;
 import javax.swing.tree.TreePath;
 
+import org.forgerock.i18n.LocalizedIllegalArgumentException;
 import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.Entry;
 import org.forgerock.opendj.ldap.EntryNotFoundException;
@@ -1674,7 +1675,14 @@
    */
   private static int getNumSubOrdinates(Entry entry)
   {
-    return toInt(firstValueAsString(entry, NUMSUBORDINATES_ATTR));
+    try
+    {
+      return entry.parseAttribute(NUMSUBORDINATES_ATTR).asInteger(0);
+    }
+    catch (LocalizedIllegalArgumentException e)
+    {
+      return 0;
+    }
   }
 
   /**
@@ -1687,27 +1695,8 @@
    */
   public static boolean getHasSubOrdinates(Entry entry)
   {
-    String v = firstValueAsString(entry, HASSUBORDINATES_ATTR);
-    if (v != null) {
-      return "true".equalsIgnoreCase(v);
-    }
-    return getNumSubOrdinates(entry) > 0;
-  }
-
-  private static int toInt(String v)
-  {
-    if (v == null)
-    {
-      return 0;
-    }
-    try
-    {
-      return Integer.parseInt(v);
-    }
-    catch (NumberFormatException x)
-    {
-      return 0;
-    }
+    Boolean val = entry.parseAttribute(HASSUBORDINATES_ATTR).asBoolean();
+    return val != null ? val : getNumSubOrdinates(entry) > 0;
   }
 
   /**
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
index f84b415..57a3b93 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
@@ -18,7 +18,6 @@
 
 import static com.forgerock.opendj.util.OperatingSystem.*;
 
-import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.admin.ads.util.PreferredConnection.Type.*;
 import static org.opends.server.tools.ConfigureWindowsService.*;
 
@@ -520,13 +519,13 @@
           desc.setJvmMemoryUsageMonitor(rCtx.getJvmMemoryUsage());
           desc.setSystemInformationMonitor(rCtx.getSystemInformation());
           desc.setWorkQueueMonitor(rCtx.getWorkQueue());
-          desc.setOpenDJVersion(firstValueAsString(rCtx.getVersionMonitor(), "fullVersion"));
-          String installPath = firstValueAsString(rCtx.getSystemInformation(), "installPath");
+          desc.setOpenDJVersion(rCtx.getVersionMonitor().parseAttribute("fullVersion").asString());
+          String installPath = rCtx.getSystemInformation().parseAttribute("installPath").asString();
           if (installPath != null)
           {
             desc.setInstallPath(installPath);
           }
-          String instancePath = firstValueAsString(rCtx.getSystemInformation(), "instancePath");
+          String instancePath = rCtx.getSystemInformation().parseAttribute("instancePath").asString();
           if (instancePath != null)
           {
             desc.setInstancePath(instancePath);
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java
index 9b205cc..786fb62 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/DatabaseMonitoringTableModel.java
@@ -16,7 +16,6 @@
  */
 package org.opends.guitools.controlpanel.datamodel;
 
-import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.guitools.controlpanel.util.Utilities.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.server.util.CollectionUtils.*;
@@ -295,14 +294,15 @@
 
   private String[] getLine(BackendDescriptor backend)
   {
+    final String defaultVal = NO_VALUE_SET.toString();
+
     String[] line = new String[attributes.size() + 1];
     line[0] = getName(backend);
     int i = 1;
     SearchResultEntry monitoringEntry = getMonitoringEntry(backend);
     for (String attr : attributes)
     {
-      String o = firstValueAsString(monitoringEntry, attr);
-      line[i] = o != null ? o : NO_VALUE_SET.toString();
+      line[i] = monitoringEntry.parseAttribute(attr).asString(defaultVal);
       i++;
     }
     return line;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
index 006d87e..b7f8bd1 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
@@ -35,10 +35,10 @@
 import org.forgerock.opendj.ldap.responses.SearchResultEntry;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
+import org.forgerock.opendj.ldap.schema.Schema;
 import org.opends.guitools.controlpanel.util.ConfigFromConnection;
 import org.opends.quicksetup.UserData;
 import org.opends.server.tools.tasks.TaskEntry;
-import org.forgerock.opendj.ldap.schema.Schema;
 
 import com.forgerock.opendj.util.OperatingSystem;
 
@@ -509,7 +509,7 @@
     {
       return false;
     }
-    String os = firstValueAsString(sr, "operatingSystem");
+    String os = sr.parseAttribute("operatingSystem").asString();
     return os != null && OperatingSystem.WINDOWS.equals(OperatingSystem.forName(os));
   }
 
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
index d242585..ccdce48 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/util/Utils.java
@@ -22,7 +22,6 @@
 import static org.forgerock.opendj.ldap.SearchScope.*;
 import static org.forgerock.opendj.ldap.requests.Requests.*;
 import static org.forgerock.util.Utils.*;
-import static org.opends.admin.ads.util.ConnectionUtils.*;
 import static org.opends.messages.QuickSetupMessages.*;
 import static org.opends.quicksetup.Installation.*;
 import static org.opends.server.util.CollectionUtils.*;
@@ -930,12 +929,10 @@
     try
     {
       SearchResultEntry sr = conn.getConnection().searchSingleEntry(request);
-
-      String v = firstValueAsString(sr, "currentTime");
+      String v = sr.parseAttribute("currentTime").asString();
 
       SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss'Z'");
       formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
-
       return formatter.parse(v).getTime();
     }
     catch (Throwable t)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/TaskUtils.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/TaskUtils.java
index c8ed1f5..52fcf08 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/TaskUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/TaskUtils.java
@@ -33,7 +33,6 @@
 import org.forgerock.opendj.server.config.server.BackendCfg;
 import org.forgerock.opendj.server.config.server.RootCfg;
 import org.opends.server.api.Backend;
-import org.opends.server.tools.BackendToolUtils;
 import org.opends.server.types.Entry;
 import org.opends.server.config.ConfigurationHandler;
 import org.opends.server.core.DirectoryServer;
@@ -51,9 +50,7 @@
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
-/**
- * This class defines a number of static utility methods for server tasks.
- */
+/** This class defines a number of static utility methods for server tasks. */
 public class TaskUtils
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -71,7 +68,7 @@
   {
     try
     {
-      return BackendToolUtils.getStringSingleValuedAttribute(configEntry, ATTR_BACKEND_ID);
+      return configEntry.parseAttribute(ATTR_BACKEND_ID).asString();
     }
     catch (Exception e)
     {
@@ -117,7 +114,7 @@
         try
         {
           configEntry = Converters.to(configHandler.getEntry(childrenDn));
-          backendID = BackendToolUtils.getStringSingleValuedAttribute(configEntry, ATTR_BACKEND_ID);
+          backendID = configEntry.parseAttribute(ATTR_BACKEND_ID).asString();
           if (backendID == null)
           {
             continue;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendToolUtils.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendToolUtils.java
index bde8767..0f0ee3f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendToolUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/BackendToolUtils.java
@@ -110,27 +110,6 @@
     }
   }
 
-  /**
-   * Returns a string from the single valued attribute in provided entry.
-   *
-   * @param entry the entry
-   * @param attrName the attribute name
-   * @return the string value if available or {@code null}
-   */
-  public static String getStringSingleValuedAttribute(Entry entry, String attrName)
-  {
-    Iterator<Attribute> attributes = entry.getAllAttributes(attrName).iterator();
-    if (attributes.hasNext())
-    {
-      Attribute attribute = attributes.next();
-      for (ByteString byteString : attribute)
-      {
-        return byteString.toString();
-      }
-    }
-    return null;
-  }
-
   private static List<DN> getBaseDNsForEntry(final Entry configEntry) throws Exception
   {
     try
@@ -173,7 +152,7 @@
   {
     try
     {
-      return getStringSingleValuedAttribute(configEntry, ATTR_BACKEND_CLASS);
+      return configEntry.parseAttribute(ATTR_BACKEND_CLASS).asString();
     }
     catch (final Exception e)
     {
@@ -186,7 +165,7 @@
   {
     try
     {
-      return getStringSingleValuedAttribute(configEntry, ATTR_BACKEND_ID);
+      return configEntry.parseAttribute(ATTR_BACKEND_ID).asString();
     }
     catch (final Exception e)
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java
index 5ceb723..de50cdf 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/ListBackends.java
@@ -401,7 +401,7 @@
       String backendID = null;
       try
       {
-        backendID = BackendToolUtils.getStringSingleValuedAttribute(configEntry, ATTR_BACKEND_ID);
+        backendID = configEntry.parseAttribute(ATTR_BACKEND_ID).asString();
         if (backendID == null)
         {
           continue;
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
index 6a127cc..fa57322 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/dsreplication/ReplicationCliMain.java
@@ -1345,20 +1345,20 @@
         }
         sr = entryReader.readEntry();
       }
-
-      String newStartCSN = firstValueAsString(sr, "replicationCSN");
+      String newStartCSN = sr.parseAttribute("replicationCSN").asString();
       if (newStartCSN == null)
       {
         errPrintln(ERROR_RESET_CHANGE_NUMBER_NO_CSN_FOUND.get(newStartCN, uData.getSourceHostPort()));
         return ERROR_RESET_CHANGE_NUMBER_NO_CSN;
       }
-      String targetDN = firstValueAsString(sr, "targetDN");
+      DN targetDN;
       DN targetBaseDN = DN.rootDN();
       try
       {
+        targetDN = sr.parseAttribute("targetDN").asDN();
         for (DN dn : getCommonSuffixes(connSource, connDest, SuffixRelationType.REPLICATED))
         {
-          if (DN.valueOf(targetDN).isSubordinateOrEqualTo(dn) && dn.isSubordinateOrEqualTo(targetBaseDN))
+          if (targetDN.isSubordinateOrEqualTo(dn) && dn.isSubordinateOrEqualTo(targetBaseDN))
           {
             targetBaseDN = dn;
           }
@@ -1399,7 +1399,7 @@
     {
       SearchResultEntry sr =
           conn.getConnection().searchSingleEntry("", BASE_OBJECT, "objectclass=*", "lastChangeNumber");
-      return firstValueAsString(sr, "lastChangeNumber");
+      return sr.parseAttribute("lastChangeNumber").asString();
     }
     catch (LdapException e)
     {

--
Gitblit v1.10.0