001package io.avaje.config;
002
003/**
004 * Additional source to load and update configuration.
005 */
006public interface ConfigurationSource {
007
008  /**
009   * Load additional configuration.
010   * <p>
011   * At this load time the configuration has already loaded properties
012   * from files and resources and configuration can be read provide
013   * configuration to the source like URL's to load more configuration
014   * from etc.
015   * <p>
016   * The {@link Configuration#setProperty(String, String)} method is
017   * used when loading the additional properties from the source.
018   * <p>
019   * Also note that the source can additionally use
020   * {@link Configuration#schedule(long, long, Runnable)} to schedule
021   * a period task to for example refresh data etc.
022   *
023   * @param configuration The configuration with initially properties.
024   */
025  void load(Configuration configuration);
026}