From 1649148841be6bc4ac6381d0592dc9ab52438044 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Sun, 02 Sep 2007 13:05:17 +0000
Subject: [PATCH] - [Issue 1481] Ability to set any JE property in config.ldif - [Issue 2031] provide core JE configurable attributes for FileSystemEntryCache - fixes to entry cache config manager for proper configuration, re-configuration, error reporting.

---
 opends/src/server/org/opends/server/extensions/EntryCacheCommon.java |   70 ++++++++++++++++++++++++++++++++--
 1 files changed, 65 insertions(+), 5 deletions(-)

diff --git a/opends/src/server/org/opends/server/extensions/EntryCacheCommon.java b/opends/src/server/org/opends/server/extensions/EntryCacheCommon.java
index 40caf11..e7641c3 100644
--- a/opends/src/server/org/opends/server/extensions/EntryCacheCommon.java
+++ b/opends/src/server/org/opends/server/extensions/EntryCacheCommon.java
@@ -95,6 +95,10 @@
     // or PHASE_APPLY.
     private boolean _isAcceptable;
 
+    // Indicates whether administrative action is required or not. Used when
+    // _configPhase is PHASE_APPLY.
+    private boolean _isAdminActionRequired;
+
     /**
      * Create an error handler.
      *
@@ -111,11 +115,12 @@
         ArrayList<Message>            errorMessages
         )
     {
-      _configPhase         = configPhase;
-      _unacceptableReasons = unacceptableReasons;
-      _errorMessages       = errorMessages;
-      _resultCode          = ResultCode.SUCCESS;
-      _isAcceptable        = true;
+      _configPhase           = configPhase;
+      _unacceptableReasons   = unacceptableReasons;
+      _errorMessages         = errorMessages;
+      _resultCode            = ResultCode.SUCCESS;
+      _isAcceptable          = true;
+      _isAdminActionRequired = false;
     }
 
     /**
@@ -135,6 +140,49 @@
       {
       case PHASE_INIT:
         {
+        _errorMessages.add (error);
+        _isAcceptable = isAcceptable;
+        break;
+        }
+      case PHASE_ACCEPTABLE:
+        {
+        _unacceptableReasons.add (error);
+        _isAcceptable = isAcceptable;
+        break;
+        }
+      case PHASE_APPLY:
+        {
+        _errorMessages.add (error);
+        _isAcceptable = isAcceptable;
+        if (_resultCode == ResultCode.SUCCESS)
+        {
+          _resultCode = resultCode;
+        }
+        break;
+        }
+      }
+    }
+
+    /**
+     * Report an error.
+     *
+     * @param error        the error to report
+     * @param isAcceptable <code>true</code> if the configuration is acceptable
+     * @param resultCode   the change result for the current configuration
+     * @param isAdminActionRequired <code>true</code> if administrative action
+     *                              is required or <code>false</code> otherwise
+     */
+    public void reportError(
+            Message error,
+            boolean isAcceptable,
+            ResultCode resultCode,
+            boolean isAdminActionRequired
+    )
+    {
+      switch (_configPhase)
+      {
+      case PHASE_INIT:
+        {
         logError (error);
         break;
         }
@@ -152,6 +200,7 @@
         {
           _resultCode = resultCode;
         }
+        _isAdminActionRequired = isAdminActionRequired;
         break;
         }
       }
@@ -212,6 +261,17 @@
     {
       return _configPhase;
     }
+
+    /**
+     * Get the current isAdminActionRequired flag as determined after apply
+     * action has been taken on a given configuration.
+     *
+     * @return the isAdminActionRequired flag
+     */
+    public boolean getIsAdminActionRequired()
+    {
+      return _isAdminActionRequired;
+    }
   } // ConfigErrorHandler
 
 

--
Gitblit v1.10.0