Migrate to Palentir's JavaPoet
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Waiting to run Details
Build and Deploy Snapshot / Verify (push) Blocked by required conditions Details
Deploy Docs / Dispatch docs deployment (push) Waiting to run Details

Closes gh-35214
This commit is contained in:
Stéphane Nicoll 2025-07-17 16:25:46 +02:00
parent 200b3ea023
commit dd8313f200
7 changed files with 18 additions and 17 deletions

View File

@ -14,7 +14,7 @@ multiRelease {
releaseVersions 21, 24
}
def javapoetVersion = "1.13.0"
def javapoetVersion = "0.7.0"
def objenesisVersion = "3.4"
configurations {
@ -30,12 +30,12 @@ tasks.register('javapoetRepackJar', ShadowJar) {
archiveBaseName = 'spring-javapoet-repack'
archiveVersion = javapoetVersion
configurations = [project.configurations.javapoet]
relocate('com.squareup.javapoet', 'org.springframework.javapoet')
relocate('com.palantir.javapoet', 'org.springframework.javapoet')
}
tasks.register('javapoetSource', ShadowSource) {
configurations = [project.configurations.javapoet]
relocate('com.squareup.javapoet', 'org.springframework.javapoet')
relocate('com.palantir.javapoet', 'org.springframework.javapoet')
outputDirectory = file("build/shadow-source/javapoet")
}
@ -67,7 +67,7 @@ tasks.register('objenesisSourceJar', Jar) {
}
dependencies {
javapoet("com.squareup:javapoet:${javapoetVersion}@jar")
javapoet("com.palantir.javapoet:javapoet:${javapoetVersion}@jar")
objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
api(files(javapoetRepackJar))
api(files(objenesisRepackJar))

View File

@ -26,6 +26,7 @@ import org.jspecify.annotations.Nullable;
import org.springframework.javapoet.ClassName;
import org.springframework.javapoet.CodeBlock;
import org.springframework.javapoet.MethodSpec;
import org.springframework.javapoet.ParameterSpec;
import org.springframework.javapoet.TypeName;
import org.springframework.util.Assert;
@ -51,7 +52,7 @@ public class DefaultMethodReference implements MethodReference {
@Override
public CodeBlock toCodeBlock() {
String methodName = this.method.name;
String methodName = this.method.name();
if (isStatic()) {
Assert.state(this.declaringClass != null, "Static method reference must define a declaring class");
return CodeBlock.of("$T::$L", this.declaringClass, methodName);
@ -65,7 +66,7 @@ public class DefaultMethodReference implements MethodReference {
public CodeBlock toInvokeCodeBlock(ArgumentCodeGenerator argumentCodeGenerator,
@Nullable ClassName targetClassName) {
String methodName = this.method.name;
String methodName = this.method.name();
CodeBlock.Builder code = CodeBlock.builder();
if (isStatic()) {
Assert.state(this.declaringClass != null, "Static method reference must define a declaring class");
@ -96,8 +97,8 @@ public class DefaultMethodReference implements MethodReference {
*/
protected void addArguments(CodeBlock.Builder code, ArgumentCodeGenerator argumentCodeGenerator) {
List<CodeBlock> arguments = new ArrayList<>();
TypeName[] argumentTypes = this.method.parameters.stream()
.map(parameter -> parameter.type).toArray(TypeName[]::new);
TypeName[] argumentTypes = this.method.parameters().stream()
.map(ParameterSpec::type).toArray(TypeName[]::new);
for (int i = 0; i < argumentTypes.length; i++) {
TypeName argumentType = argumentTypes[i];
CodeBlock argumentCode = argumentCodeGenerator.generateCode(argumentType);
@ -115,12 +116,12 @@ public class DefaultMethodReference implements MethodReference {
}
private boolean isStatic() {
return this.method.modifiers.contains(Modifier.STATIC);
return this.method.modifiers().contains(Modifier.STATIC);
}
@Override
public String toString() {
String methodName = this.method.name;
String methodName = this.method.name();
if (isStatic()) {
return this.declaringClass + "::" + methodName;
}

View File

@ -48,8 +48,8 @@ public interface GeneratedFiles {
* @param javaFile the java file to add
*/
default void addSourceFile(JavaFile javaFile) {
validatePackage(javaFile.packageName, javaFile.typeSpec.name);
String className = javaFile.packageName + "." + javaFile.typeSpec.name;
validatePackage(javaFile.packageName(), javaFile.typeSpec().name());
String className = javaFile.packageName() + "." + javaFile.typeSpec().name();
addSourceFile(className, javaFile::writeTo);
}

View File

@ -53,7 +53,7 @@ public final class GeneratedMethod {
MethodSpec.Builder builder = MethodSpec.methodBuilder(this.name);
method.accept(builder);
this.methodSpec = builder.build();
Assert.state(this.name.equals(this.methodSpec.name),
Assert.state(this.name.equals(this.methodSpec.name()),
"'method' consumer must not change the generated method name");
}

View File

@ -112,8 +112,8 @@ class GeneratedClassTests {
@Test
void generateJavaFileIncludesDeclaredClasses() {
GeneratedClass generatedClass = createGeneratedClass(TEST_CLASS_NAME);
generatedClass.getOrAdd("First", type -> type.modifiers.add(Modifier.STATIC));
generatedClass.getOrAdd("Second", type -> type.modifiers.add(Modifier.PRIVATE));
generatedClass.getOrAdd("First", type -> type.addModifiers(Modifier.STATIC));
generatedClass.getOrAdd("Second", type -> type.addModifiers(Modifier.PRIVATE));
assertThat(generatedClass.generateJavaFile().toString())
.contains("static class First").contains("private class Second");
}

View File

@ -53,7 +53,7 @@ class GeneratedMethodTests {
@Test
void generateMethodSpecReturnsMethodSpec() {
GeneratedMethod generatedMethod = create(method -> method.addJavadoc("Test"));
assertThat(generatedMethod.getMethodSpec().javadoc).asString().contains("Test");
assertThat(generatedMethod.getMethodSpec().javadoc()).asString().contains("Test");
}
@Test

View File

@ -119,7 +119,7 @@ class GeneratedMethodsTests {
this.methods.add("springBeans", methodSpecCustomizer);
this.methods.add("springContext", methodSpecCustomizer);
List<String> names = new ArrayList<>();
this.methods.doWithMethodSpecs(methodSpec -> names.add(methodSpec.name));
this.methods.doWithMethodSpecs(methodSpec -> names.add(methodSpec.name()));
assertThat(names).containsExactly("springBeans", "springContext");
}