@@ -480,7 +480,9 @@ private void writeFromJsonImplementation(Append writer, String varName) {
480
480
writer .append (" // unmappedField... " , varName ).eol ();
481
481
unmappedField .writeFromJsonUnmapped (writer , varName );
482
482
}
483
- writer .append (" return _$%s;" , varName ).eol ();
483
+ if (directLoad ) {
484
+ writer .append (" return _$%s;" , varName ).eol ();
485
+ }
484
486
writer .append (" }" ).eol ();
485
487
}
486
488
@@ -489,11 +491,28 @@ private boolean unmappedJsonNodeType() {
489
491
}
490
492
491
493
private void writeJsonBuildResult (Append writer , String varName ) {
492
- writer .append (" // build and return %s" , shortName ).eol ();
494
+ var buildFields = allFields .stream ()
495
+ .filter (FieldReader ::includeFromJsonBuild )
496
+ .collect (toList ());
497
+
498
+ boolean directReturn = buildFields .isEmpty ();
499
+ if (!directReturn ) {
500
+ writer .append (" // build and return %s" , shortName ).eol ();
501
+ } else {
502
+ writer .append (" // direct return" ).eol ();
503
+ writer .append (" return " );
504
+ }
493
505
if (constructor == null ) {
494
- writer .append (" %s _$%s = new %s(" , shortName , varName , shortName );
506
+ if (directReturn ) {
507
+ writer .append ("new %s(" , shortName );
508
+ } else {
509
+ writer .append (" %s _$%s = new %s(" , shortName , varName , shortName );
510
+ }
495
511
} else {
496
- writer .append (" %s _$%s = " + constructor .creationString (), shortName , varName );
512
+ if (!directReturn ) {
513
+ writer .append (" %s _$%s = " , shortName , varName );
514
+ }
515
+ writer .append (constructor .creationString ());
497
516
final List <MethodReader .MethodParam > params = constructor .getParams ();
498
517
for (int i = 0 , size = params .size (); i < size ; i ++) {
499
518
if (i > 0 ) {
@@ -516,11 +535,12 @@ private void writeJsonBuildResult(Append writer, String varName) {
516
535
}
517
536
}
518
537
writer .append (");" ).eol ();
519
- for (final FieldReader allField : allFields ) {
520
- if (allField .includeFromJson ()) {
521
- frequencyMap .compute (allField .fieldName (), (k , v ) -> v == null ? 0 : v + 1 );
522
- allField .writeFromJsonSetter (writer , varName , "" );
523
- }
538
+ for (final FieldReader allField : buildFields ) {
539
+ frequencyMap .compute (allField .fieldName (), (k , v ) -> v == null ? 0 : v + 1 );
540
+ allField .writeFromJsonSetter (writer , varName , "" );
541
+ }
542
+ if (!directReturn ) {
543
+ writer .append (" return _$%s;" , varName ).eol ();
524
544
}
525
545
}
526
546
0 commit comments