Property expansion

Configuration on steroids

Introduction

Property expansion is the process of replacing a value, or a part of a value, with the result of an expression.

The actual expression is a (dot-separated) path to another element in the same (logical) configuration.

Expansion expressions are written in the following format:

"${path.to.property}"

Expansion is performed after file inclusion allowing included files to also contain expansions.

Syntax

An expansion expression MUST:

  • be in string format ("...")

  • start with ${

  • end with }

  • contain only a (dot-separated) path to another property in the current configuration

{
    "property": "${path.to.property}",
}

Expansion expression MAY:

  • be embedded in a string

  • be combined

{
    "embedded": "Embedded: ${path.to.property}",
    "combined": "test-${path.to.property01}-${path.to.property01}"
}

If an expansion expression path contains an array, elements are referenced using an index property:

"${path.to.array.2.element}"

Scopes

Scopes are the named objects containing expansion result values.

The following scopes are available in addition to the configuration itself:

Name
Description

system

Java system properties

env

Process environment variables

secrets

External secrets. Requires secrets managemant to be enabled, see Secrets management.

Examples

To externalize a secret from the configuration file, define a system property containing the value and use expansion:

// Define system property 
-DldapBindPassword=secret

// Expansion
"bind_password": "${system.ldapBindPassword}"

Use a path defined in the environment in the configuration:

// Set base_dir to value of $HOME
"base_dir": "${env.HOME}"

Last updated