From e54a2046c8f4a385e42d0ce899d1761a2753d401 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 06 Nov 2014 15:25:24 +0000
Subject: [PATCH] OPENDJ-1624 NullPointerException while doing status with authentication

---
 opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java |  523 ++++++++++++----------------------------------
 opendj3-server-dev/src/server/org/opends/server/tools/status/StatusCli.java                      |   80 ++----
 opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java             |    2 
 3 files changed, 176 insertions(+), 429 deletions(-)

diff --git a/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java b/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
index 8e64368..acf9cb4 100644
--- a/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
+++ b/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/datamodel/ServerDescriptor.java
@@ -38,17 +38,18 @@
 import java.util.Set;
 
 import org.opends.guitools.controlpanel.util.ConfigFromDirContext;
-import org.opends.guitools.controlpanel.util.Utilities;
-
 import org.opends.quicksetup.UserData;
 import org.opends.server.tools.tasks.TaskEntry;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.DN;
 import org.opends.server.types.ObjectClass;
 import org.opends.server.types.OpenDsException;
-import com.forgerock.opendj.util.OperatingSystem;
 import org.opends.server.types.Schema;
 
+import com.forgerock.opendj.util.OperatingSystem;
+
+import static org.opends.guitools.controlpanel.datamodel.BasicMonitoringAttributes.*;
+import static org.opends.guitools.controlpanel.util.Utilities.*;
 import static org.opends.server.types.CommonSchemaElements.*;
 
 /**
@@ -57,80 +58,54 @@
  */
 public class ServerDescriptor
 {
+  private static String localHostName = UserData.getDefaultHostName();
+
   private ServerStatus status;
   private int openConnections;
   private Set<BackendDescriptor> backends = new HashSet<BackendDescriptor>();
-  private Set<ConnectionHandlerDescriptor> listeners =
-    new HashSet<ConnectionHandlerDescriptor>();
+  private Set<ConnectionHandlerDescriptor> listeners = new HashSet<ConnectionHandlerDescriptor>();
   private ConnectionHandlerDescriptor adminConnector;
   private Set<DN> administrativeUsers = new HashSet<DN>();
   private String installPath;
   private String instancePath;
   private String openDSVersion;
   private String javaVersion;
-  private ArrayList<OpenDsException> exceptions =
-    new ArrayList<OpenDsException>();
+  private ArrayList<OpenDsException> exceptions = new ArrayList<OpenDsException>();
   private boolean isWindowsServiceEnabled;
   private boolean isSchemaEnabled;
   private Schema schema;
 
   private CustomSearchResult rootMonitor;
-
   private CustomSearchResult jvmMemoryUsage;
-
   private CustomSearchResult systemInformation;
-
   private CustomSearchResult entryCaches;
-
   private CustomSearchResult workQueue;
 
   private Set<TaskEntry> taskEntries = new HashSet<TaskEntry>();
 
   private long runningTime = -1;
-
   private boolean isAuthenticated;
-
-  private static String localHostName = UserData.getDefaultHostName();
-
   private String hostName = localHostName;
-
   private boolean isLocal = true;
 
-  /**
-   * Enumeration indicating the status of the server.
-   *
-   */
+  /** Enumeration indicating the status of the server. */
   public enum ServerStatus
   {
-    /**
-     * Server Started.
-     */
+    /** Server Started. */
     STARTED,
-    /**
-     * Server Stopped.
-     */
+    /** Server Stopped. */
     STOPPED,
-    /**
-     * Server Starting.
-     */
+    /** Server Starting. */
     STARTING,
-    /**
-     * Server Stopping.
-     */
+    /** Server Stopping. */
     STOPPING,
-    /**
-     * Not connected to remote.
-     */
+    /** Not connected to remote. */
     NOT_CONNECTED_TO_REMOTE,
-    /**
-     * Status Unknown.
-     */
+    /** Status Unknown. */
     UNKNOWN
   }
 
-  /**
-   * Default constructor.
-   */
+  /** Default constructor. */
   public ServerDescriptor()
   {
   }
@@ -230,7 +205,7 @@
       {
         sameInstallAndInstance = instance.equals(install);
         if (!sameInstallAndInstance &&
-            (isLocal() || (OperatingSystem.isWindows())))
+            (isLocal() || OperatingSystem.isWindows()))
         {
           File f1 = new File(instance);
           File f2 = new File(install);
@@ -340,152 +315,44 @@
     this.taskEntries = Collections.unmodifiableSet(taskEntries);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public boolean equals(Object o)
   {
-    boolean equals = false;
-    if (this != o)
+    if (this == o)
     {
-      if (o instanceof ServerDescriptor)
-      {
-        ServerDescriptor desc = (ServerDescriptor)o;
-        equals = desc.getStatus() == getStatus();
-
-        if (equals)
-        {
-          equals = desc.isLocal() == isLocal();
-        }
-
-        if (equals)
-        {
-          equals = desc.isAuthenticated() == isAuthenticated();
-        }
-
-        if (equals)
-        {
-          equals = desc.getOpenConnections() == getOpenConnections();
-        }
-
-        if (equals)
-        {
-          if (desc.getInstallPath() == null)
-          {
-            equals = getInstallPath() == null;
-          }
-          else
-          {
-            equals = desc.getInstallPath().equals(getInstallPath());
-          }
-        }
-
-        if (equals)
-        {
-          if (desc.getInstancePath() == null)
-          {
-            equals = getInstancePath() == null;
-          }
-          else
-          {
-            equals = desc.getInstancePath().equals(getInstancePath());
-          }
-        }
-
-        if (equals)
-        {
-          if (desc.getJavaVersion() == null)
-          {
-            equals = getJavaVersion() == null;
-          }
-          else
-          {
-            equals = desc.getJavaVersion().equals(getJavaVersion());
-          }
-        }
-
-        if (equals)
-        {
-          if (desc.getOpenDSVersion() == null)
-          {
-            equals = getOpenDSVersion() == null;
-          }
-          else
-          {
-            equals = desc.getOpenDSVersion().equals(getOpenDSVersion());
-          }
-        }
-
-        if (equals)
-        {
-          equals = desc.getAdministrativeUsers().equals(
-              getAdministrativeUsers());
-        }
-
-        if (equals)
-        {
-          equals = desc.getConnectionHandlers().equals(getConnectionHandlers());
-        }
-
-        if (equals)
-        {
-          equals = desc.getBackends().equals(getBackends());
-        }
-
-        if (equals)
-        {
-          equals = desc.getExceptions().equals(getExceptions());
-        }
-
-        if (equals)
-        {
-          equals = desc.isSchemaEnabled() == isSchemaEnabled();
-        }
-
-        if (equals)
-        {
-          if (desc.getSchema() == null)
-          {
-            equals = getSchema() != null;
-          }
-          else if (getSchema() == null)
-          {
-            equals = false;
-          }
-          else
-          {
-            equals = areSchemasEqual(schema, desc.getSchema());
-          }
-        }
-
-        if (equals && OperatingSystem.isWindows())
-        {
-          equals =
-            desc.isWindowsServiceEnabled() == isWindowsServiceEnabled();
-        }
-
-        if (equals)
-        {
-          desc.getTaskEntries().equals(getTaskEntries());
-        }
-      }
+      return true;
     }
-    else
+    if (!(o instanceof ServerDescriptor))
     {
-      equals = true;
+      return false;
     }
-    return equals;
+
+    ServerDescriptor desc = (ServerDescriptor) o;
+    return desc.getStatus() == getStatus()
+        && desc.isLocal() == isLocal()
+        && desc.isAuthenticated() == isAuthenticated()
+        && desc.getOpenConnections() == getOpenConnections()
+        && areEqual(getInstallPath(), desc.getInstallPath())
+        && areEqual(getInstancePath(), desc.getInstancePath())
+        && areEqual(getJavaVersion(), desc.getJavaVersion())
+        && areEqual(getOpenDSVersion(), desc.getOpenDSVersion())
+        && areEqual(desc.getAdministrativeUsers(), getAdministrativeUsers())
+        && areEqual(desc.getConnectionHandlers(), getConnectionHandlers())
+        && areEqual(desc.getBackends(), getBackends())
+        && areEqual(desc.getExceptions(), getExceptions())
+        && desc.isSchemaEnabled() == isSchemaEnabled()
+        && areSchemasEqual(getSchema(), desc.getSchema())
+        && (!OperatingSystem.isWindows() || desc.isWindowsServiceEnabled() == isWindowsServiceEnabled())
+        && desc.getTaskEntries().equals(getTaskEntries());
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public int hashCode()
   {
-    return status.hashCode() + openConnections +
-    (String.valueOf(
-        installPath+openDSVersion+javaVersion+isAuthenticated)).
-        hashCode();
+    String s = installPath + openDSVersion + javaVersion + isAuthenticated;
+    return status.hashCode() + openConnections + s.hashCode();
   }
 
   /**
@@ -651,34 +518,21 @@
    */
   public boolean isWindows()
   {
-    boolean isWindows;
     if (isLocal())
     {
-      isWindows = OperatingSystem.isWindows();
+      return OperatingSystem.isWindows();
     }
-    else
+    CustomSearchResult sr = getSystemInformationMonitor();
+    if (sr == null)
     {
-      CustomSearchResult sr = getSystemInformationMonitor();
-      if (sr == null)
-      {
-        isWindows = false;
-      }
-      else
-      {
-        String os =
-          (String)Utilities.getFirstMonitoringValue(sr, "operatingSystem");
-        if (os == null)
-        {
-          isWindows = false;
-        }
-        else
-        {
-          OperatingSystem oSystem = OperatingSystem.forName(os);
-          isWindows = OperatingSystem.WINDOWS == oSystem;
-        }
-      }
+      return false;
     }
-    return isWindows;
+    String os = (String) getFirstMonitoringValue(sr, "operatingSystem");
+    if (os != null)
+    {
+      return OperatingSystem.WINDOWS == OperatingSystem.forName(os);
+    }
+    return false;
   }
 
   /**
@@ -692,69 +546,51 @@
    */
   public static boolean areSchemasEqual(Schema schema1, Schema schema2)
   {
-    boolean areEqual = schema1 == schema2;
-
-    if (!areEqual && (schema1 != null) && (schema2 != null))
+    if (schema1 == schema2)
     {
-      areEqual = true;
+      return true;
+    }
+    else if (schema2 == null)
+    {
+      return schema1 != null;
+    }
+    else if (schema1 == null)
+    {
+      return false;
+    }
 
-      // Just compare exhaustively objectclasses and attributes.
-      Map<String, AttributeType> attrs1 = schema1.getAttributeTypes();
-      Map<String, AttributeType> attrs2 = schema2.getAttributeTypes();
-      areEqual = attrs1.size() == attrs2.size();
+    // Just compare exhaustively objectclasses and attributes.
+    Map<String, AttributeType> attrs1 = schema1.getAttributeTypes();
+    Map<String, AttributeType> attrs2 = schema2.getAttributeTypes();
+    if (attrs1.size() == attrs2.size())
+    {
       for (String name : attrs1.keySet())
       {
-        if (!areEqual)
-        {
-          break;
-        }
-
         AttributeType attr1 = attrs1.get(name);
         AttributeType attr2 = attrs2.get(name);
-        if (attr2 != null)
+        if (attr2 == null && !areAttributesEqual(attr1, attr2))
         {
-          areEqual = areAttributesEqual(attr1, attr2);
+          return false;
         }
-        else
-        {
-          areEqual = false;
-        }
-      }
-      if (areEqual)
-      {
-        Map<String, ObjectClass> ocs1 = schema1.getObjectClasses();
-        Map<String, ObjectClass> ocs2 = schema2.getObjectClasses();
-        areEqual = ocs1.size() == ocs2.size();
-        for (String name : ocs1.keySet())
-        {
-          if (!areEqual)
-          {
-            break;
-          }
-
-          ObjectClass oc1 = ocs1.get(name);
-          ObjectClass oc2 = ocs2.get(name);
-          if (oc2 != null)
-          {
-            areEqual = areObjectClassesEqual(oc1, oc2);
-          }
-          else
-          {
-            areEqual = false;
-          }
-        }
-      }
-      if (areEqual)
-      {
-        areEqual = schema1.getMatchingRules().equals(
-            schema2.getMatchingRules());
-      }
-      if (areEqual)
-      {
-        areEqual = schema1.getSyntaxes().equals(schema2.getSyntaxes());
       }
     }
-    return areEqual;
+
+    Map<String, ObjectClass> ocs1 = schema1.getObjectClasses();
+    Map<String, ObjectClass> ocs2 = schema2.getObjectClasses();
+    if (ocs1.size() == ocs2.size())
+    {
+      for (String name : ocs1.keySet())
+      {
+        ObjectClass oc1 = ocs1.get(name);
+        ObjectClass oc2 = ocs2.get(name);
+        if (oc2 == null || !areObjectClassesEqual(oc1, oc2))
+        {
+          return false;
+        }
+      }
+    }
+    return areEqual(schema1.getMatchingRules(), schema2.getMatchingRules())
+        && areEqual(schema1.getSyntaxes(), schema2.getSyntaxes());
   }
 
   /**
@@ -766,63 +602,27 @@
    * @return <CODE>true</CODE> if the two schema attributes are equal and
    * <CODE>false</CODE> otherwise.
    */
-  private static final boolean areAttributesEqual(AttributeType attr1,
-      AttributeType attr2)
+  private static final boolean areAttributesEqual(AttributeType attr1, AttributeType attr2)
   {
-    boolean areEqual = attr1.getOID().equals(attr2.getOID()) &&
-    attr1.isCollective() == attr2.isCollective() &&
-    attr1.isNoUserModification() == attr2.isNoUserModification() &&
-    attr1.isObjectClass() == attr2.isObjectClass() &&
-    attr1.isObsolete() == attr2.isObsolete() &&
-    attr1.isOperational() == attr2.isOperational() &&
-    attr1.isSingleValue() == attr2.isSingleValue();
-
-    if (areEqual)
-    {
-      Object[] compareWithEqual = {attr1.getApproximateMatchingRule(),
-          attr2.getApproximateMatchingRule(),
-          getDefinitionWithFileName(attr1), getDefinitionWithFileName(attr2),
-          attr1.getDescription(), attr2.getDescription(),
-          attr1.getEqualityMatchingRule(), attr2.getEqualityMatchingRule(),
-          attr1.getOrderingMatchingRule(), attr2.getOrderingMatchingRule(),
-          attr1.getSubstringMatchingRule(), attr2.getSubstringMatchingRule(),
-          attr1.getSuperiorType(), attr2.getSuperiorType(),
-          attr1.getSyntax(), attr2.getSyntax(),
-          attr1.getSyntax().getOID(), attr2.getSyntax().getOID()
-      };
-
-      for (int i=0; i<compareWithEqual.length && areEqual; i++)
-      {
-        areEqual = areEqual(compareWithEqual[i], compareWithEqual[i+1]);
-        i ++;
-      }
-
-
-      if (areEqual)
-      {
-        Iterable<?>[] iterables = {attr1.getExtraProperties().keySet(),
-            attr2.getExtraProperties().keySet(),
-            attr1.getNormalizedNames(), attr2.getNormalizedNames(),
-            attr1.getUserDefinedNames(), attr2.getUserDefinedNames()};
-        for (int i=0; i<iterables.length && areEqual; i++)
-        {
-          Set<Object> set1 = new HashSet<Object>();
-          Set<Object> set2 = new HashSet<Object>();
-          for (Object o : iterables[i])
-          {
-            set1.add(o);
-          }
-          for (Object o : iterables[i+1])
-          {
-            set2.add(o);
-          }
-          areEqual = set1.equals(set2);
-          i ++;
-        }
-      }
-    }
-
-    return areEqual;
+    return attr1.getOID().equals(attr2.getOID())
+        && attr1.isCollective() == attr2.isCollective()
+        && attr1.isNoUserModification() == attr2.isNoUserModification()
+        && attr1.isObjectClass() == attr2.isObjectClass()
+        && attr1.isObsolete() == attr2.isObsolete()
+        && attr1.isOperational() == attr2.isOperational()
+        && attr1.isSingleValue() == attr2.isSingleValue()
+        && areEqual(attr1.getApproximateMatchingRule(), attr2.getApproximateMatchingRule())
+        && areEqual(getDefinitionWithFileName(attr1), getDefinitionWithFileName(attr2))
+        && areEqual(attr1.getDescription(), attr2.getDescription())
+        && areEqual(attr1.getEqualityMatchingRule(), attr2.getEqualityMatchingRule())
+        && areEqual(attr1.getOrderingMatchingRule(), attr2.getOrderingMatchingRule())
+        && areEqual(attr1.getSubstringMatchingRule(), attr2.getSubstringMatchingRule())
+        && areEqual(attr1.getSuperiorType(), attr2.getSuperiorType())
+        && areEqual(attr1.getSyntax(), attr2.getSyntax())
+        && areEqual(attr1.getSyntax().getOID(), attr2.getSyntax().getOID())
+        && areEqual(attr1.getExtraProperties().keySet(), attr2.getExtraProperties().keySet())
+        && areEqual(toSet(attr1.getNormalizedNames()), toSet(attr2.getNormalizedNames()))
+        && areEqual(toSet(attr1.getUserDefinedNames()), toSet(attr2.getUserDefinedNames()));
   }
 
   /**
@@ -834,54 +634,29 @@
    * @return <CODE>true</CODE> if the two schema objectclasses are equal and
    * <CODE>false</CODE> otherwise.
    */
-  private static final boolean areObjectClassesEqual(ObjectClass oc1,
-      ObjectClass oc2)
+  private static final boolean areObjectClassesEqual(ObjectClass oc1, ObjectClass oc2)
   {
-    boolean areEqual = oc1.getOID().equals(oc2.getOID()) &&
-    oc1.isExtensibleObject() == oc2.isExtensibleObject();
-    if (areEqual)
+    return oc1.getOID().equals(oc2.getOID())
+        && oc1.isExtensibleObject() == oc2.isExtensibleObject()
+        && areEqual(getDefinitionWithFileName(oc1), getDefinitionWithFileName(oc2))
+        && areEqual(oc1.getDescription(), oc2.getDescription())
+        && areEqual(oc1.getObjectClassType(), oc2.getObjectClassType())
+        && areEqual(oc1.getOptionalAttributes(), oc2.getOptionalAttributes())
+        && areEqual(oc1.getRequiredAttributes(), oc2.getRequiredAttributes())
+        && areEqual(oc1.getSuperiorClasses(), oc2.getSuperiorClasses())
+        && areEqual(oc1.getExtraProperties().keySet(), oc2.getExtraProperties().keySet())
+        && areEqual(toSet(oc1.getNormalizedNames()), toSet(oc2.getNormalizedNames()))
+        && areEqual(toSet(oc1.getUserDefinedNames()), toSet(oc2.getUserDefinedNames()));
+  }
+
+  private static Set<Object> toSet(Iterable<?> iterable)
+  {
+    Set<Object> s = new HashSet<Object>();
+    for (Object o : iterable)
     {
-      Object[] compareWithEqual = {
-          getDefinitionWithFileName(oc1), getDefinitionWithFileName(oc2),
-          oc1.getDescription(), oc2.getDescription(),
-          oc1.getObjectClassType(), oc2.getObjectClassType(),
-          oc1.getOptionalAttributes(), oc2.getOptionalAttributes(),
-          oc1.getRequiredAttributes(), oc2.getRequiredAttributes(),
-          oc1.getSuperiorClasses(), oc2.getSuperiorClasses()
-      };
-
-      for (int i=0; i<compareWithEqual.length && areEqual; i++)
-      {
-        areEqual = areEqual(compareWithEqual[i], compareWithEqual[i+1]);
-        i ++;
-      }
+      s.add(o);
     }
-
-    if (areEqual)
-    {
-      Iterable<?>[] iterables = {
-          oc1.getExtraProperties().keySet(), oc2.getExtraProperties().keySet(),
-          oc1.getNormalizedNames(), oc2.getNormalizedNames(),
-          oc1.getUserDefinedNames(), oc2.getUserDefinedNames()};
-      for (int i=0; i<iterables.length && areEqual; i++)
-      {
-        Set<Object> set1 = new HashSet<Object>();
-        Set<Object> set2 = new HashSet<Object>();
-        for (Object o : iterables[i])
-        {
-          set1.add(o);
-        }
-        for (Object o : iterables[i+1])
-        {
-          set2.add(o);
-        }
-        areEqual = set1.equals(set2);
-        i ++;
-      }
-    }
-
-    return areEqual;
-
+    return s;
   }
 
   /**
@@ -895,23 +670,11 @@
    */
   private static boolean areEqual(Object o1, Object o2)
   {
-    boolean areEqual = false;
     if (o1 != null)
     {
-      if (o2 != null)
-      {
-        areEqual = o1.equals(o2);
-      }
-      else
-      {
-        areEqual = false;
-      }
+      return o1.equals(o2);
     }
-    else
-    {
-      areEqual = o2 == null;
-    }
-    return areEqual;
+    return o2 == null;
   }
 
   /**
@@ -957,29 +720,27 @@
   public void setRootMonitor(CustomSearchResult rootMonitor)
   {
     this.rootMonitor = rootMonitor;
+    runningTime = computeRunningTime(rootMonitor);
+  }
+
+  private long computeRunningTime(CustomSearchResult rootMonitor)
+  {
     if (rootMonitor != null)
     {
       try
       {
-        String start = (String)Utilities.getFirstMonitoringValue(
-            rootMonitor,
-            BasicMonitoringAttributes.START_DATE.getAttributeName());
-        String current = (String)
-        Utilities.getFirstMonitoringValue(rootMonitor,
-            BasicMonitoringAttributes.CURRENT_DATE.getAttributeName());
+        String start = (String) getFirstMonitoringValue(rootMonitor, START_DATE.getAttributeName());
+        String current = (String) getFirstMonitoringValue(rootMonitor, CURRENT_DATE.getAttributeName());
         Date startTime = ConfigFromDirContext.utcParser.parse(start);
         Date currentTime = ConfigFromDirContext.utcParser.parse(current);
-        runningTime = currentTime.getTime() - startTime.getTime();
+        return currentTime.getTime() - startTime.getTime();
       }
       catch (Throwable t)
       {
-        runningTime = -1;
+        return -1;
       }
     }
-    else
-    {
-      runningTime = -1;
-    }
+    return -1;
   }
 
   /**
diff --git a/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java b/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
index 7a4a51a..f86e06d 100644
--- a/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -2509,6 +2509,8 @@
           }
           catch (Throwable t2)
           {
+            // Cannot convert it, just return it
+            return o;
           }
         }
       }
diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/status/StatusCli.java b/opendj3-server-dev/src/server/org/opends/server/tools/status/StatusCli.java
index d352528..6b7a379 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/status/StatusCli.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/status/StatusCli.java
@@ -494,7 +494,7 @@
    */
   private void writeStatusContents(ServerDescriptor desc, int maxLabelWidth)
   {
-    writeLabelValue(INFO_SERVER_STATUS_LABEL.get(), getStatus(desc), maxLabelWidth);
+    writeLabelValue(INFO_SERVER_STATUS_LABEL.get(), getStatus(desc).toString(), maxLabelWidth);
   }
 
   private LocalizableMessage getStatus(ServerDescriptor desc)
@@ -530,14 +530,14 @@
     writeLabelValue(INFO_CONNECTIONS_LABEL.get(), getNbConnection(desc), maxLabelWidth);
   }
 
-  private LocalizableMessage getNbConnection(ServerDescriptor desc)
+  private String getNbConnection(ServerDescriptor desc)
   {
     if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED)
     {
       final int nConn = desc.getOpenConnections();
       if (nConn >= 0)
       {
-        return LocalizableMessage.raw(String.valueOf(nConn));
+        return String.valueOf(nConn);
       }
       else if (!desc.isAuthenticated() || !desc.getExceptions().isEmpty())
       {
@@ -561,8 +561,7 @@
    */
   private void writeHostnameContents(ServerDescriptor desc, int maxLabelWidth)
   {
-    LocalizableMessage text = LocalizableMessage.raw(desc.getHostname());
-    writeLabelValue(INFO_HOSTNAME_LABEL.get(), text, maxLabelWidth);
+    writeLabelValue(INFO_HOSTNAME_LABEL.get(), desc.getHostname(), maxLabelWidth);
   }
 
   /**
@@ -582,7 +581,7 @@
       TreeSet<DN> ordered = new TreeSet<DN>(administrators);
       for (DN dn : ordered)
       {
-        writeLabelValue(INFO_ADMINISTRATIVE_USERS_LABEL.get(), LocalizableMessage.raw(dn.toString()), maxLabelWidth);
+        writeLabelValue(INFO_ADMINISTRATIVE_USERS_LABEL.get(), dn.toString(), maxLabelWidth);
       }
     }
     else
@@ -591,7 +590,7 @@
     }
   }
 
-  private LocalizableMessage getErrorText(ServerDescriptor desc)
+  private String getErrorText(ServerDescriptor desc)
   {
     if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED
         && (!desc.isAuthenticated() || !desc.getExceptions().isEmpty()))
@@ -612,9 +611,7 @@
    */
   private void writeInstallPathContents(ServerDescriptor desc, int maxLabelWidth)
   {
-    writeLabelValue(INFO_INSTALLATION_PATH_LABEL.get(),
-            LocalizableMessage.raw(desc.getInstallPath()),
-            maxLabelWidth);
+    writeLabelValue(INFO_INSTALLATION_PATH_LABEL.get(), desc.getInstallPath(), maxLabelWidth);
   }
 
   /**
@@ -628,9 +625,7 @@
    */
   private void writeInstancePathContents(ServerDescriptor desc, int maxLabelWidth)
   {
-    writeLabelValue(INFO_CTRL_PANEL_INSTANCE_PATH_LABEL.get(),
-            LocalizableMessage.raw(desc.getInstancePath()),
-            maxLabelWidth);
+    writeLabelValue(INFO_CTRL_PANEL_INSTANCE_PATH_LABEL.get(), desc.getInstancePath(), maxLabelWidth);
   }
 
   /**
@@ -643,10 +638,7 @@
    */
   private void writeVersionContents(ServerDescriptor desc, int maxLabelWidth)
   {
-    String openDSVersion = desc.getOpenDSVersion();
-    writeLabelValue(INFO_OPENDS_VERSION_LABEL.get(),
-            LocalizableMessage.raw(openDSVersion),
-            maxLabelWidth);
+    writeLabelValue(INFO_OPENDS_VERSION_LABEL.get(), desc.getOpenDSVersion(), maxLabelWidth);
   }
 
   /**
@@ -664,7 +656,7 @@
     writeLabelValue(INFO_JAVA_VERSION_LABEL.get(), getJavaVersion(desc), maxLabelWidth);
   }
 
-  private LocalizableMessage getJavaVersion(ServerDescriptor desc)
+  private String getJavaVersion(ServerDescriptor desc)
   {
     if (desc.getStatus() == ServerDescriptor.ServerStatus.STARTED)
     {
@@ -672,7 +664,7 @@
       {
         return getNotAvailableBecauseAuthenticationIsRequiredText();
       }
-      return LocalizableMessage.raw(desc.getJavaVersion());
+      return desc.getJavaVersion();
     }
     return getNotAvailableBecauseServerIsDownText();
   }
@@ -690,17 +682,10 @@
   private void writeAdminConnectorContents(ServerDescriptor desc, int maxLabelWidth)
   {
     ConnectionHandlerDescriptor adminConnector = desc.getAdminConnector();
-    if (adminConnector != null)
-    {
-      LocalizableMessage text = INFO_CTRL_PANEL_ADMIN_CONNECTOR_DESCRIPTION.get(adminConnector.getPort());
-      writeLabelValue(INFO_CTRL_PANEL_ADMIN_CONNECTOR_LABEL.get(), text, maxLabelWidth);
-    }
-    else
-    {
-      writeLabelValue(INFO_CTRL_PANEL_ADMIN_CONNECTOR_LABEL.get(),
-          INFO_NOT_AVAILABLE_SHORT_LABEL.get(),
-          maxLabelWidth);
-    }
+    LocalizableMessage text = adminConnector != null
+        ? INFO_CTRL_PANEL_ADMIN_CONNECTOR_DESCRIPTION.get(adminConnector.getPort())
+        : INFO_NOT_AVAILABLE_SHORT_LABEL.get();
+    writeLabelValue(INFO_CTRL_PANEL_ADMIN_CONNECTOR_LABEL.get(), text.toString(), maxLabelWidth);
   }
 
   /**
@@ -823,10 +808,10 @@
    *
    * @return the text.
    */
-  private LocalizableMessage getNotAvailableBecauseServerIsDownText()
+  private String getNotAvailableBecauseServerIsDownText()
   {
     displayMustStartLegend = true;
-    return INFO_NOT_AVAILABLE_SERVER_DOWN_CLI_LABEL.get();
+    return INFO_NOT_AVAILABLE_SERVER_DOWN_CLI_LABEL.get().toString();
   }
 
   /**
@@ -835,10 +820,10 @@
    *
    * @return the text.
    */
-  private LocalizableMessage getNotAvailableBecauseAuthenticationIsRequiredText()
+  private String getNotAvailableBecauseAuthenticationIsRequiredText()
   {
     displayMustAuthenticateLegend = true;
-    return INFO_NOT_AVAILABLE_AUTHENTICATION_REQUIRED_CLI_LABEL.get();
+    return INFO_NOT_AVAILABLE_AUTHENTICATION_REQUIRED_CLI_LABEL.get().toString();
   }
 
   /**
@@ -846,9 +831,9 @@
    *
    * @return the text.
    */
-  private LocalizableMessage getNotAvailableText()
+  private String getNotAvailableText()
   {
-    return INFO_NOT_AVAILABLE_LABEL.get();
+    return INFO_NOT_AVAILABLE_LABEL.get().toString();
   }
 
   /**
@@ -936,20 +921,20 @@
    return v.split("<br>");
   }
 
-  private LocalizableMessage getCellValue(Object v, ServerDescriptor desc)
+  private String getCellValue(Object v, ServerDescriptor desc)
   {
     if (v != null)
     {
       if (v instanceof String)
       {
-        return LocalizableMessage.raw((String) v);
+        return (String) v;
       }
       else if (v instanceof Integer)
       {
         int nEntries = ((Integer)v).intValue();
         if (nEntries >= 0)
         {
-          return LocalizableMessage.raw(String.valueOf(nEntries));
+          return String.valueOf(nEntries);
         }
         else if (!desc.isAuthenticated() || !desc.getExceptions().isEmpty())
         {
@@ -1010,7 +995,7 @@
       for (int j=0; j<tableModel.getColumnCount(); j++)
       {
         Object v = tableModel.getValueAt(i, j);
-        LocalizableMessage value = getValue(desc, isRunning, v);
+        String value = getValue(desc, isRunning, v);
 
         boolean doWrite = true;
         boolean isReplicated =
@@ -1030,7 +1015,7 @@
     }
   }
 
-  private LocalizableMessage getValue(ServerDescriptor desc, boolean isRunning, Object v)
+  private String getValue(ServerDescriptor desc, boolean isRunning, Object v)
   {
     if (v != null)
     {
@@ -1048,18 +1033,18 @@
       }
       else if (v instanceof String)
       {
-        return LocalizableMessage.raw((String) v);
+        return (String) v;
       }
       else if (v instanceof LocalizableMessage)
       {
-        return (LocalizableMessage) v;
+        return ((LocalizableMessage) v).toString();
       }
       else if (v instanceof Integer)
       {
         final int nEntries = ((Integer) v).intValue();
         if (nEntries >= 0)
         {
-          return LocalizableMessage.raw(String.valueOf(nEntries));
+          return String.valueOf(nEntries);
         }
         return getNotAvailableText(desc, isRunning);
       }
@@ -1068,10 +1053,10 @@
         throw new IllegalStateException("Unknown object type: " + v);
       }
     }
-    return LocalizableMessage.EMPTY;
+    return "";
   }
 
-  private LocalizableMessage getNotAvailableText(ServerDescriptor desc, boolean isRunning)
+  private String getNotAvailableText(ServerDescriptor desc, boolean isRunning)
   {
     if (!isRunning)
     {
@@ -1084,8 +1069,7 @@
     return getNotAvailableText();
   }
 
-  private void writeLabelValue(final LocalizableMessage label,
-      final LocalizableMessage value, final int maxLabelWidth)
+  private void writeLabelValue(final LocalizableMessage label, final String value, final int maxLabelWidth)
   {
     final LocalizableMessageBuilder buf = new LocalizableMessageBuilder();
     buf.append(label);

--
Gitblit v1.10.0