Skip to content

Commit 7a8bc7d

Browse files
committed
Allow FieldBasedObjectTransformers to mutate the TypeSpec more easily #2
1 parent 0a47c29 commit 7a8bc7d

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

processor/src/main/java/de/bethibande/serial/processor/serializer/FieldBasedObjectTransformer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ CodeBlock createSerializationCode(final FieldInfo field,
9797
CodeBlock createDeserializationCode(final FieldInfo field,
9898
final SerializationContext ctx);
9999

100+
default void applySerializerTransformation(final TypeSpec.Builder builder,
101+
final FieldInfo field,
102+
final SerializationContext ctx) {
103+
}
104+
100105
default MethodSpec createSerializationMethod(final FieldInfo field,
101106
final SerializationContext ctx) {
102107
return MethodSpec.methodBuilder(methodName(field))
@@ -109,6 +114,11 @@ default MethodSpec createSerializationMethod(final FieldInfo field,
109114
.build();
110115
}
111116

117+
default void applyDeserializerTransformation(final TypeSpec.Builder builder,
118+
final FieldInfo field,
119+
final SerializationContext ctx) {
120+
}
121+
112122
default MethodSpec createDeserializationMethod(final FieldInfo field,
113123
final SerializationContext ctx) {
114124
return MethodSpec.methodBuilder(methodName(field))
@@ -131,6 +141,12 @@ default void transformType(final TypeSpec.Builder builder,
131141
case SERIALIZE -> transformer.createSerializationMethod(child, ctx);
132142
case DESERIALIZE -> transformer.createDeserializationMethod(child, ctx);
133143
};
144+
145+
switch (methodType) {
146+
case SERIALIZE -> transformer.applySerializerTransformation(builder, child, ctx);
147+
case DESERIALIZE -> transformer.applyDeserializerTransformation(builder, child, ctx);
148+
}
149+
134150
child.addGeneratedMethod(methodType, method);
135151
return method;
136152
}

0 commit comments

Comments
 (0)