55import java .util .ArrayList ;
66import java .util .LinkedHashSet ;
77import java .util .List ;
8- import java .util .Map ;
98import java .util .Set ;
109
1110import javax .lang .model .element .TypeElement ;
@@ -18,6 +17,7 @@ final class TypeSubTypeMeta {
1817 private TypeElement typeElement ;
1918 private boolean defaultPublicConstructor ;
2019 private final List <MethodReader > publicConstructors = new ArrayList <>();
20+ private final Set <String > constructorFieldNames = new LinkedHashSet <>();
2121
2222 @ Override
2323 public String toString () {
@@ -56,39 +56,39 @@ void addConstructor(MethodReader methodReader) {
5656 publicConstructors .add (methodReader );
5757 }
5858
59- void writeFromJsonBuild (Append writer , String typeVar , String varName , ClassReader beanReader , boolean useSwitch , boolean useEnum , Map < String , Integer > frequencyMap2 , Map < String , Boolean > isCommonFieldMap ) {
60- if (useSwitch ) {
61- if (useEnum ) {
59+ void writeFromJsonBuild (Append writer , String varName , SubTypeRequest req ) {
60+ if (req . useSwitch () ) {
61+ if (req . useEnum () ) {
6262 writer .append (" case %s" , name ()).appendSwitchCase ().eol ();
6363 } else {
6464 writer .append (" case \" %s\" " , name ()).appendSwitchCase ().eol ();
6565 }
6666 writer .append (" " );
67- writeFromJsonConstructor (writer , varName , beanReader , frequencyMap2 , isCommonFieldMap );
68- writeFromJsonSetters (writer , varName , beanReader , useSwitch );
67+ writeFromJsonConstructor (writer , varName , req );
68+ writeFromJsonSetters (writer , varName , req );
6969 if (useEnhancedSwitch ()) {
7070 writer .append (" yield _$%s;" , varName ).eol ();
7171 writer .append (" }" ).eol ();
7272 } else {
7373 writer .append (" return _$%s;" , varName ).eol ();
7474 }
7575 } else {
76- if (useEnum ) {
77- writer .append (" if (%s.equals(%s)) {" , name (), typeVar ).eol ();
76+ if (req . useEnum () ) {
77+ writer .append (" if (%s.equals(%s)) {" , name (), req . typeVar () ).eol ();
7878 } else {
79- writer .append (" if (\" %s\" .equals(%s)) {" , name (), typeVar ).eol ();
79+ writer .append (" if (\" %s\" .equals(%s)) {" , name (), req . typeVar () ).eol ();
8080 }
81- writeFromJsonConstructor (writer , varName , beanReader , frequencyMap2 , isCommonFieldMap );
82- writeFromJsonSetters (writer , varName , beanReader , useSwitch );
81+ writeFromJsonConstructor (writer , varName , req );
82+ writeFromJsonSetters (writer , varName , req );
8383 writer .append (" return _$%s;" , varName ).eol ();
8484 writer .append (" }" ).eol ();
8585 }
8686 }
8787
88- private void writeFromJsonSetters (Append writer , String varName , ClassReader beanReader , boolean useSwitch ) {
89- for (final FieldReader field : beanReader .allFields ()) {
88+ private void writeFromJsonSetters (Append writer , String varName , SubTypeRequest req ) {
89+ for (final FieldReader field : req . beanReader () .allFields ()) {
9090 if (isIncludeSetter (field )) {
91- if (useSwitch ) {
91+ if (req . useSwitch () ) {
9292 writer .append (" " );
9393 }
9494 field .writeFromJsonSetter (writer , varName , " " );
@@ -100,9 +100,8 @@ private boolean isIncludeSetter(FieldReader field) {
100100 return field .includeFromJson () && !constructorFieldNames .contains (field .fieldName ()) && field .includeForType (this );
101101 }
102102
103- private final Set <String > constructorFieldNames = new LinkedHashSet <>();
104103
105- private void writeFromJsonConstructor (Append writer , String varName , ClassReader beanReader , Map < String , Integer > frequencyMap2 , Map < String , Boolean > isCommonFieldMap ) {
104+ private void writeFromJsonConstructor (Append writer , String varName , SubTypeRequest req ) {
106105 writer .append (" %s _$%s = new %s(" , shortType , varName , shortType );
107106 final MethodReader constructor = findConstructor ();
108107 if (constructor != null ) {
@@ -114,11 +113,10 @@ private void writeFromJsonConstructor(Append writer, String varName, ClassReader
114113 final var param = params .get (i );
115114 final String paramName = param .name ();
116115 constructorFieldNames .add (paramName );
117- var constructParamName = beanReader .constructorParamName (paramName );
118- final var writeWithNum = isCommonFieldMap .get (paramName );
119- if (constructParamName .startsWith ("_val$" ) && writeWithNum != null && writeWithNum ) {
120- final var frequency = frequencyMap2 .compute (constructParamName , (k , v ) -> v == null ? 0 : v + 1 );
121- constructParamName = constructParamName + (frequency == 0 ? "" : frequency .toString ());
116+ var constructParamName = req .beanReader ().constructorParamName (paramName );
117+ if (constructParamName .startsWith ("_val$" ) && req .isCommonField (paramName )) {
118+ final var frequencySuffix = req .frequencySuffix (constructParamName );
119+ constructParamName = constructParamName + frequencySuffix ;
122120 }
123121
124122 writer .append (constructParamName ); // assuming name matches field here?
0 commit comments