-
Notifications
You must be signed in to change notification settings - Fork 484
Features
Pablo is a Java library that provides APIs to access and utilize properties that can change dynamically at runtime. It includes the following features:
Pablo provides classes that represent dynamic properties where the values are of specific types and can change at runtime.
Instead of writing code like this to deal with something hard to change at runtime:
String prop = System.getProperty("myProperty");
int x = DEFAULT_VALUE;
try {
x = Integer.parseInt(prop);
} catch (NumberFormatException e) {
// handle format issues
}
myMethod(x);
// ...
You can write much cleaner code to take advantage of a changing and type specific property:
DynamicIntProperty prop = DynamicPropertyFactory.getInstance().createIntProperty("myProperty");
// prop.get() may change value at runtime
myMethod(prop.get());
In addition, you can add callback listener to be notified when the property is changed:
prop.addCallback(new Runnable() {
public void run() {
// ...
}
});
Out of the box, in a fixed interval, Pablo will load configuration sources from a local file on classpath as well as a set of URLs defined in a system property.
You can define your own configuration source and poll scheduler by extending appropriate interface/class, and programmatically set it as the backing source of dynamic properties.
```java
PolledConfigurationSource source = createMyOwnSource();
AbstractPollingScheduler scheduler = createMyOwnScheduler();
DynamicPropertyFactory.initWithConfigurationSource(new DynamicConfiguration(source, scheduler));
```