Support for configuration backwards compatibility

See Configuration versioning for details on configuration versioning support by the framework.

When declaring ApplicationDetails via the getApplicationDetails() method in Gateway Application, application developers will have to define the version of supported application defined configuration. If the application configuration changes in future with breaking changes, it’s the responsibility of the developers to ensure that they provide necessary functions which will convert the older version of application configuration to the latest expected version.

The framework provides additional builder methods in newApplicationDetailsBuilder to define such configuration upgrading functions, for global configs, sharedConfigs and services. By default, a function which returns the same older version of configuration is used, if no functions are explicitly specified. See Gateway Framework API Javadoc for more details.

A Gateway application must specify the version of application configuration it supports and the version of framework expected framework configuration version, in its user guide or documentation, so that the users can use these version numbers in the configuration they create.

When starting an application, if a configuration file is not passed and only bootstrap configurations are used, the latest configuration version for both framework defined configuration and application defined configuration is used.