Anotheria
ConfigureMe

Environments

ConfigureMe Environments.

Definitions

Environments is the feature of the ConfigureMe, that allow to predefine property values for the different usage situations.

Situations (actually, anything that have a common criteria) mean something like:

  • Different staging environments
  • Different servers
  • Different users
  • Different countries
  • Different groups of users ...

Environments support any level cascading. The main cascading principles are:

  • Property value from the lower level overrides property (same) value from the higher level.
  • If requested environment not exists, values will be taken from the higher level environment (root is the default environment).

Example This example covers all variants of environments using.

envexample.json

{
  "user": "defuser",
  "mail": "defuser@anotheria.net",

  "managers": {
    "user": "managers",
    "mail": "managers@anotheria.net"
  },

  "developers": {
    "mail": "devs@anotheria.net",

    "tom": {
      "user": "tom"
    },
    "klark": {
      "user": "klark",
      "mail": "klark@anotheria.net"
    }
  }
}

The table below shows what values we will have on what requested environment (levels are delimits by underline ('_') symbol).

Requested environmentUser Property ValueMail Property Value
defuserdefuser@anotheria.net
developersdefuserdevs@anotheria.net
developers_tomtomdevs@anotheria.net
developers_klarkklarkklark@anotheria.net
developers_bobdefuserdevs@anotheria.net
managersmanagersmanagers@anotheria.net
managers_bobmanagersmanagers@anotheria.net
unknownenvdefuserdefuser@anotheria.net
unknownenv_subenvdefuserdefuser@anotheria.net

Requesting environments

Set environment using system property

Configuration environment can be set on program running with the following command line parameter: java -Dconfigureme.defaultEnvironment=<environment> ....

Examples:

java -Dconfigureme.defaultEnvironment=developers ...
java -Dconfigureme.defaultEnvironment=developers_tom ...
java -Dconfigureme.defaultEnvironment=developers_tom_office ...

Set environment dynamically

Configuration environment can be set inside of program using the next code:

ConfigurationManager.INSTANCE.configure(EnvExampleConfig.getInstance(), "managers_tom");
String user = EnvExampleConfig.getInstance().getUser(); // user = "tom"