@@ -480,7 +480,9 @@ private void writeFromJsonImplementation(Append writer, String varName) {
480480 writer .append (" // unmappedField... " , varName ).eol ();
481481 unmappedField .writeFromJsonUnmapped (writer , varName );
482482 }
483- writer .append (" return _$%s;" , varName ).eol ();
483+ if (directLoad ) {
484+ writer .append (" return _$%s;" , varName ).eol ();
485+ }
484486 writer .append (" }" ).eol ();
485487 }
486488
@@ -489,11 +491,28 @@ private boolean unmappedJsonNodeType() {
489491 }
490492
491493 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+ }
493505 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+ }
495511 } 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 ());
497516 final List <MethodReader .MethodParam > params = constructor .getParams ();
498517 for (int i = 0 , size = params .size (); i < size ; i ++) {
499518 if (i > 0 ) {
@@ -516,11 +535,12 @@ private void writeJsonBuildResult(Append writer, String varName) {
516535 }
517536 }
518537 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 ();
524544 }
525545 }
526546
0 commit comments