From 46ce536703e3111d088ecc9a57cc14d9ffc9c4b0 Mon Sep 17 00:00:00 2001 From: JFronny Date: Thu, 24 Nov 2022 19:57:20 +0100 Subject: [PATCH] Use manifold type order by default --- .../processor/GsonCompileProcessor.java | 33 ++++++------------- .../processor/adapter/AdapterAdapter.java | 4 +-- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/GsonCompileProcessor.java b/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/GsonCompileProcessor.java index 3eaaa80..20f3ce4 100644 --- a/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/GsonCompileProcessor.java +++ b/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/GsonCompileProcessor.java @@ -207,7 +207,7 @@ public class GsonCompileProcessor extends AbstractProcessor2 { .addParameter(Cl.GSON_WRITER, "writer") .addParameter(classType, "value") .addException(IOException.class) - .addCode(generatedClassName.simpleName() + ".write(writer, value);") + .addCode(generatedClassName.simpleName() + ".write(value, writer);") .build()) .addMethod(MethodSpec.methodBuilder("read") .addAnnotation(Override.class) @@ -232,8 +232,9 @@ public class GsonCompileProcessor extends AbstractProcessor2 { .build() ); spec.addMethod( - extension(MethodSpec.methodBuilder("write"), classType, Cl.GSON_WRITER, "writer") + extension(MethodSpec.methodBuilder("write"), classType) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) + .addParameter(Cl.GSON_WRITER, "writer") .addException(IOException.class) .addCode("$T.write(writer, value);", adapter) .build() @@ -251,7 +252,7 @@ public class GsonCompileProcessor extends AbstractProcessor2 { }; final String readStatement = "return read(reader)"; - final String writeStatement = hasManifold ? "write(value, writer)" : "write(writer, value)"; + final String writeStatement = "write(value, writer)"; spec.addMethod( extension(MethodSpec.methodBuilder("read")) @@ -306,8 +307,9 @@ public class GsonCompileProcessor extends AbstractProcessor2 { ); spec.addMethod( - extension(MethodSpec.methodBuilder("write"), classType, Writer.class, "out") + extension(MethodSpec.methodBuilder("write"), classType) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) + .addParameter(Writer.class, "out") .addException(IOException.class) .addCode(configureWriter.apply(CodeBlock.builder().beginControlFlow("try ($1T writer = new $1T(out))", Cl.GSON_WRITER)) .addStatement(writeStatement) @@ -317,8 +319,9 @@ public class GsonCompileProcessor extends AbstractProcessor2 { ); spec.addMethod( - extension(MethodSpec.methodBuilder("write"), classType, Path.class, "path") + extension(MethodSpec.methodBuilder("write"), classType) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) + .addParameter(Path.class, "path") .addException(IOException.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(writeStatement) @@ -405,8 +408,9 @@ public class GsonCompileProcessor extends AbstractProcessor2 { } code.addStatement("writer.endObject()"); - spec.addMethod(extension(MethodSpec.methodBuilder("write"), self.getTypeName(), Cl.GSON_WRITER, "writer") + spec.addMethod(extension(MethodSpec.methodBuilder("write"), self.getTypeName()) .addModifiers(Modifier.PUBLIC, Modifier.STATIC) + .addParameter(Cl.GSON_WRITER, "writer") .addException(IOException.class) .addCode(code.build()) .build()); @@ -537,21 +541,4 @@ public class GsonCompileProcessor extends AbstractProcessor2 { } 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); - } } diff --git a/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/adapter/AdapterAdapter.java b/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/adapter/AdapterAdapter.java index 5eef0b3..630f4b6 100644 --- a/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/adapter/AdapterAdapter.java +++ b/gson-compile-processor/src/main/java/io/gitlab/jfronny/gson/compile/processor/adapter/AdapterAdapter.java @@ -13,9 +13,9 @@ public abstract class AdapterAdapter.Hydrated> exten public abstract class Hydrated extends Adapter.Hydrated { @Override public void generateWrite(Runnable writeGet) { - code.add("$L.write(writer, ", getAdapter()); + code.add("$L.write(", getAdapter()); writeGet.run(); - code.add(");\n"); + code.add(", writer);\n"); } @Override