| :jbake-type: page |
| :jbake-status: published |
| |
| = Apache Tamaya - Extension: Optional Tamaya Configuration |
| |
| toc::[] |
| |
| |
| [[Optional]] |
| == Tamaya Optional (Extension Module) |
| |
| Tamaya _Optional_ is an extension module. Refer to the link:../extensions.html[extensions documentation] for further details. |
| |
| === What functionality this module provides ? |
| |
| Tamaya _Optional_ is for projects that want to benefit from Tamaya configuration optionally only. |
| E.g. doing an OSS project you can declare to support configuration with Tamaya as |
| an optional extension. This module can be added as a hard dependency to your code, hereby adding only |
| three artifacts. The _optional_ module automatically checks the availability of Tamaya on the |
| classpath and only if available it tries to access it for configuration evaluation. |
| Additionally an +EvaluationPolicy+ lets you define the precedence of configured values |
| (yours, or Tamaya ones, if present). |
| |
| |
| === Compatibility |
| |
| The module is based on Java 8. |
| |
| |
| === Installation |
| |
| To use Tamaya _optional_ you only must add the corresponding dependency to your module: |
| |
| [source, xml, subs=attributes+] |
| ----------------------------------------------- |
| <dependency> |
| <groupId>org.apache.tamaya.ext</groupId> |
| <artifactId>tamaya-optional</artifactId> |
| <version>{tamaya_version}</version> |
| </dependency> |
| ----------------------------------------------- |
| |
| |
| === Reading configuration using the Tamaya Optional Module |
| |
| Tamaya _Optional_ allows reading configuration with a small subset of functionality only. For more |
| advanced use cases consider using the Apache Tamaya as your main configuration API. When |
| creating your +OptionalConfiguration+ instance you also pass the logic to access a value |
| with your own configuration logic. Tamaya Optional will delegate to your logic as needed |
| (depending on the `EvaluationPolicy`). |
| |
| [source, java] |
| ----------------------------------------------- |
| BigDecimal interestRate = |
| OptionalConfiguration.of( |
| EvaluationPolicy.TAMAYA_OVERRIDES_OTHER, |
| (k) -> MyConfigMechanism.get(k) // String get(String key); |
| ) |
| .get("com.mycomp.ratecalculator.rate", BigDecimal.class)) |
| .orElse(BigDecimal.of(0.05d)); |
| ----------------------------------------------- |