Skip to content

Commit 2092d4f

Browse files
christophstroblmp911de
authored andcommitted
Encapsulate AOT repository generation model.
Decouple AOT processing as we previously created metadata and generated code. Also, reduce access of implementation modules to their required scope instead of allowing direct modification of the type and method/constructor. Closes: #3344 Original pull request: #3351
1 parent 6ac5cf8 commit 2092d4f

14 files changed

+664
-233
lines changed

src/main/java/org/springframework/data/repository/aot/generate/AotRepositoryConstructorBuilder.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
*/
1616
package org.springframework.data.repository.aot.generate;
1717

18+
import org.springframework.core.ResolvableType;
19+
import org.springframework.javapoet.CodeBlock;
1820
import org.springframework.javapoet.MethodSpec;
19-
import org.springframework.javapoet.TypeName;
2021

2122
/**
2223
* Builder for AOT Repository Constructors.
@@ -41,7 +42,7 @@ public interface AotRepositoryConstructorBuilder {
4142
* @param parameterName name of the parameter.
4243
* @param type parameter type.
4344
*/
44-
default void addParameter(String parameterName, TypeName type) {
45+
default void addParameter(String parameterName, ResolvableType type) {
4546
addParameter(parameterName, type, true);
4647
}
4748

@@ -52,7 +53,18 @@ default void addParameter(String parameterName, TypeName type) {
5253
* @param type parameter type.
5354
* @param createField whether to create a field for the parameter and assign its value to the field.
5455
*/
55-
void addParameter(String parameterName, TypeName type, boolean createField);
56+
default void addParameter(String parameterName, Class<?> type, boolean createField) {
57+
addParameter(parameterName, ResolvableType.forClass(type), createField);
58+
}
59+
60+
/**
61+
* Add constructor parameter.
62+
*
63+
* @param parameterName name of the parameter.
64+
* @param type parameter type.
65+
* @param createField whether to create a field for the parameter and assign its value to the field.
66+
*/
67+
void addParameter(String parameterName, ResolvableType type, boolean createField);
5668

5769
/**
5870
* Add constructor customizer. Customizer is invoked after adding constructor arguments and before assigning
@@ -72,7 +84,7 @@ interface ConstructorCustomizer {
7284
*
7385
* @param builder the constructor builder to be customized.
7486
*/
75-
void customize(MethodSpec.Builder builder);
87+
void customize(CodeBlock.Builder builder);
7688

7789
}
7890

0 commit comments

Comments
 (0)