Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

`YamlProcessor.getFlattenedMap` with `includeEmpty` returns a `null` key for an empty root mapping

Offen Anfängerfreundlich
#37,522 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
java, spring
Bereich
backend

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

status: waiting-for-triage

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

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus spring-projects/spring-framework

Alle Issues in spring-projects/spring-framework

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.