Nova Ordis Utilities Environment Variable Support
Internal
Overview
We install a static EnvironmentVariableProvider per class loading domain (JVM), to allow for environment-independent testing.
Usage Pattern
... EnvironmentVariableProvider p = EnvironmentVariableProvider.getInstance(); String value = p.getenv("RUNTIME_DIR"); ...
getInstance() invocation creates and caches a provider. The default implementation, in absence of any special configuration, is SystemEnvironmentVariableProvider, which delegates to:
System.getenv(name);
If "env.variable.provider.class.name" system property (the exact string is defined by EnvironmentVariableProvider.ENVIRONMENT_VARIABLE_PROVIDER_CLASS_NAME_SYSTEM_PROPERTY) is defined and contains a fully qualified valid class name that implements EnvironmentVariableProvider, it will be instantiated, cached and used. getInstance() will throw anIllegalStateException if failure to instantiate the custom class is encountered.
To reset the mechanism, use:
EnvironmentVariableProvider.reset();
This will cleared the cache instance.