Cagey Config
This is an abstraction layer for configuration that allows programs to subscribe to value changes and be notified when they occur, permitting live tuning of application logic and automatic stitching of configuration values from multiple sources. It does for configuration what SLF4J has done for logging.
Each application must declare a set of preferences for configuration sources, with each source able to contribute to the parameterization of the next. Configuration sources are each injected by a runtime module that should be placed into the application classpath before running the system. Failure to load a module will not cause the process to fail, but an exception will be thrown to report failures; it is up to the application to decide whether this failure should be considered fatal.
An implementation of the system for static declaration of default values is provided in the core package.