From 19fb5731ffbe883fe8375ee9b785984c8ccf1880 Mon Sep 17 00:00:00 2001
From: coulbeck <coulbeck@localhost>
Date: Fri, 20 Apr 2007 22:23:11 +0000
Subject: [PATCH] Migrate the BackendConfigManager to the new configuration framework.
---
opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java | 551 ++++++++++++++++--------------------------------------
1 files changed, 167 insertions(+), 384 deletions(-)
diff --git a/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java b/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java
index a08561f..1684bc4 100644
--- a/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java
+++ b/opends/src/server/org/opends/server/backends/jeb/ConfigurableEnvironment.java
@@ -26,52 +26,30 @@
*/
package org.opends.server.backends.jeb;
-import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
-import com.sleepycat.je.config.ConfigParam;
-import com.sleepycat.je.config.EnvironmentParams;
-import org.opends.server.api.ConfigurableComponent;
-import org.opends.server.config.BooleanConfigAttribute;
-import org.opends.server.config.IntegerConfigAttribute;
-import org.opends.server.config.IntegerWithUnitConfigAttribute;
-import org.opends.server.config.ConfigAttribute;
import org.opends.server.config.ConfigConstants;
-import org.opends.server.config.ConfigEntry;
import org.opends.server.config.ConfigException;
-import org.opends.server.config.StringConfigAttribute;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.ConfigChangeResult;
-import org.opends.server.types.DN;
-import org.opends.server.types.ResultCode;
+import org.opends.server.types.DebugLogLevel;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
+import java.lang.reflect.Method;
-import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.messages.JebMessages.*;
-import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
+import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import org.opends.server.admin.std.server.JEBackendCfg;
+import org.opends.server.admin.std.meta.JEBackendCfgDefn;
+import org.opends.server.admin.DurationPropertyDefinition;
+import org.opends.server.admin.BooleanPropertyDefinition;
+import org.opends.server.admin.PropertyDefinition;
/**
- * This class represents a JE environment handle that can be configured by the
- * Directory Server as a configurable component.
+ * This class maps JE properties to configuration attributes.
*/
-public class ConfigurableEnvironment implements ConfigurableComponent
+public class ConfigurableEnvironment
{
/**
- * The DN of the configuration entry with which the environment is
- * associated.
- */
- private DN configDN;
-
- /**
- * The JE environment handle.
- */
- private Environment environment;
-
- /**
* The name of the attribute which configures the database cache size as a
* percentage of Java VM heap size.
*/
@@ -183,208 +161,172 @@
/**
- * A map of JE property names to their associated configuration attribute.
+ * A map of JE property names to the corresponding configuration attribute.
*/
- private static HashMap<String, ConfigAttribute> configAttrMap =
- new HashMap<String, ConfigAttribute>();
+ private static HashMap<String, String> attrMap =
+ new HashMap<String, String>();
/**
- * A list of registered environment configuration attributes.
+ * A map of configuration attribute names to the corresponding configuration
+ * object getter method.
*/
- private static ArrayList<ConfigAttribute> configAttrList =
- new ArrayList<ConfigAttribute>();
+ private static HashMap<String,Method> methodMap =
+ new HashMap<String, Method>();
-
- private static final ConfigAttribute CONFIG_ATTR_CACHE_PERCENT;
- private static final ConfigAttribute CONFIG_ATTR_CACHE_SIZE;
- private static final ConfigAttribute CONFIG_ATTR_TXN_NO_SYNC;
- private static final ConfigAttribute CONFIG_ATTR_TXN_WRITE_NO_SYNC;
- private static final ConfigAttribute CONFIG_ATTR_RUN_CLEANER;
- private static final ConfigAttribute CONFIG_ATTR_CLEANER_MIN_UTILIZATION;
- private static final ConfigAttribute CONFIG_ATTR_EVICTOR_LRU_ONLY;
- private static final ConfigAttribute CONFIG_ATTR_EVICTOR_NODES_PER_SCAN;
- private static final ConfigAttribute CONFIG_ATTR_LOG_FILE_MAX;
- private static final ConfigAttribute CONFIG_ATTR_LOGGING_FILE_HANDLER_ON;
- private static final ConfigAttribute CONFIG_ATTR_LOGGING_LEVEL;
- private static final ConfigAttribute CONFIG_ATTR_CHECKPOINTER_BYTES_INTERVAL;
- private static final ConfigAttribute CONFIG_ATTR_CHECKPOINTER_WAKEUP_INTERVAL;
- private static final ConfigAttribute CONFIG_ATTR_NUM_LOCK_TABLES;
- private static final ConfigAttribute CONFIG_ATTR_NUM_CLEANER_THREADS;
+ /**
+ * A map of configuration attribute names to the corresponding configuration
+ * PropertyDefinition.
+ */
+ private static HashMap<String,PropertyDefinition> defnMap =
+ new HashMap<String, PropertyDefinition>();
/**
- * Register an environment property and its associated configuration
- * attribute.
+ * Register a JE property and its corresponding configuration attribute.
*
* @param propertyName The name of the JE property to be registered.
- * @param configAttr The configuration attribute associated with the
- * property.
+ * @param attrName The name of the configuration attribute associated
+ * with the property.
+ * @throws Exception If there is an error in the attribute name.
*/
- private static void registerPropertyAttribute(String propertyName,
- ConfigAttribute configAttr)
+ private static void registerProp(String propertyName, String attrName)
+ throws Exception
{
- configAttrMap.put(propertyName, configAttr);
- configAttrList.add(configAttr);
+ // Strip off NAME_PREFIX_CFG.
+ String baseName = attrName.substring(7);
+
+
+ // Convert hyphenated to camel case.
+ StringBuilder builder = new StringBuilder();
+ boolean capitalize = true;
+ for (int i = 0; i < baseName.length(); i++)
+ {
+ char c = baseName.charAt(i);
+ if (c == '-')
+ {
+ capitalize = true;
+ }
+ else
+ {
+ if (capitalize)
+ {
+ builder.append(Character.toUpperCase(c));
+ }
+ else
+ {
+ builder.append(c);
+ }
+ capitalize = false;
+ }
+ }
+ String methodBaseName = builder.toString();
+
+ Class configClass = JEBackendCfg.class;
+ JEBackendCfgDefn defn = JEBackendCfgDefn.getInstance();
+ Class defClass = defn.getClass();
+
+ PropertyDefinition propDefn =
+ (PropertyDefinition)defClass.getMethod("get" + methodBaseName +
+ "PropertyDefinition").invoke(defn);
+
+ String methodName;
+ if (propDefn instanceof BooleanPropertyDefinition)
+ {
+ methodName = "is" + methodBaseName;
+ }
+ else
+ {
+ methodName = "get" + methodBaseName;
+ }
+
+ defnMap.put(attrName, propDefn);
+ methodMap.put(attrName, configClass.getMethod(methodName));
+ attrMap.put(propertyName, attrName);
+ }
+
+
+ /**
+ * Get the name of the configuration attribute associated with a JE property.
+ * @param jeProperty The name of the JE property.
+ * @return The name of the associated configuration attribute.
+ */
+ public static String getAttributeForProperty(String jeProperty)
+ {
+ return attrMap.get(jeProperty);
+ }
+
+ /**
+ * Get the value of a JE property that is mapped to a configuration attribute.
+ * @param cfg The configuration containing the property values.
+ * @param attrName The conriguration attribute type name.
+ * @return The string value of the JE property.
+ */
+ private static String getPropertyValue(JEBackendCfg cfg, String attrName)
+ {
+ try
+ {
+ PropertyDefinition propDefn = defnMap.get(attrName);
+ Method method = methodMap.get(attrName);
+
+ if (propDefn instanceof DurationPropertyDefinition)
+ {
+ Long value = (Long)method.invoke(cfg);
+
+ // JE durations are in microseconds so we must convert.
+ DurationPropertyDefinition durationPropDefn =
+ (DurationPropertyDefinition)propDefn;
+ value = 1000*durationPropDefn.getBaseUnit().getDuration(value);
+
+ return String.valueOf(value);
+ }
+ else
+ {
+ Object value = method.invoke(cfg);
+ return String.valueOf(value);
+ }
+ }
+ catch (Exception e)
+ {
+ if (debugEnabled())
+ {
+ debugCaught(DebugLogLevel.ERROR, e);
+ }
+ return "";
+ }
}
static
{
- HashMap<String, Double> memoryUnits = new HashMap<String, Double>();
- memoryUnits.put(SIZE_UNIT_BYTES_ABBR, 1D);
- memoryUnits.put(SIZE_UNIT_BYTES_FULL, 1D);
- memoryUnits.put(SIZE_UNIT_KILOBYTES_ABBR, 1000D);
- memoryUnits.put(SIZE_UNIT_KILOBYTES_FULL, 1000D);
- memoryUnits.put(SIZE_UNIT_MEGABYTES_ABBR, 1000000D);
- memoryUnits.put(SIZE_UNIT_MEGABYTES_FULL, 1000000D);
- memoryUnits.put(SIZE_UNIT_GIGABYTES_ABBR, 1000000000D);
- memoryUnits.put(SIZE_UNIT_GIGABYTES_FULL, 1000000000D);
- memoryUnits.put(SIZE_UNIT_KIBIBYTES_ABBR, 1024D);
- memoryUnits.put(SIZE_UNIT_KIBIBYTES_FULL, 1024D);
- memoryUnits.put(SIZE_UNIT_MEBIBYTES_ABBR, (double) (1024 * 1024));
- memoryUnits.put(SIZE_UNIT_MEBIBYTES_FULL, (double) (1024 * 1024));
- memoryUnits.put(SIZE_UNIT_GIBIBYTES_ABBR, (double) (1024 * 1024 * 1024));
- memoryUnits.put(SIZE_UNIT_GIBIBYTES_FULL, (double) (1024 * 1024 * 1024));
-
- // JE time intervals are expressed in microseconds.
- HashMap<String, Double> timeUnits = new HashMap<String, Double>();
- timeUnits.put(TIME_UNIT_MICROSECONDS_ABBR, 1D);
- timeUnits.put(TIME_UNIT_MICROSECONDS_FULL, 1D);
- timeUnits.put(TIME_UNIT_MILLISECONDS_ABBR, 1000D);
- timeUnits.put(TIME_UNIT_MILLISECONDS_FULL, 1000D);
- timeUnits.put(TIME_UNIT_SECONDS_ABBR, 1000000D);
- timeUnits.put(TIME_UNIT_SECONDS_FULL, 1000000D);
- timeUnits.put(TIME_UNIT_MINUTES_ABBR, (double) (60 * 1000000));
- timeUnits.put(TIME_UNIT_MINUTES_FULL, (double) (60 * 1000000));
-
- String msg;
-
- // Create configuration attributes for the JE properties that
- // can be configured through the Directory Server interfaces.
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_DATABASE_TXN_NO_SYNC);
- CONFIG_ATTR_TXN_NO_SYNC =
- new BooleanConfigAttribute(ATTR_DATABASE_TXN_NO_SYNC,
- msg, false);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_DATABASE_TXN_WRITE_NO_SYNC);
- CONFIG_ATTR_TXN_WRITE_NO_SYNC =
- new BooleanConfigAttribute(ATTR_DATABASE_TXN_WRITE_NO_SYNC,
- msg, false);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_DATABASE_CACHE_PERCENT);
- CONFIG_ATTR_CACHE_PERCENT =
- new IntegerConfigAttribute(ATTR_DATABASE_CACHE_PERCENT, msg, true,
- false, false, true, 1, true, 90);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_DATABASE_CACHE_SIZE);
- CONFIG_ATTR_CACHE_SIZE =
- new IntegerWithUnitConfigAttribute(ATTR_DATABASE_CACHE_SIZE, msg,
- false, memoryUnits,
- true, 0, false, 0);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_DATABASE_RUN_CLEANER);
- CONFIG_ATTR_RUN_CLEANER =
- new BooleanConfigAttribute(ATTR_DATABASE_RUN_CLEANER,
- msg, false);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_CLEANER_MIN_UTILIZATION);
- CONFIG_ATTR_CLEANER_MIN_UTILIZATION =
- new IntegerConfigAttribute(ATTR_CLEANER_MIN_UTILIZATION, msg, true,
- false, true, true, 0, true, 100);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_EVICTOR_LRU_ONLY);
- CONFIG_ATTR_EVICTOR_LRU_ONLY =
- new BooleanConfigAttribute(ATTR_EVICTOR_LRU_ONLY, msg, true);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_EVICTOR_NODES_PER_SCAN);
- CONFIG_ATTR_EVICTOR_NODES_PER_SCAN =
- new IntegerConfigAttribute(ATTR_EVICTOR_NODES_PER_SCAN, msg, false,
- false, true, true, 1, true, 1000);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_DATABASE_LOG_FILE_MAX);
- CONFIG_ATTR_LOG_FILE_MAX =
- new IntegerWithUnitConfigAttribute(ATTR_DATABASE_LOG_FILE_MAX, msg,
- false, memoryUnits,
- true, 1000000, true, 4294967296L);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_LOGGING_FILE_HANDLER_ON);
- CONFIG_ATTR_LOGGING_FILE_HANDLER_ON =
- new BooleanConfigAttribute(ATTR_LOGGING_FILE_HANDLER_ON, msg, true);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_LOGGING_LEVEL);
- CONFIG_ATTR_LOGGING_LEVEL =
- new StringConfigAttribute(ATTR_LOGGING_LEVEL, msg, false, false, true);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_CHECKPOINT_BYTES_INTERVAL);
- CONFIG_ATTR_CHECKPOINTER_BYTES_INTERVAL =
- new IntegerWithUnitConfigAttribute(ATTR_CHECKPOINTER_BYTES_INTERVAL,
- msg, true, memoryUnits,
- true, 0, false, 0);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_CHECKPOINT_WAKEUP_INTERVAL);
- CONFIG_ATTR_CHECKPOINTER_WAKEUP_INTERVAL =
- new IntegerWithUnitConfigAttribute(ATTR_CHECKPOINTER_WAKEUP_INTERVAL,
- msg, true, timeUnits,
- true, 1000000, false, 0);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_NUM_LOCK_TABLES);
- CONFIG_ATTR_NUM_LOCK_TABLES =
- new IntegerConfigAttribute(ATTR_NUM_LOCK_TABLES, msg, false,
- false, true, true, 1, true, 32767);
-
- msg = getMessage(MSGID_CONFIG_DESCRIPTION_NUM_CLEANER_THREADS);
- CONFIG_ATTR_NUM_CLEANER_THREADS =
- new IntegerConfigAttribute(ATTR_NUM_CLEANER_THREADS, msg, false,
- false, false, true, 1, false, 0);
-
// Register the parameters that have JE property names.
- registerPropertyAttribute("je.maxMemoryPercent",
- CONFIG_ATTR_CACHE_PERCENT);
- registerPropertyAttribute("je.maxMemory",
- CONFIG_ATTR_CACHE_SIZE);
- registerPropertyAttribute("je.cleaner.minUtilization",
- CONFIG_ATTR_CLEANER_MIN_UTILIZATION);
- registerPropertyAttribute("je.env.runCleaner",
- CONFIG_ATTR_RUN_CLEANER);
- registerPropertyAttribute("je.evictor.lruOnly",
- CONFIG_ATTR_EVICTOR_LRU_ONLY);
- registerPropertyAttribute("je.evictor.nodesPerScan",
- CONFIG_ATTR_EVICTOR_NODES_PER_SCAN);
- registerPropertyAttribute("je.log.fileMax",
- CONFIG_ATTR_LOG_FILE_MAX);
- registerPropertyAttribute("java.util.logging.FileHandler.on",
- CONFIG_ATTR_LOGGING_FILE_HANDLER_ON);
- registerPropertyAttribute("java.util.logging.level",
- CONFIG_ATTR_LOGGING_LEVEL);
- registerPropertyAttribute("je.checkpointer.bytesInterval",
- CONFIG_ATTR_CHECKPOINTER_BYTES_INTERVAL);
- registerPropertyAttribute("je.checkpointer.wakeupInterval",
- CONFIG_ATTR_CHECKPOINTER_WAKEUP_INTERVAL);
- registerPropertyAttribute("je.lock.nLockTables",
- CONFIG_ATTR_NUM_LOCK_TABLES);
- registerPropertyAttribute("je.cleaner.threads",
- CONFIG_ATTR_NUM_CLEANER_THREADS);
-
- // These parameters do not have JE property names.
- configAttrList.add(CONFIG_ATTR_TXN_NO_SYNC);
- configAttrList.add(CONFIG_ATTR_TXN_WRITE_NO_SYNC);
- }
-
-
-
- /**
- * Constructs a configurable environment.
- *
- * @param configDN The DN of the configuration entry with which the
- * environment is associated.
- * @param environment The JE environment handle.
- */
- public ConfigurableEnvironment(DN configDN, Environment environment)
- {
- this.configDN = configDN;
- this.environment = environment;
+ try
+ {
+ registerProp("je.maxMemoryPercent", ATTR_DATABASE_CACHE_PERCENT);
+ registerProp("je.maxMemory", ATTR_DATABASE_CACHE_SIZE);
+ registerProp("je.cleaner.minUtilization", ATTR_CLEANER_MIN_UTILIZATION);
+ registerProp("je.env.runCleaner", ATTR_DATABASE_RUN_CLEANER);
+ registerProp("je.evictor.lruOnly", ATTR_EVICTOR_LRU_ONLY);
+ registerProp("je.evictor.nodesPerScan", ATTR_EVICTOR_NODES_PER_SCAN);
+ registerProp("je.log.fileMax", ATTR_DATABASE_LOG_FILE_MAX);
+ registerProp("java.util.logging.FileHandler.on",
+ ATTR_LOGGING_FILE_HANDLER_ON);
+ registerProp("java.util.logging.level", ATTR_LOGGING_LEVEL);
+ registerProp("je.checkpointer.bytesInterval",
+ ATTR_CHECKPOINTER_BYTES_INTERVAL);
+ registerProp("je.checkpointer.wakeupInterval",
+ ATTR_CHECKPOINTER_WAKEUP_INTERVAL);
+ registerProp("je.lock.nLockTables", ATTR_NUM_LOCK_TABLES);
+ registerProp("je.cleaner.threads", ATTR_NUM_CLEANER_THREADS);
+ }
+ catch (Exception e)
+ {
+ if (debugEnabled())
+ {
+ debugCaught(DebugLogLevel.ERROR, e);
+ }
+ }
}
@@ -417,72 +359,31 @@
/**
- * Parse a configuration entry associated with a JE environment and create an
+ * Parse a configuration associated with a JE environment and create an
* environment config from it.
*
- * @param configEntry The configuration entry to be parsed.
+ * @param cfg The configuration to be parsed.
* @return An environment config instance corresponding to the config entry.
* @throws ConfigException If there is an error in the provided configuration
* entry.
*/
- public static EnvironmentConfig parseConfigEntry(ConfigEntry configEntry)
+ public static EnvironmentConfig parseConfigEntry(JEBackendCfg cfg)
throws ConfigException
{
EnvironmentConfig envConfig = defaultConfig();
// Handle the attributes that do not have a JE property.
- BooleanConfigAttribute booleanAttr;
- booleanAttr = (BooleanConfigAttribute)
- configEntry.getConfigAttribute(CONFIG_ATTR_TXN_NO_SYNC);
- if (booleanAttr != null)
- {
- envConfig.setTxnNoSync(booleanAttr.activeValue());
- }
-
- booleanAttr = (BooleanConfigAttribute)
- configEntry.getConfigAttribute(CONFIG_ATTR_TXN_WRITE_NO_SYNC);
- if (booleanAttr != null)
- {
- envConfig.setTxnWriteNoSync(booleanAttr.activeValue());
- }
+ envConfig.setTxnNoSync(cfg.isDatabaseTxnNoSync());
+ envConfig.setTxnWriteNoSync(cfg.isDatabaseTxnWriteNoSync());
// Iterate through the config attributes associated with a JE property.
- for (Map.Entry<String, ConfigAttribute> mapEntry : configAttrMap.entrySet())
+ for (Map.Entry<String, String> mapEntry : attrMap.entrySet())
{
- String property = mapEntry.getKey();
- ConfigAttribute stub = mapEntry.getValue();
+ String jeProperty = mapEntry.getKey();
+ String attrName = mapEntry.getValue();
- // Check if the config entry contains this attribute.
- ConfigAttribute configAttr = configEntry.getConfigAttribute(stub);
- if (stub != null)
- {
- // Set the property.
- if (configAttr instanceof BooleanConfigAttribute)
- {
- BooleanConfigAttribute attr = (BooleanConfigAttribute) configAttr;
- boolean value = attr.activeValue();
- envConfig.setConfigParam(property, String.valueOf(value));
- }
- else if (configAttr instanceof IntegerConfigAttribute)
- {
- IntegerConfigAttribute attr = (IntegerConfigAttribute) configAttr;
- long value = attr.activeValue();
- envConfig.setConfigParam(property, String.valueOf(value));
- }
- else if (configAttr instanceof IntegerWithUnitConfigAttribute)
- {
- IntegerWithUnitConfigAttribute attr =
- (IntegerWithUnitConfigAttribute) configAttr;
- long value = attr.activeCalculatedValue();
- envConfig.setConfigParam(property, String.valueOf(value));
- }
- else if (configAttr instanceof StringConfigAttribute)
- {
- StringConfigAttribute attr = (StringConfigAttribute) configAttr;
- String value = attr.activeValue();
- envConfig.setConfigParam(property, value);
- }
- }
+ String value = getPropertyValue(cfg, attrName);
+ envConfig.setConfigParam(jeProperty, value);
}
return envConfig;
@@ -490,122 +391,4 @@
- /**
- * Retrieves the DN of the configuration entry with which this component is
- * associated.
- *
- * @return The DN of the configuration entry with which this component is
- * associated.
- */
- public DN getConfigurableComponentEntryDN()
- {
- return configDN;
- }
-
-
-
- /**
- * Retrieves the set of configuration attributes that are associated with this
- * configurable component.
- *
- * @return The set of configuration attributes that are associated with this
- * configurable component.
- */
- public List<ConfigAttribute> getConfigurationAttributes()
- {
- return configAttrList;
- }
-
-
-
- /**
- * Indicates whether the provided configuration entry has an acceptable
- * configuration for this component. If it does not, then detailed
- * information about the problem(s) should be added to the provided list.
- *
- * @param configEntry The configuration entry for which to make the
- * determination.
- * @param unacceptableReasons A list that can be used to hold messages about
- * why the provided entry does not have an
- * acceptable configuration.
- * @return <CODE>true</CODE> if the provided entry has an acceptable
- * configuration for this component, or <CODE>false</CODE> if not.
- */
- public boolean hasAcceptableConfiguration(ConfigEntry configEntry,
- List<String> unacceptableReasons)
- {
- return true;
- }
-
-
-
- /**
- * Makes a best-effort attempt to apply the configuration contained in the
- * provided entry. Information about the result of this processing should be
- * added to the provided message list. Information should always be added to
- * this list if a configuration change could not be applied. If detailed
- * results are requested, then information about the changes applied
- * successfully (and optionally about parameters that were not changed) should
- * also be included.
- *
- * @param configEntry The entry containing the new configuration to apply
- * for this component.
- * @param detailedResults Indicates whether detailed information about the
- * processing should be added to the list.
- *
- * @return Information about the result of the configuration update.
- */
- public ConfigChangeResult applyNewConfiguration(ConfigEntry configEntry,
- boolean detailedResults)
- {
- ConfigChangeResult ccr;
- boolean adminActionRequired = false;
- ArrayList<String> messages = new ArrayList<String>();
-
- try
- {
- // Check if any JE non-mutable properties were changed.
- EnvironmentConfig oldEnvConfig = environment.getConfig();
- EnvironmentConfig newEnvConfig = parseConfigEntry(configEntry);
- Map paramsMap = EnvironmentParams.SUPPORTED_PARAMS;
- for (Object o : paramsMap.values())
- {
- ConfigParam param = (ConfigParam) o;
- if (!param.isMutable())
- {
- String oldValue = oldEnvConfig.getConfigParam(param.getName());
- String newValue = newEnvConfig.getConfigParam(param.getName());
- if (!oldValue.equalsIgnoreCase(newValue))
- {
- adminActionRequired = true;
- if (detailedResults)
- {
- ConfigAttribute configAttr = configAttrMap.get(param.getName());
- if (configAttr != null)
- {
- int msgID = MSGID_JEB_CONFIG_ATTR_REQUIRES_RESTART;
- messages.add(getMessage(msgID, configAttr.getName()));
- }
- }
- }
- }
- }
-
- // This takes care of changes to the JE environment for those
- // properties that are mutable at runtime.
- environment.setMutableConfig(newEnvConfig);
- }
- catch (Exception e)
- {
- messages.add(e.getMessage());
- ccr = new ConfigChangeResult(DirectoryServer.getServerErrorResultCode(),
- adminActionRequired,
- messages);
- return ccr;
- }
-
- ccr = new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired,
- messages);
- return ccr;
- }
}
--
Gitblit v1.10.0