All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cerner.beadledom.configuration.EnvironmentConfigurationSource Maven / Gradle / Ivy

The newest version!
package com.cerner.beadledom.configuration;

import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.EnvironmentConfiguration;

/**
 * An implementation class of {@link ConfigurationSource} for the source of environment variables.
 *
 * @see Environment Variables
 *
 * @author Nathan Schile
 * @since 2.7
 */
public class EnvironmentConfigurationSource extends AbstractConfigurationSource {

  public static final int DEFAULT_PRIORITY = 400;
  private final int priority;
  private final Configuration configuration;

  private EnvironmentConfigurationSource(EnvironmentConfiguration configuration, int priority) {
    if (configuration == null) {
      throw new NullPointerException("configuration: null");
    }
    if (priority < 0) {
      throw new IllegalArgumentException("priority of a configuration cannot be negative");
    }

    this.configuration = configuration;
    this.priority = priority;
  }

  /**
   * Creates an instance of {@link EnvironmentConfigurationSource}.
   */
  public static EnvironmentConfigurationSource create() {
    return EnvironmentConfigurationSource.create(DEFAULT_PRIORITY);
  }

  /**
   * Creates an instance of {@link EnvironmentConfigurationSource}.
   *
   * @param priority priority at which this {@link ConfigurationSource} to be loaded among other
   *     Configuration sources
   */
  public static EnvironmentConfigurationSource create(int priority) {
    return new EnvironmentConfigurationSource(new EnvironmentConfiguration(), priority);
  }

  /**
   * Creates an instance of {@link EnvironmentConfigurationSource}.
   *
   * @param configuration the system configuration to delegate to
   * @param priority priority at which this {@link ConfigurationSource} to be loaded among other
   *     Configuration sources
   */
  public static EnvironmentConfigurationSource create(
      EnvironmentConfiguration configuration, int priority) {
    return new EnvironmentConfigurationSource(configuration, priority);
  }

  @Override
  public Configuration getConfig() {
    return configuration;
  }

  @Override
  public int getPriority() {
    return priority;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy