99import java .time .LocalDateTime ;
1010import java .time .LocalTime ;
1111
12+ import org .burningwave .core .classes .AnnotationSourceGenerator ;
13+ import org .burningwave .core .classes .TypeDeclarationSourceGenerator ;
1214import org .burningwave .core .classes .UnitSourceGenerator ;
15+ import org .burningwave .core .classes .VariableSourceGenerator ;
16+
17+ import com .fasterxml .jackson .databind .annotation .JsonDeserialize ;
18+ import com .fasterxml .jackson .datatype .jsr310 .deser .LocalDateDeserializer ;
19+ import com .fasterxml .jackson .datatype .jsr310 .deser .LocalDateTimeDeserializer ;
20+ import com .fasterxml .jackson .datatype .jsr310 .deser .LocalTimeDeserializer ;
1321
1422import dev .sassine .api .structure .model .java .FieldModel ;
1523
1624public class ImportBeanFunction {
1725
26+ private static final String PARAM_USING = "using" ;
1827 private static final String FORMAT_IMPORT_ENTITY_PACKAGE = "%s.domain.%sEntity" ;
1928
2029 public static void importEntityClass (String nameClass , String packageName , UnitSourceGenerator gen ) {
@@ -26,5 +35,24 @@ public static void importJavaTime(UnitSourceGenerator gen, FieldModel fieldModel
2635 else if (TYPE_LOCAL_DATE .equals (fieldModel .getType ())) gen .addImport (LocalDate .class );
2736 else if (TYPE_LOCAL_TIME .equals (fieldModel .getType ())) gen .addImport (LocalTime .class );
2837 }
29-
38+
39+ public static void importJavaTimeAndJSONDeserialize (VariableSourceGenerator field , UnitSourceGenerator gen ,
40+ FieldModel fieldModel ) {
41+ if (TYPE_LOCAL_DATE_TIME .equals (fieldModel .getType ())) {
42+ field .addAnnotation (AnnotationSourceGenerator .create (JsonDeserialize .class ).addParameter (PARAM_USING ,
43+ VariableSourceGenerator
44+ .create (TypeDeclarationSourceGenerator .create (LocalDateTimeDeserializer .class ))));
45+ gen .addImport (LocalDateTime .class );
46+ } else if (TYPE_LOCAL_DATE .equals (fieldModel .getType ())) {
47+ gen .addImport (LocalDate .class );
48+ field .addAnnotation (AnnotationSourceGenerator .create (JsonDeserialize .class ).addParameter (PARAM_USING ,
49+ VariableSourceGenerator
50+ .create (TypeDeclarationSourceGenerator .create (LocalDateDeserializer .class ))));
51+ } else if (TYPE_LOCAL_TIME .equals (fieldModel .getType ())) {
52+ gen .addImport (LocalTime .class );
53+ field .addAnnotation (AnnotationSourceGenerator .create (JsonDeserialize .class ).addParameter (PARAM_USING ,
54+ VariableSourceGenerator
55+ .create (TypeDeclarationSourceGenerator .create (LocalTimeDeserializer .class ))));
56+ }
57+ }
3058}
0 commit comments