Berechneter Default-Wert
Mit @ComplexDefault
wird an das Property ein Algorithmus (eine Ableitung von DefaultValueProvider) annotiert, der den Default-Wert berechnet (einmalig bei Instanziierung der Konfiguration).
Beispiel für Enum
:
@ComplexDefault(DefaultFruit.class)
Fruit getFruit();
class DefaultFruit extends DefaultValueProvider {
@Override
public Object getDefaultValue(ConfigurationDescriptor descriptor, String propertyName) {
return Fruit.ORANGE;
}
}
Beispiel für eine Liste von Enum
s:
@ComplexDefault(DefaultFruits.class)
List<Fruit> getMyFruits();
class DefaultFruits extends DefaultValueProvider {
@Override
public Object getDefaultValue(ConfigurationDescriptor descriptor, String propertyName) {
return CollectionUtil.createList(Fruit.values());
}
}