5
5
import java .util .ArrayList ;
6
6
import java .util .LinkedHashSet ;
7
7
import java .util .List ;
8
- import java .util .Map ;
9
8
import java .util .Set ;
10
9
11
10
import javax .lang .model .element .TypeElement ;
@@ -18,6 +17,7 @@ final class TypeSubTypeMeta {
18
17
private TypeElement typeElement ;
19
18
private boolean defaultPublicConstructor ;
20
19
private final List <MethodReader > publicConstructors = new ArrayList <>();
20
+ private final Set <String > constructorFieldNames = new LinkedHashSet <>();
21
21
22
22
@ Override
23
23
public String toString () {
@@ -56,39 +56,39 @@ void addConstructor(MethodReader methodReader) {
56
56
publicConstructors .add (methodReader );
57
57
}
58
58
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 () ) {
62
62
writer .append (" case %s" , name ()).appendSwitchCase ().eol ();
63
63
} else {
64
64
writer .append (" case \" %s\" " , name ()).appendSwitchCase ().eol ();
65
65
}
66
66
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 );
69
69
if (useEnhancedSwitch ()) {
70
70
writer .append (" yield _$%s;" , varName ).eol ();
71
71
writer .append (" }" ).eol ();
72
72
} else {
73
73
writer .append (" return _$%s;" , varName ).eol ();
74
74
}
75
75
} 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 ();
78
78
} else {
79
- writer .append (" if (\" %s\" .equals(%s)) {" , name (), typeVar ).eol ();
79
+ writer .append (" if (\" %s\" .equals(%s)) {" , name (), req . typeVar () ).eol ();
80
80
}
81
- writeFromJsonConstructor (writer , varName , beanReader , frequencyMap2 , isCommonFieldMap );
82
- writeFromJsonSetters (writer , varName , beanReader , useSwitch );
81
+ writeFromJsonConstructor (writer , varName , req );
82
+ writeFromJsonSetters (writer , varName , req );
83
83
writer .append (" return _$%s;" , varName ).eol ();
84
84
writer .append (" }" ).eol ();
85
85
}
86
86
}
87
87
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 ()) {
90
90
if (isIncludeSetter (field )) {
91
- if (useSwitch ) {
91
+ if (req . useSwitch () ) {
92
92
writer .append (" " );
93
93
}
94
94
field .writeFromJsonSetter (writer , varName , " " );
@@ -100,9 +100,8 @@ private boolean isIncludeSetter(FieldReader field) {
100
100
return field .includeFromJson () && !constructorFieldNames .contains (field .fieldName ()) && field .includeForType (this );
101
101
}
102
102
103
- private final Set <String > constructorFieldNames = new LinkedHashSet <>();
104
103
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 ) {
106
105
writer .append (" %s _$%s = new %s(" , shortType , varName , shortType );
107
106
final MethodReader constructor = findConstructor ();
108
107
if (constructor != null ) {
@@ -114,11 +113,10 @@ private void writeFromJsonConstructor(Append writer, String varName, ClassReader
114
113
final var param = params .get (i );
115
114
final String paramName = param .name ();
116
115
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 ;
122
120
}
123
121
124
122
writer .append (constructParamName ); // assuming name matches field here?
0 commit comments