From c3502b5d887989e12d6b653568ee0c20a90b6dd9 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 13 Mar 2007 19:43:19 +0000
Subject: [PATCH] Update the config file handler so that it will do something with the ConfigChangeResult objects that are returned from attempting to apply configuration changes. It will perform the following (in order of precedence):
---
opends/src/server/org/opends/server/extensions/ConfigFileHandler.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 97 insertions(+), 9 deletions(-)
diff --git a/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java b/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
index 276a905..e0b0de5 100644
--- a/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -42,6 +42,7 @@
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
+import java.util.List;
import java.util.TreeMap;
import java.util.zip.Deflater;
import java.util.zip.GZIPOutputStream;
@@ -1148,8 +1149,9 @@
// Notify all the add listeners that the entry has been added.
for (ConfigAddListener l : addListeners)
{
- // FIXME -- Do something with the result.
- ConfigChangeResult result = l.applyConfigurationAdd(newEntry);
+ handleConfigChangeResult(l.applyConfigurationAdd(newEntry),
+ newEntry.getDN(), l.getClass().getName(),
+ "applyConfigurationAdd");
}
}
finally
@@ -1295,8 +1297,9 @@
// Notify all the delete listeners that the entry has been removed.
for (ConfigDeleteListener l : deleteListeners)
{
- // FIXME -- Do something with the result.
- ConfigChangeResult result = l.applyConfigurationDelete(entry);
+ handleConfigChangeResult(l.applyConfigurationDelete(entry),
+ entry.getDN(), l.getClass().getName(),
+ "applyConfigurationDelete");
}
}
finally
@@ -1469,8 +1472,9 @@
// Notify all the change listeners of the update.
for (ConfigChangeListener l : changeListeners)
{
- // FIXME -- Do something with the result.
- ConfigChangeResult result = l.applyConfigurationChange(currentEntry);
+ handleConfigChangeResult(l.applyConfigurationChange(currentEntry),
+ currentEntry.getDN(), l.getClass().getName(),
+ "applyConfigurationChange");
}
@@ -1479,9 +1483,10 @@
{
for (ConfigurableComponent c : configurableComponents)
{
- // FIXME -- Do something with the result.
- ConfigChangeResult result = c.applyNewConfiguration(currentEntry,
- DynamicConstants.DEBUG_BUILD);
+ handleConfigChangeResult(c.applyNewConfiguration(currentEntry,
+ DynamicConstants.DEBUG_BUILD),
+ currentEntry.getDN(), c.getClass().getName(),
+ "applyNewConfiguration");
}
}
}
@@ -3172,5 +3177,88 @@
return alerts;
}
+
+
+
+ /**
+ * Examines the provided result and logs a message if appropriate. If the
+ * result code is anything other than {@code SUCCESS}, then it will log an
+ * error message. If the operation was successful but admin action is
+ * required, then it will log a warning message. If no action is required but
+ * messages were generated, then it will log an informational message.
+ *
+ * @param result The config change result object that
+ * @param entryDN The DN of the entry that was added, deleted, or
+ * modified.
+ * @param className The name of the class for the object that generated the
+ * provided result.
+ * @param methodName The name of the method that generated the provided
+ * result.
+ */
+ public void handleConfigChangeResult(ConfigChangeResult result, DN entryDN,
+ String className, String methodName)
+ {
+ if (result == null)
+ {
+ int msgID = MSGID_CONFIG_CHANGE_NO_RESULT;
+ String message = getMessage(msgID, String.valueOf(className),
+ String.valueOf(methodName),
+ String.valueOf(entryDN));
+ logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+ return;
+ }
+
+ ResultCode resultCode = result.getResultCode();
+ boolean adminActionRequired = result.adminActionRequired();
+ List<String> messages = result.getMessages();
+
+ StringBuilder messageBuffer = new StringBuilder();
+ if (messages != null)
+ {
+ for (String s : messages)
+ {
+ if (messageBuffer.length() > 0)
+ {
+ messageBuffer.append(" ");
+ }
+ messageBuffer.append(s);
+ }
+ }
+
+
+ if (resultCode != ResultCode.SUCCESS)
+ {
+ int msgID = MSGID_CONFIG_CHANGE_RESULT_ERROR;
+ String message = getMessage(msgID, String.valueOf(className),
+ String.valueOf(methodName),
+ String.valueOf(entryDN),
+ String.valueOf(resultCode),
+ adminActionRequired,
+ messageBuffer.toString());
+ logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
+ message, msgID);
+ }
+ else if (adminActionRequired)
+ {
+ int msgID = MSGID_CONFIG_CHANGE_RESULT_ACTION_REQUIRED;
+ String message = getMessage(msgID, String.valueOf(className),
+ String.valueOf(methodName),
+ String.valueOf(entryDN),
+ messageBuffer.toString());
+ logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_WARNING,
+ message, msgID);
+ }
+ else if (messageBuffer.length() > 0)
+ {
+ int msgID = MSGID_CONFIG_CHANGE_RESULT_MESSAGES;
+ String message = getMessage(msgID, String.valueOf(className),
+ String.valueOf(methodName),
+ String.valueOf(entryDN),
+ messageBuffer.toString());
+ logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.INFORMATIONAL,
+ message, msgID);
+ }
+ }
}
--
Gitblit v1.10.0