Inject @This
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
This commit is contained in:
parent
b46ccd5574
commit
092b5a2005
|
@ -12,7 +12,7 @@ dependencies {
|
|||
compileOnly(project(":gson-compile-annotations"))
|
||||
implementation(project(":gson-compile-core"))
|
||||
|
||||
val manifoldVersion = "2022.1.26"
|
||||
val manifoldVersion = "2022.1.27"
|
||||
|
||||
implementation("systems.manifold:manifold-ext-rt:$manifoldVersion")
|
||||
annotationProcessor("systems.manifold:manifold-ext:$manifoldVersion")
|
||||
|
|
|
@ -5,7 +5,6 @@ import io.gitlab.jfronny.gson.compile.annotations.GSerializable;
|
|||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Hello world!");
|
||||
ExampleRecord.read("");
|
||||
}
|
||||
|
||||
@GSerializable
|
||||
|
|
|
@ -21,4 +21,5 @@ public class Cl {
|
|||
public static final ClassName CCORE = ClassName.get("io.gitlab.jfronny.gson.compile.core", "CCore");
|
||||
|
||||
public static final ClassName MANIFOLD_EXTENSION = ClassName.get("manifold.ext.rt.api", "Extension");
|
||||
public static final ClassName MANIFOLD_THIS = ClassName.get("manifold.ext.rt.api", "This");
|
||||
}
|
||||
|
|
|
@ -232,10 +232,8 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
.build()
|
||||
);
|
||||
spec.addMethod(
|
||||
extension(MethodSpec.methodBuilder("write"))
|
||||
extension(MethodSpec.methodBuilder("write"), classType, Cl.GSON_WRITER, "writer")
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
.addParameter(Cl.GSON_WRITER, "writer")
|
||||
.addParameter(classType, "value")
|
||||
.addException(IOException.class)
|
||||
.addCode("$T.write(writer, value);", adapter)
|
||||
.build()
|
||||
|
@ -243,15 +241,18 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
}
|
||||
|
||||
private void generateAuxiliary(TypeSpec.Builder spec, TypeName classType, TypeMirror configure) {
|
||||
UnaryOperator<CodeBlock.Builder> configureReader = cb -> {
|
||||
final UnaryOperator<CodeBlock.Builder> configureReader = cb -> {
|
||||
if (configure != null) cb.addStatement("$T.configure(reader)", configure);
|
||||
return cb;
|
||||
};
|
||||
UnaryOperator<CodeBlock.Builder> configureWriter = cb -> {
|
||||
final UnaryOperator<CodeBlock.Builder> configureWriter = cb -> {
|
||||
if (configure != null) cb.addStatement("$T.configure(writer)", configure);
|
||||
return cb;
|
||||
};
|
||||
|
||||
final String readStatement = "return read(reader)";
|
||||
final String writeStatement = hasManifold ? "write(value, writer)" : "write(writer, value)";
|
||||
|
||||
spec.addMethod(
|
||||
extension(MethodSpec.methodBuilder("read"))
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
|
@ -259,7 +260,7 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
.addException(IOException.class)
|
||||
.returns(classType)
|
||||
.addCode(configureReader.apply(CodeBlock.builder().beginControlFlow("try ($1T reader = new $1T(in))", Cl.GSON_READER))
|
||||
.addStatement("return read(reader)")
|
||||
.addStatement(readStatement)
|
||||
.endControlFlow()
|
||||
.build())
|
||||
.build()
|
||||
|
@ -272,7 +273,7 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
.addException(IOException.class)
|
||||
.returns(classType)
|
||||
.addCode(CodeBlock.builder().beginControlFlow("try ($1T reader = new $1T(json))", StringReader.class)
|
||||
.addStatement("return read(reader)")
|
||||
.addStatement(readStatement)
|
||||
.endControlFlow()
|
||||
.build())
|
||||
.build()
|
||||
|
@ -285,7 +286,7 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
.addException(IOException.class)
|
||||
.returns(classType)
|
||||
.addCode(configureReader.apply(CodeBlock.builder().beginControlFlow("try ($1T reader = new $1T(tree))", Cl.GSON_TREE_READER))
|
||||
.addStatement("return read(reader)")
|
||||
.addStatement(readStatement)
|
||||
.endControlFlow()
|
||||
.build())
|
||||
.build()
|
||||
|
@ -297,47 +298,42 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
.addParameter(Path.class, "path")
|
||||
.addException(IOException.class)
|
||||
.returns(classType)
|
||||
.addCode(CodeBlock.builder().beginControlFlow("try ($T br = $T.newBufferedReader(path))", BufferedReader.class, Files.class)
|
||||
.addStatement("return read(br)")
|
||||
.addCode(CodeBlock.builder().beginControlFlow("try ($T reader = $T.newBufferedReader(path))", BufferedReader.class, Files.class)
|
||||
.addStatement(readStatement)
|
||||
.endControlFlow()
|
||||
.build())
|
||||
.build()
|
||||
);
|
||||
|
||||
spec.addMethod(
|
||||
extension(MethodSpec.methodBuilder("write"))
|
||||
extension(MethodSpec.methodBuilder("write"), classType, Writer.class, "out")
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
.addParameter(Writer.class, "out")
|
||||
.addParameter(classType, "value")
|
||||
.addException(IOException.class)
|
||||
.addCode(configureWriter.apply(CodeBlock.builder().beginControlFlow("try ($1T writer = new $1T(out))", Cl.GSON_WRITER))
|
||||
.addStatement("write(writer, value)")
|
||||
.addStatement(writeStatement)
|
||||
.endControlFlow()
|
||||
.build())
|
||||
.build()
|
||||
);
|
||||
|
||||
spec.addMethod(
|
||||
extension(MethodSpec.methodBuilder("write"))
|
||||
extension(MethodSpec.methodBuilder("write"), classType, Path.class, "path")
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
.addParameter(Path.class, "path")
|
||||
.addParameter(classType, "value")
|
||||
.addException(IOException.class)
|
||||
.addCode(CodeBlock.builder().beginControlFlow("try ($1T bw = $2T.newBufferedWriter(path, $3T.CREATE, $3T.WRITE, $3T.TRUNCATE_EXISTING))", BufferedWriter.class, Files.class, StandardOpenOption.class)
|
||||
.addStatement("write(bw, value)")
|
||||
.addCode(CodeBlock.builder().beginControlFlow("try ($1T writer = $2T.newBufferedWriter(path, $3T.CREATE, $3T.WRITE, $3T.TRUNCATE_EXISTING))", BufferedWriter.class, Files.class, StandardOpenOption.class)
|
||||
.addStatement(writeStatement)
|
||||
.endControlFlow()
|
||||
.build())
|
||||
.build()
|
||||
);
|
||||
|
||||
spec.addMethod(
|
||||
extension(MethodSpec.methodBuilder("toJson"))
|
||||
extension(MethodSpec.methodBuilder("toJson"), classType)
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
.addParameter(classType, "value")
|
||||
.addException(IOException.class)
|
||||
.returns(String.class)
|
||||
.addCode(CodeBlock.builder().beginControlFlow("try ($1T writer = new $1T())", StringWriter.class)
|
||||
.addStatement("write(writer, value)")
|
||||
.addStatement(writeStatement)
|
||||
.addStatement("return writer.toString()")
|
||||
.endControlFlow()
|
||||
.build())
|
||||
|
@ -345,13 +341,12 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
);
|
||||
|
||||
spec.addMethod(
|
||||
extension(MethodSpec.methodBuilder("toJsonTree"))
|
||||
extension(MethodSpec.methodBuilder("toJsonTree"), classType)
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
.addParameter(classType, "value")
|
||||
.addException(IOException.class)
|
||||
.returns(Cl.GSON_ELEMENT)
|
||||
.addCode(configureWriter.apply(CodeBlock.builder().beginControlFlow("try ($1T writer = new $1T())", Cl.GSON_TREE_WRITER))
|
||||
.addStatement("write(writer, value)")
|
||||
.addStatement(writeStatement)
|
||||
.addStatement("return writer.get()")
|
||||
.endControlFlow()
|
||||
.build())
|
||||
|
@ -410,10 +405,8 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
}
|
||||
code.addStatement("writer.endObject()");
|
||||
|
||||
spec.addMethod(extension(MethodSpec.methodBuilder("write"))
|
||||
spec.addMethod(extension(MethodSpec.methodBuilder("write"), self.getTypeName(), Cl.GSON_WRITER, "writer")
|
||||
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
|
||||
.addParameter(Cl.GSON_WRITER, "writer")
|
||||
.addParameter(self.getTypeName(), "value")
|
||||
.addException(IOException.class)
|
||||
.addCode(code.build())
|
||||
.build());
|
||||
|
@ -533,4 +526,32 @@ public class GsonCompileProcessor extends AbstractProcessor2 {
|
|||
if (hasManifold) method.addAnnotation(Cl.MANIFOLD_EXTENSION);
|
||||
return method;
|
||||
}
|
||||
|
||||
private MethodSpec.Builder extension(MethodSpec.Builder method, TypeName thizName) {
|
||||
if (hasManifold) {
|
||||
method.addAnnotation(Cl.MANIFOLD_EXTENSION);
|
||||
method.addParameter(ParameterSpec.builder(thizName, "value").addAnnotation(Cl.MANIFOLD_THIS).build());
|
||||
}
|
||||
else {
|
||||
method.addParameter(thizName, "value");
|
||||
}
|
||||
return method;
|
||||
}
|
||||
|
||||
private MethodSpec.Builder extension(MethodSpec.Builder method, TypeName thizName, TypeName otherName, String other) {
|
||||
if (hasManifold) {
|
||||
method.addAnnotation(Cl.MANIFOLD_EXTENSION);
|
||||
method.addParameter(ParameterSpec.builder(thizName, "value").addAnnotation(Cl.MANIFOLD_THIS).build())
|
||||
.addParameter(otherName, other);
|
||||
}
|
||||
else {
|
||||
method.addParameter(otherName, other)
|
||||
.addParameter(thizName, "value");
|
||||
}
|
||||
return method;
|
||||
}
|
||||
|
||||
private MethodSpec.Builder extension(MethodSpec.Builder method, TypeName thizName, Class<?> otherName, String other) {
|
||||
return extension(method, thizName, TypeName.get(otherName), other);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue