Repository navigation
Ageris 0.2.0
Ageris is a Java library for feature flags, runtime configuration and policies. It runs inside your application and needs no server: it reads configuration files that you keep wherever you like, and refreshes them in the background.
This is the first release of Ageris. It continues Merci, originally developed at Medallia, Inc. and released under the Apache License 2.0. Ageris is not affiliated with or endorsed by Medallia.
Get it
<dependency>
<groupId>io.github.lichtsinn</groupId>
<artifactId>ageris-core</artifactId>
<version>0.2.0</version>
</dependency>implementation 'io.github.lichtsinn:ageris-core:0.2.0'Requires Java 17 or later.
What is in it
- Feature flags that turn code paths on and off without a deployment.
- Runtime configuration as typed Java objects, called configs, or as plain JSON.
- Policies: configs that have behavior and work with live objects of your application, which you bind on
Ageris. A configuration file can never supply or replace a binding. - Immutable by design. Write a config as an immutable class or a Java record, and it stays that way: Ageris never changes it after loading. When a file changes, Ageris creates new objects and replaces the old ones, so your code never sees a half-updated config.
- Values that depend on context. Any feature flag, config or policy can differ by environment, cluster, user or any other context you define.
- Safe updates. A file that cannot be loaded changes nothing; what was loaded before keeps being served. Unchanged content is not loaded again.
- A wait for the first load, and a status per manager: not loaded, loaded, or stale, with the reason for the last failure.
- Listeners that are called when a manager's content or status changes.
evaluate, a lookup that returns the value together with the reason and the context that matched.InMemoryAgeris, which gives tests the same managers an application uses, with values set from Java.
See the README for a guide with examples.
Coming from Merci
The configuration file format is unchanged. The coordinates, the package and some defaults are not; see Migrating from Merci to Ageris. The most important change: a configuration that cannot be loaded now holds back the update instead of being skipped.
Dependencies
Jackson 2.22, slf4j 2.0 and commons-io 2.22.
Not in this release
The web sample module is not published. It needs newer versions of Jersey and Jetty before it can run on Java 17.