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