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 Enums:

@ComplexDefault(DefaultFruits.class)
List<Fruit> getMyFruits();

class DefaultFruits extends DefaultValueProvider {
  @Override
  public Object getDefaultValue(ConfigurationDescriptor descriptor, String propertyName) {
    return CollectionUtil.createList(Fruit.values());
  }
}