Releases: gestalt-config/gestalt
v0.34.0 Runtime evaluation of string substitution and A/B Testing.
What's Changed
- feat: Differentiate between immediate evaluation at load time and deferred evaluation when getting the configuration. #226 by @credmond-git in #227
- feat: A/B Testing: Use a comma-separated list, where each element is a colon-separated pair of a threshold and its corresponding value. If an element has no threshold, it is treated as the default. For example, the format "10:red,30:green,blue" defines ranges and outcomes for random distributions: numbers from 1 to 10 correspond to red, 11 to 30 correspond to green, and all numbers above 30 default to blue. #219
Full Changelog: v0.33.1...v0.34.0
v0.33.1 Publish to https://central.sonatype.com
- Publish to https://central.sonatype.com instead of https://oss.sonatype.org
- No code changes
Full Changelog: v0.33.0...v0.33.1
v0.33.0 Annotations
What's Changed
- Feat/annotations by @credmond-git in #225
Certain annotations can be applied to a configuration using @{annotation}
, this will covert the annotation to metadata that can be applied to the node. Then the metadata is used to apply the intended behaviour to the node.
For example, we can apply the temporary node feature on a node by using the annotation @{temp:1}
my.password=abcdef@{temp:1}
annotation | parameter | description |
---|---|---|
temp | (int) Number of times this temp node can be read | restrict the number of times a value can be read before it is released |
encrypt | (boolean) if we should apply to this node | Encrypts the node in memory. |
nocache | (boolean) if we should apply to this node | Will not cache the node. If a node is part of a object the whole object will not be cached. |
secret | (boolean) if we should apply to this node | Treats the node as a secret, so it will not print it out in errors or the debug print. |
Trim Whitespace
By default, white spaces before and after the annotation are trimmed. You can disable this feature using the gestalt builder and setting setAnnotationTrimWhiteSpace(false)
GestaltBuilder builder = new GestaltBuilder();
Gestalt gestalt = builder
.addSource(MapConfigSourceBuilder.builder()
.setCustomConfig(configs)
.build())
.setAnnotationTrimWhiteSpace(false)
.build();
Full Changelog: v0.32.2...v0.33.0
v0.32.2
What's Changed
- Feat/207 node include source factories by @credmond-git in #214
- Add additional node include sources:
- URL Config Source
- Env Vars
- Kubernetes
- System
- S3 (AWS)
- Blob (Azure)
- git
- Google Cloud Storage
- Add additional node include sources:
- test: additional git tests. by @credmond-git in #217
Full Changelog: v0.32.1...v0.32.2
v0.32.1 CDI Default Support
What's Changed
- docs: Update key features with string and node substitution. by @credmond-git in #206
- test: Add additional CDI tests. by @credmond-git in #210
- feat: Better support for defaults with CDI. by @credmond-git in #211
- feat: Additional tests for gestalt-git by @credmond-git in #212
- chore: Update dependencies.
Full Changelog: v0.32.0...v0.32.1
v0.32.0 Node Substitution (include nodes)
Using the $include keyword as part of a config path, you can include the referenced config node tree into the path provided. By default, the node is merged into the provided node under the current node. You can control the order of the nodes, by including a number where < 0 is included below the current node and > 0 is included above the current node. The root node is always 0. Having two nodes share the same order is undefined. For example: $include:-1 for included under the current node, and $include:1 for included over the current node. If you are included multiple nodes each node must have an order, or the results are undefined, and some includes may be lost.
You can include into the root or any sub node. It also supports nested include.
The include node must provide a source that is used to determine how to include the source. Each source accepts different parameters.
v0.31.3
What's Changed
Full Changelog: v0.31.2...v0.31.3
v0.31.2 In Memory Encryption of Nodes
v0.31.1 Support @Nullable annotations for Records and Objects.
What's Changed
- feat: Allow nullable for Records and object. by @credmond-git in #200
Full Changelog: v0.31.0...v0.31.1
v0.31.0 Temporary Secret node
What's Changed
Checks if the node is a leaf and a temporary secret. if it is, replaces the leaf node with a TemporaryLeafNode that can only be accessed a limited number of times. After the limited number of times, the value is released to be GC'ed. #197
Move ConfigNode processing to a new ConfigNodeProcessorService.
Order Config Node Processors.
Breaking changes
Add a service interface for ObservationService and ResultProcessorService, so users can implement their own if they wish.
This is a Breaking change for the GestaltBuilder. It should impact very few people as i dont really expect many people to provide their own ObservationService, or ResultProcessorService and if they do it is an easy change.
Full Changelog: v0.30.0...v0.31.0