From 340c2c32c576a3496c6b89e887ccd000c05bf629 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 23 Dec 2014 11:47:22 +0000
Subject: [PATCH] BackendConfigManager.java: In applyConfiguration*(), replaced the triplet (resultCode, adminActionRequired, messages) with a single ConfigChangeResult object.

---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/BackendConfigManager.java |  141 ++++++++++++++++++++++-------------------------
 1 files changed, 66 insertions(+), 75 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/BackendConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/BackendConfigManager.java
index d348131..ea199fe 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/BackendConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/BackendConfigManager.java
@@ -26,7 +26,10 @@
  */
 package org.opends.server.core;
 
-import java.util.ArrayList;
+import static org.forgerock.opendj.ldap.ResultCode.*;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
@@ -56,10 +59,6 @@
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.WritabilityMode;
 
-import static org.forgerock.opendj.ldap.ResultCode.*;
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the configuration
  * for the set of backends defined in the Directory Server.  It will perform
@@ -402,10 +401,7 @@
   {
     DN                 backendDN           = cfg.dn();
     Backend<?>         backend             = registeredBackends.get(backendDN);
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // See if the entry contains an attribute that indicates whether the
     // backend should be enabled.
@@ -457,7 +453,7 @@
             // FIXME -- Do we need to send an admin alert?
           }
 
-          return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+          return ccr;
         } // else already disabled, no need to do anything.
       }
     }
@@ -465,10 +461,10 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_BACKEND_UNABLE_TO_DETERMINE_ENABLED_STATE.get(
-              backendDN, stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_BACKEND_UNABLE_TO_DETERMINE_ENABLED_STATE.get(backendDN,
+          stackTraceToSingleLineString(e)));
+      return ccr;
     }
 
 
@@ -497,26 +493,26 @@
           // It appears to be a valid backend class.  We'll return that the
           // change is successful, but indicate that some administrative
           // action is required.
-          messages.add(NOTE_CONFIG_BACKEND_ACTION_REQUIRED_TO_CHANGE_CLASS.get(
+          ccr.addMessage(NOTE_CONFIG_BACKEND_ACTION_REQUIRED_TO_CHANGE_CLASS.get(
               backendDN, backend.getClass().getName(), className));
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
         else
         {
           // It is not a valid backend class.  This is an error.
-          messages.add(ERR_CONFIG_BACKEND_CLASS_NOT_BACKEND.get(className, backendDN));
-          resultCode = ResultCode.CONSTRAINT_VIOLATION;
+          ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+          ccr.addMessage(ERR_CONFIG_BACKEND_CLASS_NOT_BACKEND.get(className, backendDN));
         }
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        return ccr;
       }
       catch (Exception e)
       {
         logger.traceException(e);
 
-        messages.add(ERR_CONFIG_BACKEND_CANNOT_INSTANTIATE.get(
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_CONFIG_BACKEND_CANNOT_INSTANTIATE.get(
                 className, backendDN, stackTraceToSingleLineString(e)));
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        return ccr;
       }
     }
 
@@ -532,9 +528,9 @@
       catch (Exception e)
       {
         // It is not a valid backend class.  This is an error.
-        messages.add(ERR_CONFIG_BACKEND_CLASS_NOT_BACKEND.get(className, backendDN));
-        resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.addMessage(ERR_CONFIG_BACKEND_CLASS_NOT_BACKEND.get(className, backendDN));
+        return ccr;
       }
 
 
@@ -555,10 +551,10 @@
           logger.error(message);
           // FIXME -- Do we need to send an admin alert?
 
-          resultCode = ResultCode.CONSTRAINT_VIOLATION;
-          adminActionRequired = true;
-          messages.add(message);
-          return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+          ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+          ccr.setAdminActionRequired(true);
+          ccr.addMessage(message);
+          return ccr;
         }
       }
       catch (Exception e)
@@ -570,10 +566,10 @@
         logger.error(message);
         // FIXME -- Do we need to send an admin alert?
 
-        resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        adminActionRequired = true;
-        messages.add(message);
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.setAdminActionRequired(true);
+        ccr.addMessage(message);
+        return ccr;
       }
 
 
