1
1
package io .avaje .jsonb .generator ;
2
2
3
- import javax .lang .model .element .Element ;
4
- import javax .lang .model .element .Modifier ;
5
3
import java .util .LinkedHashMap ;
6
4
import java .util .Map ;
7
5
import java .util .Set ;
8
6
7
+ import javax .lang .model .element .Element ;
8
+ import javax .lang .model .element .Modifier ;
9
+
9
10
class FieldReader {
10
11
11
12
private final Map <String , TypeSubTypeMeta > subTypes = new LinkedHashMap <>();
12
- private final Element element ;
13
13
private final boolean publicField ;
14
14
private final String rawType ;
15
15
private final GenericType genericType ;
@@ -30,14 +30,22 @@ class FieldReader {
30
30
private boolean constructorParam ;
31
31
32
32
FieldReader (Element element , NamingConvention namingConvention , TypeSubTypeMeta subType ) {
33
- this .element = element ;
34
33
addSubType (subType );
35
34
this .fieldName = element .getSimpleName ().toString ();
36
35
this .propertyName = PropertyReader .name (namingConvention , fieldName , element );
37
- this . rawType = element . asType (). toString ();
36
+
38
37
this .publicField = element .getModifiers ().contains (Modifier .PUBLIC );
39
38
40
- PropertyIgnoreReader ignoreReader = new PropertyIgnoreReader (element );
39
+ final String type = element .asType ().toString ();
40
+ if (type .contains ("@" )) {
41
+ final String [] split = type .split (" " );
42
+
43
+ this .rawType = type .substring (0 , type .indexOf ("@" )) + split [split .length - 1 ];
44
+ } else {
45
+ this .rawType = type ;
46
+ }
47
+
48
+ final PropertyIgnoreReader ignoreReader = new PropertyIgnoreReader (element );
41
49
this .unmapped = ignoreReader .unmapped ();
42
50
this .raw = ignoreReader .raw ();
43
51
this .serialize = ignoreReader .serialize ();
@@ -56,10 +64,10 @@ class FieldReader {
56
64
primitive = false ;
57
65
} else {
58
66
genericType = GenericType .parse (rawType );
59
- String shortType = genericType .shortType ();
67
+ final String shortType = genericType .shortType ();
60
68
primitive = PrimitiveUtil .isPrimitive (shortType );
61
69
defaultValue = !primitive ? "null" : PrimitiveUtil .defaultValue (shortType );
62
- String typeWrapped = PrimitiveUtil .wrap (shortType );
70
+ final String typeWrapped = PrimitiveUtil .wrap (shortType );
63
71
adapterShortType = "JsonAdapter<" + typeWrapped + ">" ;
64
72
adapterFieldName = (primitive ? "p" : "" ) + Util .initLower (genericType .shortName ()) + "JsonAdapter" ;
65
73
}
@@ -118,10 +126,10 @@ void addImports(Set<String> importTypes) {
118
126
119
127
void cascadeTypes (Set <String > types ) {
120
128
if (!raw && !unmapped ) {
121
- String topType = genericType .topType ();
122
- if (topType . equals ( "java.util.List" ) || topType . equals ( "java.util.Set" )) {
129
+ final String topType = genericType .topType ();
130
+ if ("java.util.List" . equals ( topType ) || "java.util.Set" . equals ( topType )) {
123
131
types .add (genericType .firstParamType ());
124
- } else if (topType . equals ( "java.util.Map" )) {
132
+ } else if ("java.util.Map" . equals ( topType )) {
125
133
types .add (genericType .secondParamType ());
126
134
} else {
127
135
types .add (topType );
@@ -152,16 +160,14 @@ void writeDebug(Append writer) {
152
160
}
153
161
if (!deserialize ) {
154
162
writer .append (" ignoreDeserialize" );
163
+ }else if (constructorParam ) {
164
+ writer .append (" constructor" );
165
+ } else if (setter != null ) {
166
+ writer .append (" setter:%s " , setter );
167
+ } else if (publicField ) {
168
+ writer .append (" publicField" );
155
169
} else {
156
- if (constructorParam ) {
157
- writer .append (" constructor" );
158
- } else if (setter != null ) {
159
- writer .append (" setter:%s " , setter );
160
- } else if (publicField ) {
161
- writer .append (" publicField" );
162
- } else {
163
- writer .append (" ERROR?? no constructor, setter and not a public field?" );
164
- }
170
+ writer .append (" ERROR?? no constructor, setter and not a public field?" );
165
171
}
166
172
if (!subTypes .isEmpty ()) {
167
173
writer .append (" subTypes %s" , subTypes .keySet ());
@@ -181,7 +187,7 @@ void writeConstructor(Append writer) {
181
187
if (raw ) {
182
188
writer .append (" this.%s = jsonb.rawAdapter();" , adapterFieldName ).eol ();
183
189
} else {
184
- String asType = genericType .asTypeDeclaration ();
190
+ final String asType = genericType .asTypeDeclaration ();
185
191
writer .append (" this.%s = jsonb.adapter(%s);" , adapterFieldName , asType ).eol ();
186
192
}
187
193
}
@@ -227,11 +233,11 @@ void writeFromJsonVariables(Append writer) {
227
233
}
228
234
229
235
private String pad (String value ) {
230
- int pad = 10 - value .length ();
236
+ final int pad = 10 - value .length ();
231
237
if (pad < 1 ) {
232
238
return value ;
233
239
}
234
- StringBuilder sb = new StringBuilder (10 ).append (value );
240
+ final StringBuilder sb = new StringBuilder (10 ).append (value );
235
241
for (int i = 0 ; i < pad ; i ++) {
236
242
sb .append (" " );
237
243
}
@@ -285,7 +291,7 @@ void writeViewBuilder(Append writer, String shortName) {
285
291
if (getter == null ) {
286
292
writer .append (" builder.add(\" %s\" , %s, builder.field(%s.class, \" %s\" ));" , fieldName , adapterFieldName , shortName , fieldName ).eol ();
287
293
} else {
288
- String topType = genericType .topType ();
294
+ final String topType = genericType .topType ();
289
295
writer .append (" builder.add(\" %s\" , %s, builder.method(%s.class, \" %s\" , %s.class));" , fieldName , adapterFieldName , shortName , getter .getName (), topType ).eol ();
290
296
}
291
297
}
0 commit comments