Nova Ordis Utilities Environment Variable Support: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
Line 13: Line 13:
...
...
EnvironmentVariableProvider p = EnvironmentVariableProvider.getInstance();
EnvironmentVariableProvider p = EnvironmentVariableProvider.getInstance();
String value = p.getenv("RUNTIME_DIR");
...
...
</pre>
</pre>


getInstance() invocation creates and caches a provider. The default implementation, in absence of any special configuration, is SystemEnvironmentVariableProvider, which delegates to:


<pre>
System.getenv(name);
</pre>


If "env.variable.provider.class.name" system property (the exact string is defined by 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:
<pre>
EnvironmentVariableProvider.reset();
</pre>


    * @return the default EnvironmentVariableProvider for this JVM. If "env.variable.provider.class.name" (the exact
This will cleared the cache instance.
    * string is defined by ENVIRONMENT_VARIABLE_PROVIDER_CLASS_NAME_SYSTEM_PROPERTY) is defined and points to a fully
    * qualified class name that implements EnvironmentVariableProvider, it will be instantiated, cached and used.
    * If the system property is not defined, SystemEnvironmentVariableProvider will be used.
    *
    * @exception IllegalStateException if failure to instantiate the custom class is encountered.

Revision as of 17:03, 20 December 2016

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 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.