Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Detail
#24756
Typisierte Konfiguration: Kein Fehler beim Zugriff auf nicht gesetzte mandatory Properties
Der Zugriff auf ein nicht gesetztes Property in einem Konfig-Item scheitert immer mit einer Exception. Das führt zu haufenweise Quirks-Code der Bauart
value = ref.isMandatory() ? (config.valueSet(ref) ? config.value(ref) : null) : config.value(ref);
Solange man generisch mit einem Config-Item arbeitet kann man das noch schreiben. Sobald man aber gerne die typisierte API verwenden möchte wird es richtig hässlich - valueSet prüfen über Descriptor, Property-Descriptor und Property-Namen, um dann auf anderem Weg den Wert über die typisiert API zu holen.
Verbesserung
Der Zugriff auf ein programmatisch erstelltes und nicht vollständig initialisiertes Config-Item liefert den typ-intrinsischen Default-Wert für den Typ des Properties. Dieser Default-Wert verletzt dann möglicherweise Constraints des Properties (z.B. non-nullable), aber das gilt für alle anderen Constraints ebenso.
Test
- test.com.top_logic.basic.config.TestReset.testUnsetMandatoryProperty()