Migrate to Palentir's JavaPoet
Closes gh-35214
This commit is contained in:
parent
200b3ea023
commit
dd8313f200
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue