From aa72f4d553432c4003041694a9a0ee9f38be1069 Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Tue, 18 Mar 2025 11:17:15 +0800 Subject: [PATCH 1/2] Remove workaround for Java Records in tests See gh-44747 Signed-off-by: Yanming Zhou --- .../bind/ValueObjectBinderTests.java | 31 ++++++------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java index 4b843c7d62c..96ff571fdc7 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java @@ -36,14 +36,11 @@ import org.springframework.boot.context.properties.source.MockConfigurationPrope import org.springframework.core.DefaultParameterNameDiscoverer; import org.springframework.core.ResolvableType; import org.springframework.core.convert.ConversionService; -import org.springframework.core.test.tools.SourceFile; -import org.springframework.core.test.tools.TestCompiler; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.util.Assert; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; -import static org.assertj.core.api.Assertions.fail; /** * Tests for {@link ValueObjectBinder}. @@ -51,6 +48,7 @@ import static org.assertj.core.api.Assertions.fail; * @author Madhura Bhave * @author Phillip Webb * @author Pavel Anisimov + * @author Yanming Zhou */ class ValueObjectBinderTests { @@ -390,25 +388,12 @@ class ValueObjectBinderTests { @Test void bindToRecordWithDefaultValue() { MockConfigurationPropertySource source = new MockConfigurationPropertySource(); - source.put("test.record.property1", "value-from-config-1"); + source.put("test.property1", "value-from-config-1"); this.sources.add(source); - String recordProperties = """ - public record RecordProperties( - @org.springframework.boot.context.properties.bind.DefaultValue("default-value-1") String property1, - @org.springframework.boot.context.properties.bind.DefaultValue("default-value-2") String property2) { - } - """; - TestCompiler.forSystem().withSources(SourceFile.of(recordProperties)).compile((compiled) -> { - try { - ClassLoader cl = compiled.getClassLoader(); - Object bean = this.binder.bind("test.record", Class.forName("RecordProperties", true, cl)).get(); - assertThat(bean).hasFieldOrPropertyWithValue("property1", "value-from-config-1") - .hasFieldOrPropertyWithValue("property2", "default-value-2"); - } - catch (ClassNotFoundException ex) { - fail("Expected generated class 'RecordProperties' not found", ex); - } - }); + Bindable target = Bindable.of(RecordProperties.class); + RecordProperties bound = this.binder.bindOrCreate("test", target); + assertThat(bound.property1()).isEqualTo("value-from-config-1"); + assertThat(bound.property2()).isEqualTo("default-value-2"); } @Test // gh-38201 @@ -912,6 +897,10 @@ class ValueObjectBinderTests { record NamedRecordComponent(@Name("import") String importName) { } + record RecordProperties(@DefaultValue("default-value-1") String property1, + @DefaultValue("default-value-2") String property2) { + } + static class NonExtractableParameterName { private String value; From 19de2263e2ad3052b139476b4f47c9efb6e36ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Tue, 18 Mar 2025 09:50:20 +0100 Subject: [PATCH 2/2] Udate copyright year of changed file See gh-44747 --- .../boot/context/properties/bind/ValueObjectBinderTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java index 96ff571fdc7..2d9ad1a058d 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/bind/ValueObjectBinderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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.