@@ -585,9 +581,9 @@
       {
         logger.traceException(e);
 
-        messages.add(ERR_CONFIG_BACKEND_CANNOT_INITIALIZE.get(
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_CONFIG_BACKEND_CANNOT_INITIALIZE.get(
                 className, backendDN, stackTraceToSingleLineString(e)));
-        resultCode = DirectoryServer.getServerErrorResultCode();
 
         try
         {
@@ -608,7 +604,7 @@
           // FIXME -- Do we need to send an admin alert?
         }
 
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        return ccr;
       }
 
 
@@ -634,21 +630,20 @@
         logger.warn(message);
 
         // FIXME -- Do we need to send an admin alert?
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(message);
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(message);
+        return ccr;
       }
 
 
       registeredBackends.put(backendDN, backend);
     }
-    else if (resultCode == ResultCode.SUCCESS && backend != null)
+    else if (ccr.getResultCode() == ResultCode.SUCCESS && backend != null)
     {
       backend.setWritabilityMode(writabilityMode);
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -734,9 +729,7 @@
   public ConfigChangeResult applyConfigurationAdd(BackendCfg cfg)
   {
     DN                backendDN           = cfg.dn();
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Register as a change listener for this backend entry so that we will
@@ -753,8 +746,8 @@
       // indicate that it won't be enabled and return.
       LocalizableMessage message = INFO_CONFIG_BACKEND_DISABLED.get(backendDN);
       logger.debug(message);
-      messages.add(message);
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.addMessage(message);
+      return ccr;
     }
 
 
@@ -766,8 +759,8 @@
     {
       LocalizableMessage message = WARN_CONFIG_BACKEND_DUPLICATE_BACKEND_ID.get(backendDN, backendID);
       logger.warn(message);
-      messages.add(message);
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.addMessage(message);
+      return ccr;
     }
 
 
@@ -789,10 +782,10 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_BACKEND_CANNOT_INSTANTIATE.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_BACKEND_CANNOT_INSTANTIATE.get(
           className, backendDN, stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -814,10 +807,10 @@
         logger.error(message);
         // FIXME -- Do we need to send an admin alert?
 
-        resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        adminActionRequired = true;
-        messages.add(message);
-        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+        ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.setAdminActionRequired(true);
+        ccr.addMessage(message);
+        return ccr;
       }
     }
     catch (Exception e)
@@ -829,10 +822,10 @@
       logger.error(message);
       // FIXME -- Do we need to send an admin alert?
 
-      resultCode = ResultCode.CONSTRAINT_VIOLATION;
-      adminActionRequired = true;
-      messages.add(message);
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+      ccr.setAdminActionRequired(true);
+      ccr.addMessage(message);
+      return ccr;
     }
 
 
@@ -845,9 +838,9 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_BACKEND_CANNOT_INITIALIZE.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_BACKEND_CANNOT_INITIALIZE.get(
               className, backendDN, stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
 
       try
       {
@@ -866,7 +859,7 @@
         // FIXME -- Do we need to send an admin alert?
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -893,13 +886,13 @@
       logger.error(message);
 
       // FIXME -- Do we need to send an admin alert?
-      messages.add(message);
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(message);
+      return ccr;
     }
 
     registeredBackends.put(backendDN, backend);
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   @SuppressWarnings("unchecked")
@@ -961,17 +954,14 @@
   public ConfigChangeResult applyConfigurationDelete(BackendCfg configEntry)
   {
     DN                backendDN           = configEntry.dn();
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // See if this backend config manager has a backend registered with the
     // provided DN.  If not, then we don't care if the entry is deleted.
     Backend<?> backend = registeredBackends.get(backendDN);
     if (backend == null)
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     // See if the backend has any subordinate backends.  If so, then it is not
@@ -979,8 +969,9 @@
     Backend<?>[] subBackends = backend.getSubordinateBackends();
     if (subBackends != null && subBackends.length > 0)
     {
-      messages.add(NOTE_CONFIG_BACKEND_CANNOT_REMOVE_BACKEND_WITH_SUBORDINATES.get(backendDN));
-      return new ConfigChangeResult(UNWILLING_TO_PERFORM, adminActionRequired, messages);
+      ccr.setResultCode(UNWILLING_TO_PERFORM);
+      ccr.addMessage(NOTE_CONFIG_BACKEND_CANNOT_REMOVE_BACKEND_WITH_SUBORDINATES.get(backendDN));
+      return ccr;
     }
 
     registeredBackends.remove(backendDN);
@@ -1022,7 +1013,7 @@
       // FIXME -- Do we need to send an admin alert?
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   @SuppressWarnings({ "unchecked", "rawtypes" })

--
Gitblit v1.10.0