`YamlProcessor.getFlattenedMap` with `includeEmpty` returns a `null` key for an empty root mapping
Maintainer antworten meist innerhalb von 1 Tag
@erfannvb arbeitet bereits daran.
Seit 20.10.2026.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
Rechercherichtung
Das Issue nennt YamlProcessor.getFlattenedMap und buildFlattenedMap sowie einen Reproducer für ein leeres YAML-Root-Mapping. Lies diese Methoden und verfolge, wie der Root-Pfad behandelt wird, wenn includeEmpty true ist; der bereitgestellte Test zeigt das erwartete Ergebnis. Erledigt ist die Aufgabe, wenn das Flattening von {} eine leere Map ohne null-Schlüssel ergibt und das bestehende Verhalten für andere Eingaben erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
When getFlattenedMap(source, true, emptyValue) (added in 7.0.4 by #36197) is given an empty root map, such as a YAML document consisting of {}, it returns {null=emptyValue}. buildFlattenedMap stores an empty map under its parent path, and at the root that path is null.
class YamlProcessorEmptyRootTest {
@Test
void flattenedMapOfEmptyRootMappingHasNoNullKey() {
List<Map<String, Object>> result = new FlatteningYamlProcessor("{}").flatten();
assertThat(result).hasSize(1);
assertThat(result.get(0)).doesNotContainKey(null);
}
static class FlatteningYamlProcessor extends YamlProcessor {
FlatteningYamlProcessor(String yaml) {
setResources(new ByteArrayResource(yaml.getBytes()));
}
List<Map<String, Object>> flatten() {
List<Map<String, Object>> result = new ArrayList<>();
process((properties, map) -> result.add(getFlattenedMap(map, true, "")));
return result;
}
}
}
On 7.0.9 this fails with {null=""}. getFlattenedMap(map) returns {} for the same input.
The return type is Map<String, Object> in a @NullMarked package, so callers don't expect a null key. I'd expect an empty map: the root has no key under which the empty entry could be recorded.
This affects Spring Boot 4.1, whose OriginTrackedYamlLoader uses this method since spring-projects/spring-boot#48958. A {} document in an application.yml now gives an EnumerablePropertySource whose getPropertyNames() returns [null] (4.0.x returned []).
- Vorherrschende Sprache
- Java
- Sterne
- 60.3k
- Forks
- 38.7k
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 36
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus spring-projects/spring-framework
-
status: waiting-for-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
spring-projects/spring-framework#37614 ·
Maintainer antworten meist innerhalb von 1 Tag
-
status: waiting-for-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 87/100
spring-projects/spring-framework#37613 ·
Maintainer antworten meist innerhalb von 1 Tag
-
in: core status: waiting-for-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
spring-projects/spring-framework#37612 ·
Maintainer antworten meist innerhalb von 1 Tag
-
`WebClient` with default codecs drops `ProblemDetail` extension membersEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offenstatus: waiting-for-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
spring-projects/spring-framework#37503 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
StandardApiVersionDeprecationHandler generates nonconforming Sunset HTTP datesEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offenstatus: waiting-for-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
spring-projects/spring-framework#37486 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in spring-projects/spring-framework
Ähnliche Issues
-
azure-spring azure-spring-aad Client
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-sdk-for-java#51046 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
helm-knative-apply.sh fails with Helm 4Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenarea: triage theme: undefined
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
jhipster/generator-jhipster#35895 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
oracle/graalvm-reachability-metadata#11659 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Build failure report and inbox copy miss a proof split by colour codes, which the build log redactsOffenbug follow-up
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
Sanne/incus-spawn#1864 ·
Maintainer antworten meist innerhalb von 1 Tag