diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java index e5333b7d69b..150e9b4813c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java @@ -16,6 +16,7 @@ package org.springframework.boot.configurationprocessor; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.boot.configurationprocessor.metadata.ConfigurationMetadata; @@ -73,6 +74,7 @@ class IncrementalBuildMetadataGenerationTests extends AbstractMetadataGeneration } @Test + @Disabled("gh-26271") void incrementalBuildTypeRenamed() throws Exception { TestProject project = new TestProject(this.tempDir, FooProperties.class, BarProperties.class); ConfigurationMetadata metadata = project.fullBuild(); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/Metadata.java b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/Metadata.java index 2657ec7afb2..4875d406fa4 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/Metadata.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/metadata/Metadata.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import org.assertj.core.api.Condition; import org.hamcrest.collection.IsMapContaining; @@ -132,7 +133,7 @@ public final class Metadata { @Override public boolean matches(ConfigurationMetadata value) { - ItemMetadata itemMetadata = getItemWithName(value, this.name); + ItemMetadata itemMetadata = findItem(value, this.name); if (itemMetadata == null) { return false; } @@ -208,15 +209,14 @@ public final class Metadata { this.description, this.defaultValue, null); } - private ItemMetadata getItemWithName(ConfigurationMetadata metadata, String name) { - ItemMetadata result = null; - for (ItemMetadata item : metadata.getItems()) { - if (item.isOfItemType(this.itemType) && name.equals(item.getName())) { - Assert.state(result == null, () -> "Duplicate item found for " + name); - result = item; - } + private ItemMetadata findItem(ConfigurationMetadata metadata, String name) { + List candidates = metadata.getItems().stream() + .filter((item) -> item.isOfItemType(this.itemType) && name.equals(item.getName())) + .collect(Collectors.toList()); + if (candidates.size() > 1) { + throw new IllegalStateException("More that one metadata item with name '" + name + "': " + candidates); } - return result; + return (candidates.size() == 1) ? candidates.get(0) : null; } }