public static DynamicPropertyFactory initWithConfigurationSource(AbstractConfiguration config) {
        synchronized (ConfigurationManager.class) {
            if (config == null) {
                throw new NullPointerException("config is null");
            }
            if (ConfigurationManager.isConfigurationInstalled() && config != ConfigurationManager.instance) {
                throw new IllegalStateException("ConfigurationManager is already initialized with configuration "
                        + ConfigurationManager.getConfigInstance());
            }
            if (config instanceof DynamicPropertySupport) {
                return initWithConfigurationSource((DynamicPropertySupport) config);
            }
            return initWithConfigurationSource(new ConfigurationBackedDynamicPropertySupportImpl(config));
        }
    }
public static DynamicPropertyFactory initWithConfigurationSource(AbstractConfiguration config) {
        synchronized (ConfigurationManager.class) {
            if (config == null) {
                throw new NullPointerException("config is null");
            }
            if (ConfigurationManager.isConfigurationInstalled() && config != ConfigurationManager.instance) {
                throw new IllegalStateException("ConfigurationManager is already initialized with configuration "
                        + ConfigurationManager.getConfigInstance());
            }
            if (config instanceof DynamicPropertySupport) {
                return initWithConfigurationSource((DynamicPropertySupport) config);
            }
            return initWithConfigurationSource(new ConfigurationBackedDynamicPropertySupportImpl(config));
        }
    }
public static DynamicPropertyFactory initWithConfigurationSource ( AbstractConfiguration config ) { synchronized ( ConfigurationManager . class ) { if ( config == null ) { throw new NullPointerException ( "config is null" ) ; } if ( ConfigurationManager . isConfigurationInstalled ( ) && config != ConfigurationManager . instance ) { throw new IllegalStateException ( "ConfigurationManager is already initialized with configuration " + ConfigurationManager . getConfigInstance ( ) ) ; } if ( config instanceof DynamicPropertySupport ) { return initWithConfigurationSource ( ( DynamicPropertySupport ) config ) ; } return initWithConfigurationSource ( new ConfigurationBackedDynamicPropertySupportImpl ( config ) ) ; } }
Initialize the factory with an AbstractConfiguration.
<p/>
The initialization will register a ConfigurationListener with the configuration so that {@link DynamicProperty}
will receives a callback and refresh its value when a property is changed in the configuration.
<p/>
If the factory is already initialized with a default configuration source (see {@link #getInstance()}), it will re-register
itself with the new configuration source passed to this method. Otherwise, this method will throw IllegalArgumentException
if it has been initialized with a different and non-default configuration source. This method should be only called once.

@param config Configuration to be attached with DynamicProperty
@return the instance of DynamicPropertyFactory
@throws IllegalArgumentException if the factory has already been initialized with a non-default configuration source
Initialize the factory with an AbstractConfiguration . <p / > The initialization will register a ConfigurationListener with the configuration so that { @link DynamicProperty } will receives a callback and refresh its value when a property is changed in the configuration . <p / > If the factory is already initialized with a default configuration source ( see { @link #getInstance () } ) it will re - register itself with the new configuration source passed to this method . Otherwise this method will throw IllegalArgumentException if it has been initialized with a different and non - default configuration source . This method should be only called once .