From 430d063aee2d08f8226131875ff23bc7652adc41 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 29 Oct 2008 07:26:36 +0000
Subject: [PATCH] Modify some code to create unmodifiable collections only once in the life cycle of the descriptor objects.

---
 opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java |   69 +++++++++++++++++++++++++++-------
 1 files changed, 55 insertions(+), 14 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java b/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
index 7c1e8f4..b395fe4 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
@@ -110,7 +110,11 @@
 
   private static ControlPanelInfo instance;
 
-  private ControlPanelInfo()
+  /**
+   * Default constructor.
+   *
+   */
+  protected ControlPanelInfo()
   {
   }
 
@@ -370,12 +374,55 @@
   }
 
   /**
+   * Returns an empty new server descriptor instance.
+   * @return an empty new server descriptor instance.
+   */
+  protected ServerDescriptor createNewServerDescriptorInstance()
+  {
+    return new ServerDescriptor();
+  }
+
+  /**
+   * Returns a reader that will read the configuration from a file.
+   * @return a reader that will read the configuration from a file.
+   */
+  protected ConfigFromFile createNewConfigFromFileReader()
+  {
+    return new ConfigFromFile();
+  }
+
+  /**
+   * Returns a reader that will read the configuration from a dir context.
+   * @return a reader that will read the configuration from a dir context.
+   */
+  protected ConfigFromDirContext createNewConfigFromDirContextReader()
+  {
+    return new ConfigFromDirContext();
+  }
+
+  /**
+   * Updates the contents of the server descriptor with the provider reader.
+   * @param reader the configuration reader.
+   * @param desc the server descriptor.
+   */
+  protected void updateServerDescriptor(ConfigReader reader,
+      ServerDescriptor desc)
+  {
+    desc.setExceptions(reader.getExceptions());
+    desc.setAdministrativeUsers(reader.getAdministrativeUsers());
+    desc.setBackends(reader.getBackends());
+    desc.setConnectionHandlers(reader.getConnectionHandlers());
+    desc.setAdminConnector(reader.getAdminConnector());
+    desc.setSchema(reader.getSchema());
+    desc.setSchemaEnabled(reader.isSchemaEnabled());
+  }
+  /**
    * Regenerates the last found ServerDescriptor object.
    *
    */
   public synchronized void regenerateDescriptor()
   {
-    ServerDescriptor desc = new ServerDescriptor();
+    ServerDescriptor desc = createNewServerDescriptorInstance();
     InitialLdapContext ctx = getDirContext();
     desc.setInstallPath(Utilities.getServerRootDirectory());
     boolean windowsServiceEnabled = false;
@@ -442,7 +489,7 @@
           userDataCtx = null;
         }
       }
-      reader = new ConfigFromFile();
+      reader = createNewConfigFromFileReader();
       ((ConfigFromFile)reader).readConfiguration();
       desc.setAuthenticated(false);
     }
@@ -453,12 +500,12 @@
       desc.setStatus(ServerDescriptor.ServerStatus.STARTED);
       if (ctx == null)
       {
-        reader = new ConfigFromFile();
+        reader = createNewConfigFromFileReader();
         ((ConfigFromFile)reader).readConfiguration();
       }
       else
       {
-        reader = new ConfigFromDirContext();
+        reader = createNewConfigFromDirContextReader();
         ((ConfigFromDirContext)reader).readConfiguration(ctx);
         if (reader.getExceptions().size() > 0)
         {
@@ -479,7 +526,7 @@
           if (!connectionWorks)
           {
             // Try with offline info
-            reader = new ConfigFromFile();
+            reader = createNewConfigFromFileReader();
             ((ConfigFromFile)reader).readConfiguration();
             try
             {
@@ -518,16 +565,10 @@
     {
       desc.setStatus(ServerDescriptor.ServerStatus.STOPPED);
       desc.setAuthenticated(false);
-      reader = new ConfigFromFile();
+      reader = createNewConfigFromFileReader();
       ((ConfigFromFile)reader).readConfiguration();
     }
-    desc.setExceptions(reader.getExceptions());
-    desc.setAdministrativeUsers(reader.getAdministrativeUsers());
-    desc.setBackends(reader.getBackends());
-    desc.setConnectionHandlers(reader.getConnectionHandlers());
-    desc.setAdminConnector(reader.getAdminConnector());
-    desc.setSchema(reader.getSchema());
-    desc.setSchemaEnabled(reader.isSchemaEnabled());
+    updateServerDescriptor(reader, desc);
 
     if ((serverDesc == null) || !serverDesc.equals(desc))
     {

--
Gitblit v1.10.0