@@ -70,7 +70,6 @@ final class ClassReader implements BeanReader {
70
70
subTypes .stream ().map (TypeSubTypeMeta ::type ).forEach (importTypes ::add );
71
71
72
72
final var userTypeField = allFields .stream ().filter (f -> f .propertyName ().equals (typePropertyKey ())).findAny ();
73
-
74
73
this .usesTypeProperty = userTypeField .isPresent ();
75
74
this .useEnum =
76
75
userTypeField
@@ -222,7 +221,6 @@ public void cascadeTypes(Set<String> types) {
222
221
@ Override
223
222
public void writeFields (Append writer ) {
224
223
writer .append (" // naming convention %s" , namingConvention ).eol ();
225
-
226
224
for (final FieldReader allField : allFields ) {
227
225
allField .writeDebug (writer );
228
226
}
@@ -264,9 +262,9 @@ public void writeConstructor(Append writer) {
264
262
if (allField .include () && !allField .isRaw () && uniqueTypes .add (allField .adapterShortType ())) {
265
263
if (hasSubTypes ) {
266
264
final var isCommonDiffType =
267
- allFields .stream ()
268
- .filter (s -> s .fieldName ().equals (allField .fieldName ()))
269
- .anyMatch (f -> !allField .adapterShortType ().equals (f .adapterShortType ()));
265
+ allFields .stream ()
266
+ .filter (s -> s .fieldName ().equals (allField .fieldName ()))
267
+ .anyMatch (f -> !allField .adapterShortType ().equals (f .adapterShortType ()));
270
268
isCommonFieldMap .put (allField .fieldName (), isCommonDiffType );
271
269
}
272
270
allField .writeConstructor (writer );
@@ -472,23 +470,32 @@ private void writeFromJsonImplementation(Append writer, String varName) {
472
470
473
471
private void writeJsonBuildResult (Append writer , String varName ) {
474
472
writer .append (" // build and return %s" , shortName ).eol ();
475
- if (constructor == null ) {
476
- writer .append (" %s _$%s = new %s(" , shortName , varName , shortName );
477
- } else {
478
- writer .append (" %s _$%s = " + constructor .creationString (), shortName , varName );
479
- final List <MethodReader .MethodParam > params = constructor .getParams ();
480
- for (int i = 0 , size = params .size (); i < size ; i ++) {
481
- if (i > 0 ) {
482
- writer .append (", " );
483
- }
484
- final var name = params .get (i ).name ();
485
- // append increasing numbers to constructor params sharing names with other subtypes
486
- final var frequency = frequencyMap .compute (name , (k , v ) -> v == null ? 0 : v + 1 );
487
- // assuming name matches field here?
488
- writer .append (constructorParamName (name + (frequency == 0 ? "" : frequency .toString ())));
473
+ if (constructor == null ) {
474
+ writer .append (" %s _$%s = new %s(" , shortName , varName , shortName );
475
+ } else {
476
+ writer .append (" %s _$%s = " + constructor .creationString (), shortName , varName );
477
+ final List <MethodReader .MethodParam > params = constructor .getParams ();
478
+ for (int i = 0 , size = params .size (); i < size ; i ++) {
479
+ if (i > 0 ) {
480
+ writer .append (", " );
489
481
}
482
+
483
+ final var paramName = params .get (i ).name ();
484
+ var name =
485
+ allFields .stream ()
486
+ .filter (FieldReader ::isConstructorParam )
487
+ .filter (f -> f .propertyName ().equals (paramName ) || f .fieldName ().equals (paramName ))
488
+ .map (FieldReader ::fieldName )
489
+ .findFirst ()
490
+ .orElse (paramName );
491
+
492
+ // append increasing numbers to constructor params sharing names with other subtypes
493
+ final var frequency = frequencyMap .compute (name , (k , v ) -> v == null ? 0 : v + 1 );
494
+ // assuming name matches field here?
495
+ writer .append (constructorParamName (name + (frequency == 0 ? "" : frequency .toString ())));
490
496
}
491
- writer .append (");" ).eol ();
497
+ }
498
+ writer .append (");" ).eol ();
492
499
for (final FieldReader allField : allFields ) {
493
500
if (allField .includeFromJson ()) {
494
501
frequencyMap .compute (allField .fieldName (), (k , v ) -> v == null ? 0 : v + 1 );
@@ -574,23 +581,23 @@ private void writeFromJsonSwitch(Append writer, boolean defaultConstructor, Stri
574
581
final var isCommonFieldDiffType = isCommonFieldMap .get (name );
575
582
if (isCommonFieldDiffType == null || !isCommonFieldDiffType ) {
576
583
allField .writeFromJsonSwitch (
577
- writer ,
578
- defaultConstructor ,
579
- varName ,
580
- caseInsensitiveKeys ,
581
- allFields .stream ()
582
- .filter (x -> x .fieldName ().equals (name ))
583
- .flatMap (f -> f .aliases ().stream ())
584
- .collect (toList ()));
584
+ writer ,
585
+ defaultConstructor ,
586
+ varName ,
587
+ caseInsensitiveKeys ,
588
+ allFields .stream ()
589
+ .filter (x -> x .fieldName ().equals (name ))
590
+ .flatMap (f -> f .aliases ().stream ())
591
+ .collect (toList ()));
585
592
} else {
586
593
// if subclass shares a field name with another subclass
587
594
// write a special case statement
588
595
writeSubTypeCase (
589
- name ,
590
- writer ,
591
- allFields .stream ().filter (x -> x .fieldName ().equals (name )).collect (toList ()),
592
- defaultConstructor ,
593
- varName );
596
+ name ,
597
+ writer ,
598
+ allFields .stream ().filter (x -> x .fieldName ().equals (name )).collect (toList ()),
599
+ defaultConstructor ,
600
+ varName );
594
601
}
595
602
596
603
} else
@@ -613,8 +620,7 @@ private void writeFromJsonSwitch(Append writer, boolean defaultConstructor, Stri
613
620
private void writeSubTypeCase (String name , Append writer , List <FieldReader > commonFields , boolean defaultConstructor , String varName ) {
614
621
writer .append (" case \" %s\" :" , name ).eol ();
615
622
// get all possible aliases of this field from the subtypes
616
- for (final String alias :
617
- commonFields .stream ().map (FieldReader ::aliases ).findFirst ().orElseGet (List ::of )) {
623
+ for (final String alias : commonFields .stream ().map (FieldReader ::aliases ).findFirst ().orElseGet (List ::of )) {
618
624
final String propertyKey = caseInsensitiveKeys ? alias .toLowerCase () : alias ;
619
625
writer .append (" case \" %s\" :" , propertyKey ).eol ();
620
626
}
0 commit comments