You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2016/02/18 00:10:40 UTC

[05/33] incubator-geode git commit: GEODE-913: refactor AbstractDistributionConfig

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/70059905/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java
index f8ff21a..3af8c15 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java
@@ -17,10 +17,6 @@
 
 package com.gemstone.gemfire.distributed.internal;
 
-import java.io.File;
-import java.net.InetAddress;
-import java.util.Properties;
-
 import com.gemstone.gemfire.distributed.DistributedSystem;
 import com.gemstone.gemfire.internal.Config;
 import com.gemstone.gemfire.internal.ConfigSource;
@@ -29,6 +25,12 @@ import com.gemstone.gemfire.internal.logging.LogConfig;
 import com.gemstone.gemfire.internal.tcp.Connection;
 import com.gemstone.gemfire.memcached.GemFireMemcachedServer;
 
+import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.InetAddress;
+import java.util.*;
+
 /**
  * Provides accessor (and in some cases mutator) methods for the
  * various GemFire distribution configuration properties.  The
@@ -49,7 +51,6 @@ import com.gemstone.gemfire.memcached.GemFireMemcachedServer;
  */
 public interface DistributionConfig extends Config, LogConfig {
 
-
   ////////////////////  Instance Methods  ////////////////////
 
   /**
@@ -62,7 +63,9 @@ public interface DistributionConfig extends Config, LogConfig {
    * <p> The default value is: {@link #DEFAULT_NAME}.
    * @return the system's name.
    */
+  @ConfigAttributeGetter(name=NAME_NAME)
   public String getName();
+
   /**
    * Sets the member's name.
    * <p> The name can not be changed while the system is running.
@@ -71,16 +74,15 @@ public interface DistributionConfig extends Config, LogConfig {
    * @throws com.gemstone.gemfire.GemFireIOException if the set failure is caused by an error
    *   when writing to the system's configuration file.
    */
+  @ConfigAttributeSetter(name=NAME_NAME)
   public void setName(String value);
-  /**
-   * Returns true if the value of the <code>name</code> attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isNameModifiable();
+
   /** The name of the "name" property */
+  @ConfigAttribute(type=String.class)
   public static final String NAME_NAME = "name";
 
+
+
   /**
    * The default system name.
    * <p> Actual value of this constant is <code>""</code>.
@@ -92,22 +94,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#mcast-port">"mcast-port"</a>
    * property
    */
+  @ConfigAttributeGetter(name=MCAST_PORT_NAME)
   public int getMcastPort();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#mcast-port">"mcast-port"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MCAST_PORT_NAME)
   public void setMcastPort(int value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isMcastPortModifiable();
 
-  /** The name of the "mcastPort" property */
-  public static final String MCAST_PORT_NAME = "mcast-port";
 
   /** The default value of the "mcastPort" property */
   public static final int DEFAULT_MCAST_PORT = 0;
@@ -122,27 +118,25 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final int MAX_MCAST_PORT = 65535;
 
+  /** The name of the "mcastPort" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_MCAST_PORT, max=MAX_MCAST_PORT)
+  public static final String MCAST_PORT_NAME = "mcast-port";
 
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#tcp-port">"tcp-port"</a>
    * property
    */
+  @ConfigAttributeGetter(name=TCP_PORT_NAME)
   public int getTcpPort();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#tcp-port">"tcp-port"</a>
    * property
    */
+  @ConfigAttributeSetter(name=TCP_PORT_NAME)
   public void setTcpPort(int value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isTcpPortModifiable();
-  /** The name of the "tcpPort" property */
-  public static final String TCP_PORT_NAME = "tcp-port";
+
   /** The default value of the "tcpPort" property */
   public static final int DEFAULT_TCP_PORT = 0;
   /**
@@ -155,28 +149,28 @@ public interface DistributionConfig extends Config, LogConfig {
    * <p> Actual value of this constant is <code>65535</code>.
    */
   public static final int MAX_TCP_PORT = 65535;
-
+  /** The name of the "tcpPort" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_TCP_PORT, max=MAX_TCP_PORT)
+  public static final String TCP_PORT_NAME = "tcp-port";
 
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#mcast-address">"mcast-address"</a>
    * property
    */
+  @ConfigAttributeGetter(name=MCAST_ADDRESS_NAME)
   public InetAddress getMcastAddress();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#mcast-address">"mcast-address"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MCAST_ADDRESS_NAME)
   public void setMcastAddress(InetAddress value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isMcastAddressModifiable();
+
 
   /** The name of the "mcastAddress" property */
+  @ConfigAttribute(type=InetAddress.class)
   public static final String MCAST_ADDRESS_NAME = "mcast-address";
 
   /** The default value of the "mcastAddress" property.
@@ -189,22 +183,15 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#mcast-ttl">"mcast-ttl"</a>
    * property
    */
+  @ConfigAttributeGetter(name=MCAST_TTL_NAME)
   public int getMcastTtl();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#mcast-ttl">"mcast-ttl"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MCAST_TTL_NAME)
   public void setMcastTtl(int value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isMcastTtlModifiable();
-
-  /** The name of the "mcastTtl" property */
-  public static final String MCAST_TTL_NAME = "mcast-ttl";
 
   /** The default value of the "mcastTtl" property */
   public static final int DEFAULT_MCAST_TTL = 32;
@@ -218,32 +205,28 @@ public interface DistributionConfig extends Config, LogConfig {
    * <p> Actual value of this constant is <code>255</code>.
    */
   public static final int MAX_MCAST_TTL = 255;
-  
-  
-  public static final int MIN_DISTRIBUTED_SYSTEM_ID = -1;
-  
-  public static final int MAX_DISTRIBUTED_SYSTEM_ID = 255;
+
+  /** The name of the "mcastTtl" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_MCAST_TTL, max=MAX_MCAST_TTL)
+  public static final String MCAST_TTL_NAME = "mcast-ttl";
 
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#bind-address">"bind-address"</a>
    * property
    */
+  @ConfigAttributeGetter(name=BIND_ADDRESS_NAME)
   public String getBindAddress();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#bind-address">"bind-address"</a>
    * property
    */
+  @ConfigAttributeSetter(name=BIND_ADDRESS_NAME)
   public void setBindAddress(String value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isBindAddressModifiable();
 
   /** The name of the "bindAddress" property */
+  @ConfigAttribute(type=String.class)
   public static final String BIND_ADDRESS_NAME = "bind-address";
 
   /** The default value of the "bindAddress" property.
@@ -256,21 +239,18 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#server-bind-address">"server-bind-address"</a>
    * property
    */
+  @ConfigAttributeGetter(name=SERVER_BIND_ADDRESS_NAME)
   public String getServerBindAddress();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#server-bind-address">"server-bind-address"</a>
    * property
    */
+  @ConfigAttributeSetter(name=SERVER_BIND_ADDRESS_NAME)
   public void setServerBindAddress(String value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isServerBindAddressModifiable();
 
   /** The name of the "serverBindAddress" property */
+  @ConfigAttribute(type=String.class)
   public static final String SERVER_BIND_ADDRESS_NAME = "server-bind-address";
 
   /** The default value of the "serverBindAddress" property.
@@ -282,6 +262,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns the value of the <a
    * href="../DistributedSystem.html#locators">"locators"</a> property
    */
+  @ConfigAttributeGetter(name=LOCATORS_NAME)
   public String getLocators();
   /**
    * Sets the system's locator list.
@@ -295,15 +276,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * @throws com.gemstone.gemfire.GemFireIOException if the set failure is caused by an error
    *   when writing to the system's configuration file.
    */
+  @ConfigAttributeSetter(name=LOCATORS_NAME)
   public void setLocators(String value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isLocatorsModifiable();
 
   /** The name of the "locators" property */
+  @ConfigAttribute(type=String.class)
   public static final String LOCATORS_NAME = "locators";
 
   /** The default value of the "locators" property */
@@ -313,17 +290,20 @@ public interface DistributionConfig extends Config, LogConfig {
    * Locator wait time - how long to wait for a locator to start before giving up &
    * throwing a GemFireConfigException
    */
+  @ConfigAttribute(type=Integer.class)
   public static final String LOCATOR_WAIT_TIME_NAME = "locator-wait-time";
-  public static final int DEFAULT_LOCATOR_WAIT_TIME = 0; 
+  public static final int DEFAULT_LOCATOR_WAIT_TIME = 0;
+  @ConfigAttributeGetter(name=LOCATOR_WAIT_TIME_NAME)
   public int getLocatorWaitTime();
+  @ConfigAttributeSetter(name=LOCATOR_WAIT_TIME_NAME)
   public void setLocatorWaitTime(int seconds);
-  public boolean isLocatorWaitTimeModifiable();
   
   
   /**
    * returns the value of the <a href="../DistribytedSystem.html#start-locator">"start-locator"
    * </a> property
    */
+  @ConfigAttributeGetter(name=START_LOCATOR_NAME)
   public String getStartLocator();
   /**
    * Sets the start-locator property.  This is a string in the form
@@ -331,15 +311,13 @@ public interface DistributionConfig extends Config, LogConfig {
    * a locator prior to connecting
    * @param value must be of the form <code>hostName[portNum]</code>
    */
+  @ConfigAttributeSetter(name=START_LOCATOR_NAME)
   public void setStartLocator(String value);
-  /**
-   * returns true if the value of the attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isStartLocatorModifiable();
+
   /**
    * The name of the "start-locator" property
    */
+  @ConfigAttribute(type=String.class)
   public static final String START_LOCATOR_NAME = "start-locator";
   /**
    * The default value of the "start-locator" property
@@ -350,6 +328,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns the value of the <a
    * href="../DistributedSystem.html#deploy-working-dir">"deploy-working-dir"</a> property
    */
+  @ConfigAttributeGetter(name=DEPLOY_WORKING_DIR)
   public File getDeployWorkingDir();
   
   /**
@@ -359,17 +338,13 @@ public interface DistributionConfig extends Config, LogConfig {
    * @throws com.gemstone.gemfire.GemFireIOException if the set failure is caused by an error
    *   when writing to the system's configuration file.
    */
+  @ConfigAttributeSetter(name=DEPLOY_WORKING_DIR)
   public void setDeployWorkingDir(File value);
   
   /**
-   * Returns true if the value of the deploy-working-dir attribute can 
-   * currently be modified. Some attributes can not be modified while the system is running.
-   */
-  public boolean isDeployWorkingDirModifiable();
-  
-  /**
    * The name of the "deploy-working-dir" property.
    */
+  @ConfigAttribute(type=File.class)
   public static final String DEPLOY_WORKING_DIR = "deploy-working-dir";
   
   /**
@@ -382,6 +357,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns the value of the <a
    * href="../DistributedSystem.html#user-command-packages">"user-command-packages"</a> property
    */
+  @ConfigAttributeGetter(name=USER_COMMAND_PACKAGES)
   public String getUserCommandPackages();
   
   /**
@@ -391,17 +367,13 @@ public interface DistributionConfig extends Config, LogConfig {
    * @throws com.gemstone.gemfire.GemFireIOException if the set failure is caused by an error
    *   when writing to the system's configuration file.
    */
+  @ConfigAttributeSetter(name=USER_COMMAND_PACKAGES)
   public void setUserCommandPackages(String value);
   
   /**
-   * Returns true if the value of the user-command-packages attribute can 
-   * currently be modified. Some attributes can not be modified while the system is running.
-   */
-  public boolean isUserCommandPackagesModifiable();
-  
-  /**
    * The name of the "user-command-packages" property.
    */
+  @ConfigAttribute(type=String.class)
   public static final String USER_COMMAND_PACKAGES = "user-command-packages";
   
   /**
@@ -416,6 +388,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * @return <code>null</code> if logging information goes to standard
    *         out
    */
+  @ConfigAttributeGetter(name=LOG_FILE_NAME)
   public File getLogFile();
   /**
    * Sets the system's log file.
@@ -426,14 +399,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * @throws com.gemstone.gemfire.GemFireIOException if the set failure is caused by an error
    *   when writing to the system's configuration file.
    */
+  @ConfigAttributeSetter(name=LOG_FILE_NAME)
   public void setLogFile(File value);
-  /**
-   * Returns true if the value of the logFile attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isLogFileModifiable();
+
   /** The name of the "logFile" property */
+  @ConfigAttribute(type=File.class)
   public static final String LOG_FILE_NAME = "log-file";
 
   /**
@@ -449,6 +419,7 @@ public interface DistributionConfig extends Config, LogConfig {
    *
    * @see com.gemstone.gemfire.internal.logging.LogWriterImpl
    */
+  @ConfigAttributeGetter(name=LOG_LEVEL_NAME)
   public int getLogLevel();
   /**
    * Sets the value of the <a
@@ -456,19 +427,10 @@ public interface DistributionConfig extends Config, LogConfig {
    *
    * @see com.gemstone.gemfire.internal.logging.LogWriterImpl
    */
+  @ConfigAttributeSetter(name=LOG_LEVEL_NAME)
   public void setLogLevel(int value);
 
   /**
-   * Returns true if the value of the logLevel attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isLogLevelModifiable();
-
-  /** The name of the "logLevel" property */
-  public static final String LOG_LEVEL_NAME = "log-level";
-
-  /**
    * The default log level.
    * <p> Actual value of this constant is {@link InternalLogWriter#CONFIG_LEVEL}.
    */
@@ -484,23 +446,26 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final int MAX_LOG_LEVEL = InternalLogWriter.NONE_LEVEL;
 
+  /** The name of the "logLevel" property */
+  // type is String because the config file contains "config", "debug", "fine" etc, not a code, but the setter/getter accepts int
+  @ConfigAttribute(type=String.class)
+  public static final String LOG_LEVEL_NAME = "log-level";
+
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#statistic-sampling-enabled">"statistic-sampling-enabled"</a>
    * property
    */
+  @ConfigAttributeGetter(name=STATISTIC_SAMPLING_ENABLED_NAME)
   public boolean getStatisticSamplingEnabled();
   /**
    * Sets StatisticSamplingEnabled
    */
+  @ConfigAttributeSetter(name=STATISTIC_SAMPLING_ENABLED_NAME)
   public void setStatisticSamplingEnabled(boolean newValue);
-  /**
-   * Returns true if the value of the StatisticSamplingEnabled attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isStatisticSamplingEnabledModifiable();
+
   /** The name of the "statisticSamplingEnabled" property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String STATISTIC_SAMPLING_ENABLED_NAME =
     "statistic-sampling-enabled";
 
@@ -512,19 +477,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#statistic-sample-rate">"statistic-sample-rate"</a>
    * property
    */
+  @ConfigAttributeGetter(name=STATISTIC_SAMPLE_RATE_NAME)
   public int getStatisticSampleRate();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#statistic-sample-rate">"statistic-sample-rate"</a>
    * property
    */
+  @ConfigAttributeSetter(name=STATISTIC_SAMPLE_RATE_NAME)
   public void setStatisticSampleRate(int value);
-  /**
-   * Returns true if the value of the statisticSampleRate attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isStatisticSampleRateModifiable();
+
   /**
    * The default statistic sample rate.
    * <p> Actual value of this constant is <code>1000</code> milliseconds.
@@ -542,6 +504,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final int MAX_STATISTIC_SAMPLE_RATE = 60000;
 
   /** The name of the "statisticSampleRate" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_STATISTIC_SAMPLE_RATE, max=MAX_STATISTIC_SAMPLE_RATE)
   public static final String STATISTIC_SAMPLE_RATE_NAME =
     "statistic-sample-rate";
 
@@ -550,18 +513,16 @@ public interface DistributionConfig extends Config, LogConfig {
    *
    * @return <code>null</code> if no file was specified
    */
+  @ConfigAttributeGetter(name=STATISTIC_ARCHIVE_FILE_NAME)
   public File getStatisticArchiveFile();
   /**
    * Sets the value of the <a href="../DistributedSystem.html#statistic-archive-file">"statistic-archive-file"</a> property.
    */
+  @ConfigAttributeSetter(name=STATISTIC_ARCHIVE_FILE_NAME)
   public void setStatisticArchiveFile(File value);
-  /**
-   * Returns true if the value of the statisticArchiveFile attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isStatisticArchiveFileModifiable();
+
   /** The name of the "statisticArchiveFile" property */
+  @ConfigAttribute(type=File.class)
   public static final String STATISTIC_ARCHIVE_FILE_NAME =
     "statistic-archive-file";
 
@@ -578,20 +539,18 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cache-xml-file">"cache-xml-file"</a>
    * property
    */
+  @ConfigAttributeGetter(name=CACHE_XML_FILE_NAME)
   public File getCacheXmlFile();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#cache-xml-file">"cache-xml-file"</a>
    * property
    */
+  @ConfigAttributeSetter(name=CACHE_XML_FILE_NAME)
   public void setCacheXmlFile(File value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isCacheXmlFileModifiable();
+
   /** The name of the "cacheXmlFile" property */
+  @ConfigAttribute(type=File.class)
   public static final String CACHE_XML_FILE_NAME = "cache-xml-file";
 
   /** The default value of the "cacheXmlFile" property */
@@ -602,6 +561,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#ack-wait-threshold">"ack-wait-threshold"</a>
    * property
    */
+  @ConfigAttributeGetter(name=ACK_WAIT_THRESHOLD_NAME)
   public int getAckWaitThreshold();
 
   /**
@@ -610,15 +570,8 @@ public interface DistributionConfig extends Config, LogConfig {
    * property
      * Setting this value too low will cause spurious alerts.
      */
+  @ConfigAttributeSetter(name=ACK_WAIT_THRESHOLD_NAME)
   public void setAckWaitThreshold(int newThreshold);
-  /**
-   * Returns true if the value of the AckWaitThreshold attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isAckWaitThresholdModifiable();
-  /** The name of the "ackWaitThreshold" property */
-  public static final String ACK_WAIT_THRESHOLD_NAME = "ack-wait-threshold";
 
   /**
    * The default AckWaitThreshold.
@@ -635,12 +588,17 @@ public interface DistributionConfig extends Config, LogConfig {
    * <p> Actual value of this constant is <code>MAX_INT</code> seconds.
    */
   public static final int MAX_ACK_WAIT_THRESHOLD = Integer.MAX_VALUE;
+  /** The name of the "ackWaitThreshold" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ACK_WAIT_THRESHOLD)
+  public static final String ACK_WAIT_THRESHOLD_NAME = "ack-wait-threshold";
+
 
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#ack-severe-alert-threshold">"ack-severe-alert-threshold"</a>
    * property
    */
+  @ConfigAttributeGetter(name=ACK_SEVERE_ALERT_THRESHOLD_NAME)
   public int getAckSevereAlertThreshold();
 
   /**
@@ -649,15 +607,9 @@ public interface DistributionConfig extends Config, LogConfig {
    * property
      * Setting this value too low will cause spurious forced disconnects.
      */
+  @ConfigAttributeSetter(name=ACK_SEVERE_ALERT_THRESHOLD_NAME)
   public void setAckSevereAlertThreshold(int newThreshold);
-  /**
-   * Returns true if the value of the ackSevereAlertThreshold attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isAckSevereAlertThresholdModifiable();
-  /** The name of the "ackSevereAlertThreshold" property */
-  public static final String ACK_SEVERE_ALERT_THRESHOLD_NAME = "ack-severe-alert-threshold";
+
   /**
    * The default ackSevereAlertThreshold.
    * <p> Actual value of this constant is <code>0</code> seconds, which
@@ -675,26 +627,25 @@ public interface DistributionConfig extends Config, LogConfig {
    * <p> Actual value of this constant is <code>MAX_INT</code> seconds.
    */
   public static final int MAX_ACK_SEVERE_ALERT_THRESHOLD = Integer.MAX_VALUE;
-
+  /** The name of the "ackSevereAlertThreshold" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ACK_SEVERE_ALERT_THRESHOLD)
+  public static final String ACK_SEVERE_ALERT_THRESHOLD_NAME = "ack-severe-alert-threshold";
 
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#archive-file-size-limit">"archive-file-size-limit"</a>
    * property
    */
+  @ConfigAttributeGetter(name=ARCHIVE_FILE_SIZE_LIMIT_NAME)
   public int getArchiveFileSizeLimit();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#archive-file-size-limit">"archive-file-size-limit"</a>
    * property
    */
+  @ConfigAttributeSetter(name=ARCHIVE_FILE_SIZE_LIMIT_NAME)
   public void setArchiveFileSizeLimit(int value);
-  /**
-   * Returns true if the value of the ArchiveFileSizeLimit attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isArchiveFileSizeLimitModifiable();
+
   /**
    * The default statistic archive file size limit.
    * <p> Actual value of this constant is <code>0</code> megabytes.
@@ -712,6 +663,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final int MAX_ARCHIVE_FILE_SIZE_LIMIT = 1000000;
 
   /** The name of the "ArchiveFileSizeLimit" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ARCHIVE_FILE_SIZE_LIMIT, max=MAX_ARCHIVE_FILE_SIZE_LIMIT)
   public static final String ARCHIVE_FILE_SIZE_LIMIT_NAME =
     "archive-file-size-limit";
   /**
@@ -719,19 +671,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#archive-disk-space-limit">"archive-disk-space-limit"</a>
    * property
    */
+  @ConfigAttributeGetter(name=ARCHIVE_DISK_SPACE_LIMIT_NAME)
   public int getArchiveDiskSpaceLimit();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#archive-disk-space-limit">"archive-disk-space-limit"</a>
    * property
    */
+  @ConfigAttributeSetter(name=ARCHIVE_DISK_SPACE_LIMIT_NAME)
   public void setArchiveDiskSpaceLimit(int value);
-  /**
-   * Returns true if the value of the ArchiveDiskSpaceLimit attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isArchiveDiskSpaceLimitModifiable();
+
   /**
    * The default archive disk space limit.
    * <p> Actual value of this constant is <code>0</code> megabytes.
@@ -749,6 +698,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final int MAX_ARCHIVE_DISK_SPACE_LIMIT = 1000000;
 
   /** The name of the "ArchiveDiskSpaceLimit" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ARCHIVE_DISK_SPACE_LIMIT, max=MAX_ARCHIVE_DISK_SPACE_LIMIT)
   public static final String ARCHIVE_DISK_SPACE_LIMIT_NAME =
     "archive-disk-space-limit";
   /**
@@ -756,19 +706,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#log-file-size-limit">"log-file-size-limit"</a>
    * property
    */
+  @ConfigAttributeGetter(name=LOG_FILE_SIZE_LIMIT_NAME)
   public int getLogFileSizeLimit();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#log-file-size-limit">"log-file-size-limit"</a>
    * property
    */
+  @ConfigAttributeSetter(name=LOG_FILE_SIZE_LIMIT_NAME)
   public void setLogFileSizeLimit(int value);
-  /**
-   * Returns true if the value of the LogFileSizeLimit attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isLogFileSizeLimitModifiable();
+
   /**
    * The default log file size limit.
    * <p> Actual value of this constant is <code>0</code> megabytes.
@@ -786,6 +733,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final int MAX_LOG_FILE_SIZE_LIMIT = 1000000;
 
   /** The name of the "LogFileSizeLimit" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_LOG_FILE_SIZE_LIMIT, max=MAX_LOG_FILE_SIZE_LIMIT)
   public static final String LOG_FILE_SIZE_LIMIT_NAME =
     "log-file-size-limit";
 
@@ -794,19 +742,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#log-disk-space-limit">"log-disk-space-limit"</a>
    * property
    */
+  @ConfigAttributeGetter(name=LOG_DISK_SPACE_LIMIT_NAME)
   public int getLogDiskSpaceLimit();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#log-disk-space-limit">"log-disk-space-limit"</a>
    * property
    */
+  @ConfigAttributeSetter(name=LOG_DISK_SPACE_LIMIT_NAME)
   public void setLogDiskSpaceLimit(int value);
-  /**
-   * Returns true if the value of the LogDiskSpaceLimit attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isLogDiskSpaceLimitModifiable();
+
   /**
    * The default log disk space limit.
    * <p> Actual value of this constant is <code>0</code> megabytes.
@@ -824,6 +769,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final int MAX_LOG_DISK_SPACE_LIMIT = 1000000;
 
   /** The name of the "LogDiskSpaceLimit" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_LOG_DISK_SPACE_LIMIT, max=MAX_LOG_DISK_SPACE_LIMIT)
   public static final String LOG_DISK_SPACE_LIMIT_NAME =
     "log-disk-space-limit";
 
@@ -833,6 +779,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #getClusterSSLEnabled} instead.
    */
+  @ConfigAttributeGetter(name=SSL_ENABLED_NAME)
   public boolean getSSLEnabled();
 
   /**
@@ -845,6 +792,7 @@ public interface DistributionConfig extends Config, LogConfig {
   /** The name of the "SSLEnabled" property 
    * @deprecated as of 8.0 use {@link #CLUSTER_SSL_ENABLED_NAME} instead.
    */
+  @ConfigAttribute(type=Boolean.class)
   public static final String SSL_ENABLED_NAME =
     "ssl-enabled";
 
@@ -854,6 +802,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #setClusterSSLEnabled} instead.
    */
+  @ConfigAttributeSetter(name=SSL_ENABLED_NAME)
   public void setSSLEnabled( boolean enabled );
 
   /**
@@ -862,6 +811,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #getClusterSSLProtocols} instead.
    */
+  @ConfigAttributeGetter(name=SSL_PROTOCOLS_NAME)
    public String getSSLProtocols( );
 
   /**
@@ -870,6 +820,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #setClusterSSLProtocols} instead.
    */
+  @ConfigAttributeSetter(name=SSL_PROTOCOLS_NAME)
    public void setSSLProtocols( String protocols );
 
   /**
@@ -881,6 +832,7 @@ public interface DistributionConfig extends Config, LogConfig {
   /** The name of the "SSLProtocols" property 
    * @deprecated as of 8.0 use {@link #CLUSTER_SSL_PROTOCOLS_NAME} instead.
    */
+  @ConfigAttribute(type=String.class)
   public static final String SSL_PROTOCOLS_NAME =
     "ssl-protocols";
 
@@ -890,6 +842,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #getClusterSSLCiphers} instead.
    */
+  @ConfigAttributeGetter(name=SSL_CIPHERS_NAME)
    public String getSSLCiphers( );
 
   /**
@@ -898,6 +851,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #setClusterSSLCiphers} instead.
    */
+  @ConfigAttributeSetter(name=SSL_CIPHERS_NAME)
    public void setSSLCiphers( String ciphers );
 
    /**
@@ -909,6 +863,7 @@ public interface DistributionConfig extends Config, LogConfig {
   /** The name of the "SSLCiphers" property 
    * @deprecated as of 8.0 use {@link #CLUSTER_SSL_CIPHERS_NAME} instead.
    */
+  @ConfigAttribute(type=String.class)
   public static final String SSL_CIPHERS_NAME =
     "ssl-ciphers";
 
@@ -918,6 +873,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #getClusterSSLRequireAuthentication} instead.
    */
+  @ConfigAttributeGetter(name=SSL_REQUIRE_AUTHENTICATION_NAME)
    public boolean getSSLRequireAuthentication( );
 
   /**
@@ -926,6 +882,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @deprecated as of 8.0 use {@link #setClusterSSLRequireAuthentication} instead.
    */
+  @ConfigAttributeSetter(name=SSL_REQUIRE_AUTHENTICATION_NAME)
    public void setSSLRequireAuthentication( boolean enabled );
 
    /**
@@ -937,6 +894,7 @@ public interface DistributionConfig extends Config, LogConfig {
   /** The name of the "SSLRequireAuthentication" property 
    * @deprecated as of 8.0 use {@link #CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME} instead.
    */
+  @ConfigAttribute(type=Boolean.class)
   public static final String SSL_REQUIRE_AUTHENTICATION_NAME =
     "ssl-require-authentication";
 
@@ -945,6 +903,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-enabled">"cluster-ssl-enabled"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_ENABLED_NAME)
   public boolean getClusterSSLEnabled();
 
   /**
@@ -952,7 +911,8 @@ public interface DistributionConfig extends Config, LogConfig {
    * <p> Actual value of this constant is <code>false</code>.
    */
   public static final boolean DEFAULT_CLUSTER_SSL_ENABLED = false;
-    /** The name of the "ClusterSSLEnabled" property */
+  /** The name of the "ClusterSSLEnabled" property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String CLUSTER_SSL_ENABLED_NAME =
     "cluster-ssl-enabled";
 
@@ -961,6 +921,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-enabled">"cluster-ssl-enabled"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_ENABLED_NAME)
   public void setClusterSSLEnabled( boolean enabled );
 
   /**
@@ -968,6 +929,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-protocols">"cluster-ssl-protocols"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_PROTOCOLS_NAME)
    public String getClusterSSLProtocols( );
 
   /**
@@ -975,6 +937,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-protocols">"cluster-ssl-protocols"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_PROTOCOLS_NAME)
    public void setClusterSSLProtocols( String protocols );
 
   /**
@@ -983,6 +946,7 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final String DEFAULT_CLUSTER_SSL_PROTOCOLS = "any";
   /** The name of the "ClusterSSLProtocols" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_PROTOCOLS_NAME =
     "cluster-ssl-protocols";
 
@@ -991,6 +955,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-ciphers">"cluster-ssl-ciphers"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_CIPHERS_NAME)
    public String getClusterSSLCiphers( );
 
   /**
@@ -998,6 +963,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-ciphers">"cluster-ssl-ciphers"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_CIPHERS_NAME)
    public void setClusterSSLCiphers( String ciphers );
 
    /**
@@ -1006,6 +972,7 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final String DEFAULT_CLUSTER_SSL_CIPHERS = "any";
   /** The name of the "ClusterSSLCiphers" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_CIPHERS_NAME =
     "cluster-ssl-ciphers";
 
@@ -1014,6 +981,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-require-authentication">"cluster-ssl-require-authentication"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME)
    public boolean getClusterSSLRequireAuthentication( );
 
   /**
@@ -1021,6 +989,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-require-authentication">"cluster-ssl-require-authentication"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME)
    public void setClusterSSLRequireAuthentication( boolean enabled );
 
    /**
@@ -1029,6 +998,7 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final boolean DEFAULT_CLUSTER_SSL_REQUIRE_AUTHENTICATION = true;
   /** The name of the "ClusterSSLRequireAuthentication" property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String CLUSTER_SSL_REQUIRE_AUTHENTICATION_NAME =
     "cluster-ssl-require-authentication";
 
@@ -1038,6 +1008,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-keystore">"cluster-ssl-keystore"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_KEYSTORE_NAME)
   public String getClusterSSLKeyStore( );
   
   /**
@@ -1045,6 +1016,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-keystore">"cluster-ssl-keystore"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_KEYSTORE_NAME)
   public void setClusterSSLKeyStore( String keyStore);
   
   /**
@@ -1054,6 +1026,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final String DEFAULT_CLUSTER_SSL_KEYSTORE = "";
   
   /** The name of the "ClusterSSLKeyStore" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_KEYSTORE_NAME = "cluster-ssl-keystore";
   
   /**
@@ -1061,6 +1034,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-keystore-type">"cluster-ssl-keystore-type"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_KEYSTORE_TYPE_NAME)
   public String getClusterSSLKeyStoreType( );
   
   /**
@@ -1068,6 +1042,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-keystore-type">"cluster-ssl-keystore-type"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_KEYSTORE_TYPE_NAME)
   public void setClusterSSLKeyStoreType( String keyStoreType);
   
   /**
@@ -1077,6 +1052,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final String DEFAULT_CLUSTER_SSL_KEYSTORE_TYPE = "";
   
   /** The name of the "ClusterSSLKeyStoreType" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_KEYSTORE_TYPE_NAME = "cluster-ssl-keystore-type";
   
   /**
@@ -1084,6 +1060,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-keystore-password">"cluster-ssl-keystore-password"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_KEYSTORE_PASSWORD_NAME)
   public String getClusterSSLKeyStorePassword( );
   
   /**
@@ -1091,6 +1068,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-keystore-password">"cluster-ssl-keystore-password"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_KEYSTORE_PASSWORD_NAME)
   public void setClusterSSLKeyStorePassword( String keyStorePassword);
   
   /**
@@ -1100,6 +1078,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final String DEFAULT_CLUSTER_SSL_KEYSTORE_PASSWORD = "";
   
   /** The name of the "ClusterSSLKeyStorePassword" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_KEYSTORE_PASSWORD_NAME = "cluster-ssl-keystore-password";
   
   /**
@@ -1107,6 +1086,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-truststore">"cluster-ssl-truststore"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_TRUSTSTORE_NAME)
   public String getClusterSSLTrustStore( );
   
   /**
@@ -1114,6 +1094,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-truststore">"cluster-ssl-truststore"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_TRUSTSTORE_NAME)
   public void setClusterSSLTrustStore( String trustStore);
   
   /**
@@ -1123,6 +1104,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final String DEFAULT_CLUSTER_SSL_TRUSTSTORE = "";
   
   /** The name of the "ClusterSSLTrustStore" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_TRUSTSTORE_NAME = "cluster-ssl-truststore";
   
   /**
@@ -1130,6 +1112,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-truststore-password">"cluster-ssl-truststore-password"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=CLUSTER_SSL_TRUSTSTORE_PASSWORD_NAME)
   public String getClusterSSLTrustStorePassword( );
   
   /**
@@ -1137,6 +1120,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#cluster-ssl-truststore-password">"cluster-ssl-truststore-password"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CLUSTER_SSL_TRUSTSTORE_PASSWORD_NAME)
   public void setClusterSSLTrustStorePassword( String trusStorePassword);
   /**
    * The default cluster-ssl-truststore-password value.
@@ -1145,6 +1129,7 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final String DEFAULT_CLUSTER_SSL_TRUSTSTORE_PASSWORD = "";
   
   /** The name of the "ClusterSSLKeyStorePassword" property */
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_SSL_TRUSTSTORE_PASSWORD_NAME = "cluster-ssl-truststore-password";
   
   
@@ -1213,22 +1198,17 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#socket-lease-time">"socket-lease-time"</a>
    * property
    */
+  @ConfigAttributeGetter(name=SOCKET_LEASE_TIME_NAME)
   public int getSocketLeaseTime();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#socket-lease-time">"socket-lease-time"</a>
    * property
    */
+  @ConfigAttributeSetter(name=SOCKET_LEASE_TIME_NAME)
   public void setSocketLeaseTime(int value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isSocketLeaseTimeModifiable();
 
-  /** The name of the "socketLeaseTime" property */
-  public static final String SOCKET_LEASE_TIME_NAME = "socket-lease-time";
+
 
   /** The default value of the "socketLeaseTime" property */
   public static final int DEFAULT_SOCKET_LEASE_TIME = 60000;
@@ -1243,27 +1223,25 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final int MAX_SOCKET_LEASE_TIME = 600000;
 
+  /** The name of the "socketLeaseTime" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_SOCKET_LEASE_TIME, max=MAX_SOCKET_LEASE_TIME)
+  public static final String SOCKET_LEASE_TIME_NAME = "socket-lease-time";
+
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#socket-buffer-size">"socket-buffer-size"</a>
    * property
    */
+  @ConfigAttributeGetter(name=SOCKET_BUFFER_SIZE_NAME)
   public int getSocketBufferSize();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#socket-buffer-size">"socket-buffer-size"</a>
    * property
    */
+  @ConfigAttributeSetter(name=SOCKET_BUFFER_SIZE_NAME)
   public void setSocketBufferSize(int value);
-  /**
-   * Returns true if the value of the
-   * attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isSocketBufferSizeModifiable();
 
-  /** The name of the "socketBufferSize" property */
-  public static final String SOCKET_BUFFER_SIZE_NAME = "socket-buffer-size";
 
   /** The default value of the "socketBufferSize" property */
   public static final int DEFAULT_SOCKET_BUFFER_SIZE = 32768;
@@ -1281,11 +1259,17 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final boolean VALIDATE = Boolean.getBoolean("gemfire.validateMessageSize");
   public static final int VALIDATE_CEILING = Integer.getInteger("gemfire.validateMessageSizeCeiling",  8 * 1024 * 1024).intValue();
 
+  /** The name of the "socketBufferSize" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_SOCKET_BUFFER_SIZE, max=MAX_SOCKET_BUFFER_SIZE)
+  public static final String SOCKET_BUFFER_SIZE_NAME = "socket-buffer-size";
+
+
   /**
    * Get the value of the
    * <a href="../DistributedSystem.html#mcast-send-buffer-size">"mcast-send-buffer-size"</a>
    * property
    */
+  @ConfigAttributeGetter(name=MCAST_SEND_BUFFER_SIZE_NAME)
   public int getMcastSendBufferSize();
 
   /**
@@ -1293,18 +1277,9 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#mcast-send-buffer-size">"mcast-send-buffer-size"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MCAST_SEND_BUFFER_SIZE_NAME)
   public void setMcastSendBufferSize(int value);
 
-  /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isMcastSendBufferSizeModifiable();
-
-  /**
-   * The name of the corresponding property
-   */
-  public static final String MCAST_SEND_BUFFER_SIZE_NAME = "mcast-send-buffer-size";
 
   /**
    * The default value of the corresponding property
@@ -1319,10 +1294,17 @@ public interface DistributionConfig extends Config, LogConfig {
   public static final int MIN_MCAST_SEND_BUFFER_SIZE = 2048;
 
   /**
+   * The name of the corresponding property
+   */
+  @ConfigAttribute(type=Integer.class, min=MIN_MCAST_SEND_BUFFER_SIZE)
+  public static final String MCAST_SEND_BUFFER_SIZE_NAME = "mcast-send-buffer-size";
+
+  /**
    * Get the value of the
    * <a href="../DistributedSystem.html#mcast-recv-buffer-size">"mcast-recv-buffer-size"</a>
    * property
    */
+  @ConfigAttributeGetter(name=MCAST_RECV_BUFFER_SIZE_NAME)
   public int getMcastRecvBufferSize();
 
   /**
@@ -1330,18 +1312,9 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#mcast-recv-buffer-size">"mcast-recv-buffer-size"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MCAST_RECV_BUFFER_SIZE_NAME)
   public void setMcastRecvBufferSize(int value);
 
-  /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isMcastRecvBufferSizeModifiable();
-
-  /**
-   * The name of the corresponding property
-   */
-  public static final String MCAST_RECV_BUFFER_SIZE_NAME = "mcast-recv-buffer-size";
 
   /**
    * The default value of the corresponding property
@@ -1354,7 +1327,11 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final int MIN_MCAST_RECV_BUFFER_SIZE = 2048;
 
-
+  /**
+   * The name of the corresponding property
+   */
+  @ConfigAttribute(type=Integer.class, min=MIN_MCAST_RECV_BUFFER_SIZE)
+  public static final String MCAST_RECV_BUFFER_SIZE_NAME = "mcast-recv-buffer-size";
 
 
   /**
@@ -1362,6 +1339,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#mcast-flow-control">"mcast-flow-control"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=MCAST_FLOW_CONTROL_NAME)
   public FlowControlParams getMcastFlowControl();
 
   /**
@@ -1369,17 +1347,13 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#mcast-flow-control">"mcast-flow-control"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MCAST_FLOW_CONTROL_NAME)
   public void setMcastFlowControl(FlowControlParams values);
 
   /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isMcastFlowControlModifiable();
-
-  /**
    * The name of the corresponding property
    */
+  @ConfigAttribute(type=FlowControlParams.class)
   public static final String MCAST_FLOW_CONTROL_NAME = "mcast-flow-control";
 
   /**
@@ -1423,6 +1397,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#udp-fragment-size">"udp-fragment-size"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=UDP_FRAGMENT_SIZE_NAME)
   public int getUdpFragmentSize();
 
   /**
@@ -1430,20 +1405,10 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#udp-fragment-size">"udp-fragment-size"</a>
    * property
    */
+  @ConfigAttributeSetter(name=UDP_FRAGMENT_SIZE_NAME)
   public void setUdpFragmentSize(int value);
 
   /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isUdpFragmentSizeModifiable();
-
-  /**
-   * The name of the corresponding property
-   */
-  public static final String UDP_FRAGMENT_SIZE_NAME = "udp-fragment-size";
-
-  /**
    * The default value of the corresponding property
    */
   public static final int DEFAULT_UDP_FRAGMENT_SIZE = 60000;
@@ -1456,7 +1421,11 @@ public interface DistributionConfig extends Config, LogConfig {
   */
   public static final int MAX_UDP_FRAGMENT_SIZE = 60000;
 
-
+  /**
+   * The name of the corresponding property
+   */
+  @ConfigAttribute(type=Integer.class, min=MIN_UDP_FRAGMENT_SIZE, max=MAX_UDP_FRAGMENT_SIZE)
+  public static final String UDP_FRAGMENT_SIZE_NAME = "udp-fragment-size";
 
 
 
@@ -1466,6 +1435,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#udp-send-buffer-size">"udp-send-buffer-size"</a>
    * property
    */
+  @ConfigAttributeGetter(name=UDP_SEND_BUFFER_SIZE_NAME)
   public int getUdpSendBufferSize();
 
   /**
@@ -1473,20 +1443,10 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#udp-send-buffer-size">"udp-send-buffer-size"</a>
    * property
    */
+  @ConfigAttributeSetter(name=UDP_SEND_BUFFER_SIZE_NAME)
   public void setUdpSendBufferSize(int value);
 
   /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isUdpSendBufferSizeModifiable();
-
-  /**
-   * The name of the corresponding property
-   */
-  public static final String UDP_SEND_BUFFER_SIZE_NAME = "udp-send-buffer-size";
-
-  /**
    * The default value of the corresponding property
    */
   public static final int DEFAULT_UDP_SEND_BUFFER_SIZE = 65535;
@@ -1497,13 +1457,18 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final int MIN_UDP_SEND_BUFFER_SIZE = 2048;
 
-
+  /**
+   * The name of the corresponding property
+   */
+  @ConfigAttribute(type=Integer.class, min=MIN_UDP_SEND_BUFFER_SIZE)
+  public static final String UDP_SEND_BUFFER_SIZE_NAME = "udp-send-buffer-size";
 
   /**
    * Get the value of the
    * <a href="../DistributedSystem.html#udp-recv-buffer-size">"udp-recv-buffer-size"</a>
    * property
    */
+  @ConfigAttributeGetter(name=UDP_RECV_BUFFER_SIZE_NAME)
   public int getUdpRecvBufferSize();
 
   /**
@@ -1511,20 +1476,10 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#udp-recv-buffer-size">"udp-recv-buffer-size"</a>
    * property
    */
+  @ConfigAttributeSetter(name=UDP_RECV_BUFFER_SIZE_NAME)
   public void setUdpRecvBufferSize(int value);
 
   /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isUdpRecvBufferSizeModifiable();
-
-  /**
-   * The name of the corresponding property
-   */
-  public static final String UDP_RECV_BUFFER_SIZE_NAME = "udp-recv-buffer-size";
-
-  /**
    * The default value of the unicast receive buffer size property
    */
   public static final int DEFAULT_UDP_RECV_BUFFER_SIZE = 1048576;
@@ -1543,24 +1498,28 @@ public interface DistributionConfig extends Config, LogConfig {
 
 
   /**
+   * The name of the corresponding property
+   */
+  @ConfigAttribute(type=Integer.class, min=MIN_UDP_RECV_BUFFER_SIZE)
+  public static final String UDP_RECV_BUFFER_SIZE_NAME = "udp-recv-buffer-size";
+
+  /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#disable-tcp">"disable-tcp"</a>
    * property
    */
+  @ConfigAttributeGetter(name=DISABLE_TCP_NAME)
   public boolean getDisableTcp();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#disable-tcp">"disable-tcp"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=DISABLE_TCP_NAME)
   public void setDisableTcp(boolean newValue);
-  /**
-   * Returns true if the value of the DISABLE_TCP attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isDisableTcpModifiable();
+
   /** The name of the corresponding property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String DISABLE_TCP_NAME = "disable-tcp";
 
   /** The default value of the corresponding property */
@@ -1570,6 +1529,7 @@ public interface DistributionConfig extends Config, LogConfig {
   /**
    * Turns on timing statistics for the distributed system
    */
+  @ConfigAttributeSetter(name=ENABLE_TIME_STATISTICS_NAME)
   public void setEnableTimeStatistics(boolean newValue);
 
   /**
@@ -1577,9 +1537,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#enable-time-statistics">enable-time-statistics</a>
    * property
    */
+  @ConfigAttributeGetter(name=ENABLE_TIME_STATISTICS_NAME)
   public boolean getEnableTimeStatistics();
 
   /** the name of the corresponding property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String ENABLE_TIME_STATISTICS_NAME = "enable-time-statistics";
 
   /** The default value of the corresponding property */
@@ -1590,7 +1552,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Sets the value for 
    <a href="../DistributedSystem.html#use-cluster-configuration">use-shared-configuration</a>
    */
-  
+  @ConfigAttributeSetter(name=USE_CLUSTER_CONFIGURATION_NAME)
   public void setUseSharedConfiguration(boolean newValue);
 
   /**
@@ -1598,9 +1560,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#use-cluster-configuration">use-cluster-configuration</a>
    * property
    */
+  @ConfigAttributeGetter(name=USE_CLUSTER_CONFIGURATION_NAME)
   public boolean getUseSharedConfiguration();
 
   /** the name of the corresponding property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String USE_CLUSTER_CONFIGURATION_NAME = "use-cluster-configuration";
 
   /** The default value of the corresponding property */
@@ -1610,7 +1574,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Sets the value for 
    <a href="../DistributedSystem.html#enable-cluster-configuration">enable-cluster-configuration</a>
    */
-  
+  @ConfigAttributeSetter(name=ENABLE_CLUSTER_CONFIGURATION_NAME)
   public void setEnableClusterConfiguration(boolean newValue);
 
   /**
@@ -1618,13 +1582,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#enable-cluster-configuration">enable-cluster-configuration</a>
    * property
    */
+  @ConfigAttributeGetter(name=ENABLE_CLUSTER_CONFIGURATION_NAME)
   public boolean getEnableClusterConfiguration();
 
   /** the name of the corresponding property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String ENABLE_CLUSTER_CONFIGURATION_NAME = "enable-cluster-configuration";
   /** The default value of the corresponding property */
   public static final boolean DEFAULT_ENABLE_CLUSTER_CONFIGURATION = true;
-  
+
+  @ConfigAttribute(type=Boolean.class)
   public static final String LOAD_CLUSTER_CONFIG_FROM_DIR_NAME = "load-cluster-configuration-from-dir";
   public static final boolean DEFAULT_LOAD_CLUSTER_CONFIG_FROM_DIR = false;
   
@@ -1633,6 +1600,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#cluster-configuration-dir">cluster-configuration-dir</a>
    * property
    */
+  @ConfigAttributeGetter(name=LOAD_CLUSTER_CONFIG_FROM_DIR_NAME)
   public boolean getLoadClusterConfigFromDir();
   
   /**
@@ -1640,21 +1608,28 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#cluster-configuration-dir">cluster-configuration-dir</a>
    * property
    */
+  @ConfigAttributeSetter(name=LOAD_CLUSTER_CONFIG_FROM_DIR_NAME)
   public void setLoadClusterConfigFromDir(boolean newValue);
-  
+
+  @ConfigAttribute(type=String.class)
   public static final String CLUSTER_CONFIGURATION_DIR = "cluster-configuration-dir";
   public static final String DEFAULT_CLUSTER_CONFIGURATION_DIR = System.getProperty("user.dir");
-  
-  public String getClusterConfigDir(); 
+
+  @ConfigAttributeGetter(name=CLUSTER_CONFIGURATION_DIR)
+  public String getClusterConfigDir();
+  @ConfigAttributeSetter(name=CLUSTER_CONFIGURATION_DIR)
   public void setClusterConfigDir(final String clusterConfigDir);
   
   /** Turns on network partition detection */
+  @ConfigAttributeSetter(name=ENABLE_NETWORK_PARTITION_DETECTION_NAME)
   public void setEnableNetworkPartitionDetection(boolean newValue);
   /**
    * Returns the value of the enable-network-partition-detection property
    */
+  @ConfigAttributeGetter(name=ENABLE_NETWORK_PARTITION_DETECTION_NAME)
   public boolean getEnableNetworkPartitionDetection();
   /** the name of the corresponding property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String ENABLE_NETWORK_PARTITION_DETECTION_NAME =
     "enable-network-partition-detection";
   public static final boolean DEFAULT_ENABLE_NETWORK_PARTITION_DETECTION = false;
@@ -1664,6 +1639,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#member-timeout">"member-timeout"</a>
    * property
    */
+  @ConfigAttributeGetter(name=MEMBER_TIMEOUT_NAME)
   public int getMemberTimeout();
 
   /**
@@ -1671,20 +1647,10 @@ public interface DistributionConfig extends Config, LogConfig {
    * <a href="../DistributedSystem.html#member-timeout">"member-timeout"</a>
    * property
    */
+  @ConfigAttributeSetter(name=MEMBER_TIMEOUT_NAME)
   public void setMemberTimeout(int value);
 
   /**
-   * Returns true if the corresponding property is currently modifiable.
-   * Some attributes can't be modified while a DistributedSystem is running.
-   */
-  public boolean isMemberTimeoutModifiable();
-
-  /**
-   * The name of the corresponding property
-   */
-  public static final String MEMBER_TIMEOUT_NAME = "member-timeout";
-
-  /**
    * The default value of the corresponding property
    */
   public static final int DEFAULT_MEMBER_TIMEOUT = 5000;
@@ -1694,14 +1660,21 @@ public interface DistributionConfig extends Config, LogConfig {
 
   /**The maximum member-timeout setting of 600000 millieseconds */
   public static final int MAX_MEMBER_TIMEOUT = 600000;
+  /**
+   * The name of the corresponding property
+   */
+  @ConfigAttribute(type=Integer.class, min=MIN_MEMBER_TIMEOUT, max=MAX_MEMBER_TIMEOUT)
+  public static final String MEMBER_TIMEOUT_NAME = "member-timeout";
 
-
+  @ConfigAttribute(type=int[].class)
   public static final String MEMBERSHIP_PORT_RANGE_NAME = "membership-port-range";
   
   public static final int[] DEFAULT_MEMBERSHIP_PORT_RANGE = new int[]{1024,65535};
-  
+
+  @ConfigAttributeGetter(name=MEMBERSHIP_PORT_RANGE_NAME)
   public int[] getMembershipPortRange();
-  
+
+  @ConfigAttributeSetter(name=MEMBERSHIP_PORT_RANGE_NAME)
   public void setMembershipPortRange(int[] range);
   
   /**
@@ -1709,20 +1682,18 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#conserve-sockets">"conserve-sockets"</a>
    * property
    */
+  @ConfigAttributeGetter(name=CONSERVE_SOCKETS_NAME)
   public boolean getConserveSockets();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#conserve-sockets">"conserve-sockets"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=CONSERVE_SOCKETS_NAME)
   public void setConserveSockets(boolean newValue);
-  /**
-   * Returns true if the value of the ConserveSockets attribute can currently
-   * be modified.
-   * Some attributes can not be modified while the system is running.
-   */
-  public boolean isConserveSocketsModifiable();
+
   /** The name of the "conserveSockets" property */
+  @ConfigAttribute(type=Boolean.class)
   public static final String CONSERVE_SOCKETS_NAME = "conserve-sockets";
 
   /** The default value of the "conserveSockets" property */
@@ -1733,14 +1704,17 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#roles">"roles"</a>
    * property
    */
+  @ConfigAttributeGetter(name=ROLES_NAME)
   public String getRoles();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#roles">"roles"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=ROLES_NAME)
   public void setRoles(String roles);
   /** The name of the "roles" property */
+  @ConfigAttribute(type=String.class)
   public static final String ROLES_NAME = "roles";
   /** The default value of the "roles" property */
   public static final String DEFAULT_ROLES = "";
@@ -1748,6 +1722,7 @@ public interface DistributionConfig extends Config, LogConfig {
 
   /**
    * The name of the "max wait time for reconnect" property */
+  @ConfigAttribute(type=Integer.class)
   public static final String MAX_WAIT_TIME_FOR_RECONNECT_NAME = "max-wait-time-reconnect";
 
   /**
@@ -1758,16 +1733,19 @@ public interface DistributionConfig extends Config, LogConfig {
   /**
    * Sets the max wait timeout, in milliseconds, for reconnect.
    * */
+  @ConfigAttributeSetter(name=MAX_WAIT_TIME_FOR_RECONNECT_NAME)
   public void setMaxWaitTimeForReconnect( int timeOut);
 
   /**
    * Returns the max wait timeout, in milliseconds, for reconnect.
    * */
+  @ConfigAttributeGetter(name=MAX_WAIT_TIME_FOR_RECONNECT_NAME)
   public int getMaxWaitTimeForReconnect();
 
   /**
    * The name of the "max number of tries for reconnect" property.
    * */
+  @ConfigAttribute(type=Integer.class)
   public static final String MAX_NUM_RECONNECT_TRIES = "max-num-reconnect-tries";
 
   /**
@@ -1778,11 +1756,13 @@ public interface DistributionConfig extends Config, LogConfig {
   /**
    * Sets the max number of tries for reconnect.
    * */
+  @ConfigAttributeSetter(name=MAX_NUM_RECONNECT_TRIES)
   public void setMaxNumReconnectTries(int tries);
 
   /**
    * Returns the value for max number of tries for reconnect.
    * */
+  @ConfigAttributeGetter(name=MAX_NUM_RECONNECT_TRIES)
   public int getMaxNumReconnectTries();
 
   // ------------------- Asynchronous Messaging Properties -------------------
@@ -1792,22 +1772,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#async-distribution-timeout">
    * "async-distribution-timeout"</a> property.
    */
+  @ConfigAttributeGetter(name=ASYNC_DISTRIBUTION_TIMEOUT_NAME)
   public int getAsyncDistributionTimeout();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#async-distribution-timeout">
    * "async-distribution-timeout"</a> property.
    */
+  @ConfigAttributeSetter(name=ASYNC_DISTRIBUTION_TIMEOUT_NAME)
   public void setAsyncDistributionTimeout(int newValue);
-  /**
-   * Returns true if the value of the asyncDistributionTimeout attribute can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isAsyncDistributionTimeoutModifiable();
 
-  /** The name of the "asyncDistributionTimeout" property */
-  public static final String ASYNC_DISTRIBUTION_TIMEOUT_NAME = "async-distribution-timeout";
   /** The default value of "asyncDistributionTimeout" is <code>0</code>. */
   public static final int DEFAULT_ASYNC_DISTRIBUTION_TIMEOUT = 0;
   /** The minimum value of "asyncDistributionTimeout" is <code>0</code>. */
@@ -1815,55 +1789,48 @@ public interface DistributionConfig extends Config, LogConfig {
   /** The maximum value of "asyncDistributionTimeout" is <code>60000</code>. */
   public static final int MAX_ASYNC_DISTRIBUTION_TIMEOUT = 60000;
 
+  /** The name of the "asyncDistributionTimeout" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ASYNC_DISTRIBUTION_TIMEOUT, max=MAX_ASYNC_DISTRIBUTION_TIMEOUT)
+  public static final String ASYNC_DISTRIBUTION_TIMEOUT_NAME = "async-distribution-timeout";
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#async-queue-timeout">
    * "async-queue-timeout"</a> property.
    */
+  @ConfigAttributeGetter(name=ASYNC_QUEUE_TIMEOUT_NAME)
   public int getAsyncQueueTimeout();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#async-queue-timeout">
    * "async-queue-timeout"</a> property.
    */
+  @ConfigAttributeSetter(name=ASYNC_QUEUE_TIMEOUT_NAME)
   public void setAsyncQueueTimeout(int newValue);
-  /**
-   * Returns true if the value of the asyncQueueTimeout attribute can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isAsyncQueueTimeoutModifiable();
 
-  /** The name of the "asyncQueueTimeout" property */
-  public static final String ASYNC_QUEUE_TIMEOUT_NAME = "async-queue-timeout";
   /** The default value of "asyncQueueTimeout" is <code>60000</code>. */
   public static final int DEFAULT_ASYNC_QUEUE_TIMEOUT = 60000;
   /** The minimum value of "asyncQueueTimeout" is <code>0</code>. */
   public static final int MIN_ASYNC_QUEUE_TIMEOUT = 0;
   /** The maximum value of "asyncQueueTimeout" is <code>86400000</code>. */
   public static final int MAX_ASYNC_QUEUE_TIMEOUT = 86400000;
-
+  /** The name of the "asyncQueueTimeout" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ASYNC_QUEUE_TIMEOUT, max=MAX_ASYNC_QUEUE_TIMEOUT)
+  public static final String ASYNC_QUEUE_TIMEOUT_NAME = "async-queue-timeout";
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#async-max-queue-size">
    * "async-max-queue-size"</a> property.
    */
+  @ConfigAttributeGetter(name=ASYNC_MAX_QUEUE_SIZE_NAME)
   public int getAsyncMaxQueueSize();
   /**
    * Sets the value of the <a
    * href="../DistributedSystem.html#async-max-queue-size">
    * "async-max-queue-size"</a> property.
    */
+  @ConfigAttributeSetter(name=ASYNC_MAX_QUEUE_SIZE_NAME)
   public void setAsyncMaxQueueSize(int newValue);
-  /**
-   * Returns true if the value of the asyncMaxQueueSize attribute can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isAsyncMaxQueueSizeModifiable();
 
-  /** The name of the "asyncMaxQueueSize" property */
-  public static final String ASYNC_MAX_QUEUE_SIZE_NAME = "async-max-queue-size";
   /** The default value of "asyncMaxQueueSize" is <code>8</code>. */
   public static final int DEFAULT_ASYNC_MAX_QUEUE_SIZE = 8;
   /** The minimum value of "asyncMaxQueueSize" is <code>0</code>. */
@@ -1871,7 +1838,11 @@ public interface DistributionConfig extends Config, LogConfig {
   /** The maximum value of "asyncMaxQueueSize" is <code>1024</code>. */
   public static final int MAX_ASYNC_MAX_QUEUE_SIZE = 1024;
 
+  /** The name of the "asyncMaxQueueSize" property */
+  @ConfigAttribute(type=Integer.class, min=MIN_ASYNC_MAX_QUEUE_SIZE, max=MAX_ASYNC_MAX_QUEUE_SIZE)
+  public static final String ASYNC_MAX_QUEUE_SIZE_NAME = "async-max-queue-size";
   /** @since 5.7 */
+  @ConfigAttribute(type=String.class)
   public static final String CLIENT_CONFLATION_PROP_NAME = "conflate-events";
   /** @since 5.7 */
   public static final String CLIENT_CONFLATION_PROP_VALUE_DEFAULT = "server";
@@ -1882,11 +1853,14 @@ public interface DistributionConfig extends Config, LogConfig {
   
      
   /** @since 9.0 */
+  @ConfigAttribute(type=Boolean.class)
   public static final String DISTRIBUTED_TRANSACTIONS_NAME = "distributed-transactions";
   public static final boolean DEFAULT_DISTRIBUTED_TRANSACTIONS = false;
 
+  @ConfigAttributeGetter(name=DISTRIBUTED_TRANSACTIONS_NAME)
   public boolean getDistributedTransactions();
 
+  @ConfigAttributeSetter(name=DISTRIBUTED_TRANSACTIONS_NAME)
   public void setDistributedTransactions(boolean value);
   
   /**
@@ -1895,6 +1869,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @since 5.7
    */
+  @ConfigAttributeGetter(name=CLIENT_CONFLATION_PROP_NAME)
   public String getClientConflation();
   /**
    * Sets the value of the <a
@@ -1902,15 +1877,15 @@ public interface DistributionConfig extends Config, LogConfig {
    * property.
    * @since 5.7
    */
+  @ConfigAttributeSetter(name=CLIENT_CONFLATION_PROP_NAME)
   public void setClientConflation(String clientConflation);
-  /** @since 5.7 */
-  public boolean isClientConflationModifiable();
   // -------------------------------------------------------------------------
   /**
    * Returns the value of the <a
    * href="../DistributedSystem.html#durable-client-id">"durable-client-id"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=DURABLE_CLIENT_ID_NAME)
   public String getDurableClientId();
 
   /**
@@ -1918,16 +1893,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#durable-client-id">"durable-client-id"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=DURABLE_CLIENT_ID_NAME)
   public void setDurableClientId(String durableClientId);
 
-  /**
-   * Returns true if the value of the durableClientId attribute can currently
-   * be modified. Some attributes can not be modified while the system is
-   * running.
-   */
-  public boolean isDurableClientIdModifiable();
-
   /** The name of the "durableClientId" property */
+  @ConfigAttribute(type=String.class)
   public static final String DURABLE_CLIENT_ID_NAME = "durable-client-id";
 
   /**
@@ -1941,6 +1911,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#durable-client-timeout">"durable-client-timeout"</a>
    * property.
    */
+  @ConfigAttributeGetter(name=DURABLE_CLIENT_TIMEOUT_NAME)
   public int getDurableClientTimeout();
 
   /**
@@ -1948,16 +1919,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#durable-client-timeout">"durable-client-timeout"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=DURABLE_CLIENT_TIMEOUT_NAME)
   public void setDurableClientTimeout(int durableClientTimeout);
 
-  /**
-   * Returns true if the value of the durableClientTimeout attribute can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isDurableClientTimeoutModifiable();
-
   /** The name of the "durableClientTimeout" property */
+  @ConfigAttribute(type=Integer.class)
   public static final String DURABLE_CLIENT_TIMEOUT_NAME = "durable-client-timeout";
 
   /**
@@ -1970,6 +1936,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns user module name for client authentication initializer in <a
    * href="../DistributedSystem.html#security-client-auth-init">"security-client-auth-init"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_CLIENT_AUTH_INIT_NAME)
   public String getSecurityClientAuthInit();
 
   /**
@@ -1977,16 +1944,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-client-auth-init">"security-client-auth-init"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_CLIENT_AUTH_INIT_NAME)
   public void setSecurityClientAuthInit(String attValue);
 
-  /**
-   * Returns true if the value of the authentication initializer method name can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isSecurityClientAuthInitModifiable();
-
   /** The name of user defined method name for "security-client-auth-init" property*/
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_CLIENT_AUTH_INIT_NAME = "security-client-auth-init";
 
   /**
@@ -1999,6 +1961,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns user module name authenticating client credentials in <a
    * href="../DistributedSystem.html#security-client-authenticator">"security-client-authenticator"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_CLIENT_AUTHENTICATOR_NAME)
   public String getSecurityClientAuthenticator();
 
   /**
@@ -2006,16 +1969,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-client-authenticator">"security-client-authenticator"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_CLIENT_AUTHENTICATOR_NAME)
   public void setSecurityClientAuthenticator(String attValue);
 
-  /**
-   * Returns true if the value of the authenticating method name can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isSecurityClientAuthenticatorModifiable();
-
   /** The name of factory method for "security-client-authenticator" property */
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_CLIENT_AUTHENTICATOR_NAME = "security-client-authenticator";
 
   /**
@@ -2028,6 +1986,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns name of algorithm to use for Diffie-Hellman key exchange <a
    * href="../DistributedSystem.html#security-client-dhalgo">"security-client-dhalgo"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_CLIENT_DHALGO_NAME)
   public String getSecurityClientDHAlgo();
 
   /**
@@ -2035,18 +1994,14 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-client-dhalgo">"security-client-dhalgo"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_CLIENT_DHALGO_NAME)
   public void setSecurityClientDHAlgo(String attValue);
 
   /**
-   * Returns true if the value of the Diffie-Hellman algorithm can currently be
-   * modified. Some attributes can not be modified while the system is running.
-   */
-  public boolean isSecurityClientDHAlgoModifiable();
-
-  /**
    * The name of the Diffie-Hellman symmetric algorithm "security-client-dhalgo"
    * property.
    */
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_CLIENT_DHALGO_NAME = "security-client-dhalgo";
 
   /**
@@ -2061,6 +2016,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns user defined method name for peer authentication initializer in <a
    * href="../DistributedSystem.html#security-peer-auth-init">"security-peer-auth-init"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_PEER_AUTH_INIT_NAME)
   public String getSecurityPeerAuthInit();
 
   /**
@@ -2068,16 +2024,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-peer-auth-init">"security-peer-auth-init"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_PEER_AUTH_INIT_NAME)
   public void setSecurityPeerAuthInit(String attValue);
 
-  /**
-   * Returns true if the value of the AuthInit method name can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isSecurityPeerAuthInitModifiable();
-
   /** The name of user module for "security-peer-auth-init" property*/
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_PEER_AUTH_INIT_NAME = "security-peer-auth-init";
 
   /**
@@ -2090,6 +2041,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns user defined method name authenticating peer's credentials in <a
    * href="../DistributedSystem.html#security-peer-authenticator">"security-peer-authenticator"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_PEER_AUTHENTICATOR_NAME)
   public String getSecurityPeerAuthenticator();
 
   /**
@@ -2097,16 +2049,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-peer-authenticator">"security-peer-authenticator"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_PEER_AUTHENTICATOR_NAME)
   public void setSecurityPeerAuthenticator(String attValue);
 
-  /**
-   * Returns true if the value of the security module name can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isSecurityPeerAuthenticatorModifiable();
-
   /** The name of user defined method for "security-peer-authenticator" property*/
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_PEER_AUTHENTICATOR_NAME = "security-peer-authenticator";
 
   /**
@@ -2119,6 +2066,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns user module name authorizing client credentials in <a
    * href="../DistributedSystem.html#security-client-accessor">"security-client-accessor"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_CLIENT_ACCESSOR_NAME)
   public String getSecurityClientAccessor();
 
   /**
@@ -2126,9 +2074,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-client-accessor">"security-client-accessor"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_CLIENT_ACCESSOR_NAME)
   public void setSecurityClientAccessor(String attValue);
 
   /** The name of the factory method for "security-client-accessor" property */
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_CLIENT_ACCESSOR_NAME = "security-client-accessor";
 
   /**
@@ -2141,6 +2091,7 @@ public interface DistributionConfig extends Config, LogConfig {
    * Returns user module name authorizing client credentials in <a
    * href="../DistributedSystem.html#security-client-accessor-pp">"security-client-accessor-pp"</a>
    */
+  @ConfigAttributeGetter(name=SECURITY_CLIENT_ACCESSOR_PP_NAME)
   public String getSecurityClientAccessorPP();
 
   /**
@@ -2148,9 +2099,11 @@ public interface DistributionConfig extends Config, LogConfig {
    * href="../DistributedSystem.html#security-client-accessor-pp">"security-client-accessor-pp"</a>
    * property.
    */
+  @ConfigAttributeSetter(name=SECURITY_CLIENT_ACCESSOR_PP_NAME)
   public void setSecurityClientAccessorPP(String attValue);
 
   /** The name of the factory method for "security-client-accessor-pp" property */
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_CLIENT_ACCESSOR_PP_NAME = "security-client-accessor-pp";
 
   /**
@@ -2164,6 +2117,7 @@ public interface DistributionConfig extends Config, LogConfig {
    *
    * @return the current security log-level
    */
+  @ConfigAttributeGetter(name=SECURITY_LOG_LEVEL_NAME)
   public int getSecurityLogLevel();
 
   /**
@@ -2172,19 +2126,16 @@ public interface DistributionConfig extends Config, LogConfig {
    * @param level
    *                the new security log-level
    */
+  @ConfigAttributeSetter(name=SECURITY_LOG_LEVEL_NAME)
   public void setSecurityLogLevel(int level);
 
   /**
-   * Returns true if the value of the logLevel attribute can currently be
-   * modified. Some attributes can not be modified while the system is running.
-   */
-  public boolean isSecurityLogLevelModifiable();
-
-  /**
    * The name of "security-log-level" property that sets the log-level for
    * security logger obtained using
    * {@link DistributedSystem#getSecurityLogWriter()}
    */
+  // type is String because the config file "config", "debug", "fine" etc, but the setter getter accepts int
+  @ConfigAttribute(type=String.class)
   public static final String SECURITY_LOG_LEVEL_NAME = "security-log-level";
 
   /**
@@ -2192,6 +2143,7 @@ public interface DistributionConfig extends Config, LogConfig {
    *
    * @return <code>null</code> if logging information goes to standard out
    */
+  @ConfigAttributeGetter(name=SECURITY_LOG_FILE_NAME)
   public File getSecurityLogFile();
 
   /**
@@ -2209,19 +2161,14 @@ public interface DistributionConfig extends Config, LogConfig {
    *                 if the set failure is caused by an error when writing to
    *                 the system's configuration file.
    */
+  @ConfigAttributeSetter(name=SECURITY_LOG_FILE_NAME)
   public void setSecurityLogFile(File value);
 
   /**
-   * Returns true if the value of the <code>security-log-file</code> attribute
-   * can currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isSecurityLogFileModifiable();
-
-  /**
    * The name of the "security-log-file" property. This property is the path of
    * the file where security related messages are logged.
    */
+  @ConfigAttribute(type=File.class)
   public static final String SECURITY_LOG_FILE_NAME = "security-log-file";
 
   /**
@@ -2238,6 +2185,7 @@ public interface DistributionConfig extends Config, LogConfig {
    *
    * @return Timeout in milliseconds.
    */
+  @ConfigAttributeGetter(name=SECURITY_PEER_VERIFYMEMBER_TIMEOUT_NAME)
   public int getSecurityPeerMembershipTimeout();
 
   /**
@@ -2245,17 +2193,9 @@ public interface DistributionConfig extends Config, LogConfig {
    * than peer handshake timeout.
    * @param attValue
    */
+  @ConfigAttributeSetter(name=SECURITY_PEER_VERIFYMEMBER_TIMEOUT_NAME)
   public void setSecurityPeerMembershipTimeout(int attValue);
 
-  /**
-   * Returns true if the value of the peer membership timeout attribute can currently be modified.
-   * Some attributes can not be modified while the system is running.
-   * @return true if timeout is modifiable.
-   */
-  public boolean isSecurityPeerMembershipTimeoutModifiable();
-
-  /** The name of the peer membership check timeout property */
-  public static final String SECURITY_PEER_VERIFYMEMBER_TIMEOUT_NAME = "security-peer-verifymember-timeout";
 
   /**
    * The default peer membership check timeout is 1 second.
@@ -2268,6 +2208,9 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public static final int MAX_SECURITY_PEER_VERIFYMEMBER_TIMEOUT = 60000;
 
+  /** The name of the peer membership check timeout property */
+  @ConfigAttribute(type=Integer.class, min=0, max=MAX_SECURITY_PEER_VERIFYMEMBER_TIMEOUT)
+  public static final String SECURITY_PEER_VERIFYMEMBER_TIMEOUT_NAME = "security-peer-verifymember-timeout";
   /**
    * Returns all properties starting with <a
    * href="../DistributedSystem.html#security-">"security-"</a>.
@@ -2288,13 +2231,6 @@ public interface DistributionConfig extends Config, LogConfig {
    */
   public void setSecurity(String attName, String attValue);
 
-  /**
-   * Returns true if the value of the security attributes can
-   * currently be modified. Some attributes can not be modified while the
-   * system is running.
-   */
-  public boolean isSecurityModifiable();
-
   /** For the "security-" prefixed properties */
   public static final String SECURITY_PREFIX_NAME = "security-";
 
@@ -2322,6 +2258,7 @@ public interface DistributionConfig extends Config, LogConfig {
    /**
     * The property decides whether to remove unresponsive client from the server.
     */
+   @ConfigAttribute(type=Boolean.class)
    public static final String REMOVE_UNRESPONSIVE_CLIENT_PROP_NAME = "remove-unresponsive-client";
 
    /**
@@ -2334,6 +2271,7 @@ public interface DistributionConfig extends Config, LogConfig {
     * property.
     * @since 6.0
     */
+   @ConfigAttributeGetter(name=REMOVE_UNRESPONSIVE_CLIENT_PROP_NAME)
    public boolean getRemoveUnresponsiveClient();
    /**
     * Sets the value of the <a
@@ -2341,11 +2279,11 @@ public interface DistributionConfig extends Config, LogConfig {
     * property.
     * @since 6.0
     */
+   @ConfigAttributeSetter(name=REMOVE_UNRESPONSIVE_CLIENT_PROP_NAME)
    public void setRemoveUnresponsiveClient(boolean value);
-   /** @since 6.0 */
-   public boolean isRemoveUnresponsiveClientModifiable();
 
    /** @since 6.3 */
+   @ConfigAttribute(type=Boolean.class)
    public static final String DELTA_PROPAGATION_PROP_NAME = "delta-propagation";
 
    public static final boolean DEFAULT_DELTA_PROPAGATION = true;
@@ -2355,6 +2293,7 @@ public interface DistributionConfig extends Config, LogConfig {
     * property.
     * @since 6.3
     */
+   @ConfigAttributeGetter(name=DELTA_PROPAGATION_PROP_NAME)
    public boolean getDeltaPropagation();
 
    /**
@@ -2363,32 +2302,38 @@ public interface DistributionConfig extends Config, LogConfig {
     * property.
     * @since 6.3
     */
+   @ConfigAttributeSetter(name=DELTA_PROPAGATION_PROP_NAME)
    public void setDeltaPropagation(boolean value);
 
-   /** @since 6.3 */
-   public boolean isDeltaPropagationModifiable();
-   
+  public static final int MIN_DISTRIBUTED_SYSTEM_ID = -1;
+  public static final int MAX_DISTRIBUTED_SYSTEM_ID = 255;
    /**
     * @since 6.6
     */
+   @ConfigAttribute(type=Integer.class)
    public static final String DISTRIBUTED_SYSTEM_ID_NAME = "distributed-system-id";
    public static final int DEFAULT_DISTRIBUTED_SYSTEM_ID = -1;
 
+  @ConfigAttribute(type=String.class)
    public static final String REDUNDANCY_ZONE_NAME = "redundancy-zone";
-   public static final String DEFAULT_REDUNDANCY_ZONE = null;
+   public static final String DEFAULT_REDUNDANCY_ZONE = "";
    
    /**
     * @since 6.6
     */
+   @ConfigAttributeSetter(name=DISTRIBUTED_SYSTEM_ID_NAME)
    public void setDistributedSystemId(int distributedSystemId);
 
+  @ConfigAttributeSetter(name=REDUNDANCY_ZONE_NAME)
    public void setRedundancyZone(String redundancyZone);
    
    /**
     * @since 6.6
     */
+   @ConfigAttributeGetter(name=DISTRIBUTED_SYSTEM_ID_NAME)
    public int getDistributedSystemId();
-   
+
+  @ConfigAttributeGetter(name=REDUNDANCY_ZONE_NAME)
    public String getRedundancyZone();
    
    /**
@@ -2410,14 +2355,17 @@ public interface DistributionConfig extends Config, LogConfig {
    /**
     * @since 6.6
     */
+   @ConfigAttribute(type=Boolean.class)
    public static final String ENFORCE_UNIQUE_HOST_NAME = "enforce-unique-host";
    /** Using the system property to set the default here to retain backwards compatibility
     * with customers that are already using this system property.
     */
    public static boolean DEFAULT_ENFORCE_UNIQUE_HOST = Boolean.getBoolean("gemfire.EnforceUniqueHostStorageAllocation");
-   
+
+  @ConfigAttributeSetter(name=ENFORCE_UNIQUE_HOST_NAME)
    public void setEnforceUniqueHost(boolean enforceUniqueHost);
-   
+
+  @ConfigAttributeGetter(name=ENFORCE_UNIQUE_HOST_NAME)
    public boolean getEnforceUniqueHost();
 
    public Properties getUserDefinedProps();
@@ -2430,6 +2378,7 @@ public interface DistributionConfig extends Config, LogConfig {
     * @return the value of the property
     * @since 7.0
     */
+   @ConfigAttributeGetter(name=GROUPS_NAME)
    public String getGroups();
    /**
     * Sets the groups gemfire property.
@@ -2440,17 +2389,13 @@ public interface DistributionConfig extends Config, LogConfig {
     *   when writing to the system's configuration file.
     * @since 7.0
     */
+   @ConfigAttributeSetter(name=GROUPS_NAME)
    public void setGroups(String value);
-   /**
-    * Returns true if the value of the <code>groups</code> attribute can currently
-    * be modified.
-    * Some attributes can not be modified while the system is running.
-    * @since 7.0
-    */
-   public boolean isGroupsModifiable();
+
    /** The name of the "groups" property 
     * @since 7.0
     */
+   @ConfigAttribute(type=String.class)
    public static final String GROUPS_NAME = "groups";
    /**
     * The default groups.
@@ -2461,40 +2406,53 @@ public interface DistributionConfig extends Config, LogConfig {
 
    /** Any cl

<TRUNCATED>