From ea33c7d608072b455cb44b72d1a21e7b9827af5b Mon Sep 17 00:00:00 2001 From: junhyeong9812 Date: Sat, 13 Jun 2026 18:35:26 +0900 Subject: [PATCH] Fix reserveMethodNames to reserve each supplied name GeneratedClass.reserveMethodNames(String...) passed the entire varargs array to MethodName.of() inside the per-name loop instead of the current element. Since MethodName.of(String...) joins all parts into a single camel-case name, reserving two or more names (for example "apply" and "test") produced "applyTest", and the per-element check Assert.state(generatedName.equals(reservedMethodName)) failed with an IllegalStateException. Single-name calls worked only by accident. Reserve each supplied name individually by passing the loop variable. Signed-off-by: junhyeong9812 --- .../org/springframework/aot/generate/GeneratedClass.java | 2 +- .../springframework/aot/generate/GeneratedClassTests.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/aot/generate/GeneratedClass.java b/spring-core/src/main/java/org/springframework/aot/generate/GeneratedClass.java index e7137dc1e3a3..77a6b62bad25 100644 --- a/spring-core/src/main/java/org/springframework/aot/generate/GeneratedClass.java +++ b/spring-core/src/main/java/org/springframework/aot/generate/GeneratedClass.java @@ -81,7 +81,7 @@ private GeneratedClass(@Nullable GeneratedClass enclosingClass, ClassName name, */ public void reserveMethodNames(String... reservedMethodNames) { for (String reservedMethodName : reservedMethodNames) { - String generatedName = generateSequencedMethodName(MethodName.of(reservedMethodNames)); + String generatedName = generateSequencedMethodName(MethodName.of(reservedMethodName)); Assert.state(generatedName.equals(reservedMethodName), () -> String.format("Unable to reserve method name '%s'", reservedMethodName)); } diff --git a/spring-core/src/test/java/org/springframework/aot/generate/GeneratedClassTests.java b/spring-core/src/test/java/org/springframework/aot/generate/GeneratedClassTests.java index 8220ac299554..acc1c4debc40 100644 --- a/spring-core/src/test/java/org/springframework/aot/generate/GeneratedClassTests.java +++ b/spring-core/src/test/java/org/springframework/aot/generate/GeneratedClassTests.java @@ -78,6 +78,14 @@ void reserveMethodNamesReservesNames() { assertThat(generatedMethod.getName()).isEqualTo("apply1"); } + @Test + void reserveMethodNamesWhenMultipleNamesReservesEachName() { + GeneratedClass generatedClass = createGeneratedClass(TEST_CLASS_NAME); + generatedClass.reserveMethodNames("apply", "test"); + assertThat(generatedClass.getMethods().add("apply", emptyMethodCustomizer).getName()).isEqualTo("apply1"); + assertThat(generatedClass.getMethods().add("test", emptyMethodCustomizer).getName()).isEqualTo("test1"); + } + @Test void generateMethodNameWhenAllEmptyPartsGeneratesSetName() { GeneratedClass generatedClass = createGeneratedClass(TEST_CLASS_NAME);