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,13 @@ 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 ();
38
36
this .publicField = element .getModifiers ().contains (Modifier .PUBLIC );
37
+ this .rawType = trimAnnotations (element .asType ().toString ());
39
38
40
- PropertyIgnoreReader ignoreReader = new PropertyIgnoreReader (element );
39
+ final PropertyIgnoreReader ignoreReader = new PropertyIgnoreReader (element );
41
40
this .unmapped = ignoreReader .unmapped ();
42
41
this .raw = ignoreReader .raw ();
43
42
this .serialize = ignoreReader .serialize ();
@@ -56,15 +55,23 @@ class FieldReader {
56
55
primitive = false ;
57
56
} else {
58
57
genericType = GenericType .parse (rawType );
59
- String shortType = genericType .shortType ();
58
+ final String shortType = genericType .shortType ();
60
59
primitive = PrimitiveUtil .isPrimitive (shortType );
61
60
defaultValue = !primitive ? "null" : PrimitiveUtil .defaultValue (shortType );
62
- String typeWrapped = PrimitiveUtil .wrap (shortType );
61
+ final String typeWrapped = PrimitiveUtil .wrap (shortType );
63
62
adapterShortType = "JsonAdapter<" + typeWrapped + ">" ;
64
63
adapterFieldName = (primitive ? "p" : "" ) + Util .initLower (genericType .shortName ()) + "JsonAdapter" ;
65
64
}
66
65
}
67
66
67
+ static String trimAnnotations (String type ) {
68
+ int pos = type .indexOf ("@" );
69
+ if (pos == -1 ) {
70
+ return type ;
71
+ }
72
+ return type .substring (0 , pos ) + type .substring (type .lastIndexOf (' ' ) + 1 );
73
+ }
74
+
68
75
void position (int pos ) {
69
76
position = pos ;
70
77
}
@@ -118,10 +125,10 @@ void addImports(Set<String> importTypes) {
118
125
119
126
void cascadeTypes (Set <String > types ) {
120
127
if (!raw && !unmapped ) {
121
- String topType = genericType .topType ();
122
- if (topType . equals ( "java.util.List" ) || topType . equals ( "java.util.Set" )) {
128
+ final String topType = genericType .topType ();
129
+ if ("java.util.List" . equals ( topType ) || "java.util.Set" . equals ( topType )) {
123
130
types .add (genericType .firstParamType ());
124
- } else if (topType . equals ( "java.util.Map" )) {
131
+ } else if ("java.util.Map" . equals ( topType )) {
125
132
types .add (genericType .secondParamType ());
126
133
} else {
127
134
types .add (topType );
@@ -152,16 +159,14 @@ void writeDebug(Append writer) {
152
159
}
153
160
if (!deserialize ) {
154
161
writer .append (" ignoreDeserialize" );
162
+ } else if (constructorParam ) {
163
+ writer .append (" constructor" );
164
+ } else if (setter != null ) {
165
+ writer .append (" setter:%s " , setter );
166
+ } else if (publicField ) {
167
+ writer .append (" publicField" );
155
168
} 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
- }
169
+ writer .append (" ERROR?? no constructor, setter and not a public field?" );
165
170
}
166
171
if (!subTypes .isEmpty ()) {
167
172
writer .append (" subTypes %s" , subTypes .keySet ());
@@ -181,7 +186,7 @@ void writeConstructor(Append writer) {
181
186
if (raw ) {
182
187
writer .append (" this.%s = jsonb.rawAdapter();" , adapterFieldName ).eol ();
183
188
} else {
184
- String asType = genericType .asTypeDeclaration ();
189
+ final String asType = genericType .asTypeDeclaration ();
185
190
writer .append (" this.%s = jsonb.adapter(%s);" , adapterFieldName , asType ).eol ();
186
191
}
187
192
}
@@ -227,11 +232,11 @@ void writeFromJsonVariables(Append writer) {
227
232
}
228
233
229
234
private String pad (String value ) {
230
- int pad = 10 - value .length ();
235
+ final int pad = 10 - value .length ();
231
236
if (pad < 1 ) {
232
237
return value ;
233
238
}
234
- StringBuilder sb = new StringBuilder (10 ).append (value );
239
+ final StringBuilder sb = new StringBuilder (10 ).append (value );
235
240
for (int i = 0 ; i < pad ; i ++) {
236
241
sb .append (" " );
237
242
}
@@ -285,7 +290,7 @@ void writeViewBuilder(Append writer, String shortName) {
285
290
if (getter == null ) {
286
291
writer .append (" builder.add(\" %s\" , %s, builder.field(%s.class, \" %s\" ));" , fieldName , adapterFieldName , shortName , fieldName ).eol ();
287
292
} else {
288
- String topType = genericType .topType ();
293
+ final String topType = genericType .topType ();
289
294
writer .append (" builder.add(\" %s\" , %s, builder.method(%s.class, \" %s\" , %s.class));" , fieldName , adapterFieldName , shortName , getter .getName (), topType ).eol ();
290
295
}
291
296
}
0 commit comments