Skip to content

Commit c6ffe7e

Browse files
committed
fix annotated types
1 parent 9e93e3a commit c6ffe7e

File tree

2 files changed

+33
-24
lines changed

2 files changed

+33
-24
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ build/
33
.idea/
44
*.iml
55
.gradle
6+
*.prefs
7+
jsonb-generator/.classpath
8+
jsonb-generator/.project

jsonb-generator/src/main/java/io/avaje/jsonb/generator/FieldReader.java

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package io.avaje.jsonb.generator;
22

3-
import javax.lang.model.element.Element;
4-
import javax.lang.model.element.Modifier;
53
import java.util.LinkedHashMap;
64
import java.util.Map;
75
import java.util.Set;
86

7+
import javax.lang.model.element.Element;
8+
import javax.lang.model.element.Modifier;
9+
910
class FieldReader {
1011

1112
private final Map<String, TypeSubTypeMeta> subTypes = new LinkedHashMap<>();
12-
private final Element element;
1313
private final boolean publicField;
1414
private final String rawType;
1515
private final GenericType genericType;
@@ -30,14 +30,22 @@ class FieldReader {
3030
private boolean constructorParam;
3131

3232
FieldReader(Element element, NamingConvention namingConvention, TypeSubTypeMeta subType) {
33-
this.element = element;
3433
addSubType(subType);
3534
this.fieldName = element.getSimpleName().toString();
3635
this.propertyName = PropertyReader.name(namingConvention, fieldName, element);
37-
this.rawType = element.asType().toString();
36+
3837
this.publicField = element.getModifiers().contains(Modifier.PUBLIC);
3938

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);
4149
this.unmapped = ignoreReader.unmapped();
4250
this.raw = ignoreReader.raw();
4351
this.serialize = ignoreReader.serialize();
@@ -56,10 +64,10 @@ class FieldReader {
5664
primitive = false;
5765
} else {
5866
genericType = GenericType.parse(rawType);
59-
String shortType = genericType.shortType();
67+
final String shortType = genericType.shortType();
6068
primitive = PrimitiveUtil.isPrimitive(shortType);
6169
defaultValue = !primitive ? "null" : PrimitiveUtil.defaultValue(shortType);
62-
String typeWrapped = PrimitiveUtil.wrap(shortType);
70+
final String typeWrapped = PrimitiveUtil.wrap(shortType);
6371
adapterShortType = "JsonAdapter<" + typeWrapped + ">";
6472
adapterFieldName = (primitive ? "p" : "") + Util.initLower(genericType.shortName()) + "JsonAdapter";
6573
}
@@ -118,10 +126,10 @@ void addImports(Set<String> importTypes) {
118126

119127
void cascadeTypes(Set<String> types) {
120128
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)) {
123131
types.add(genericType.firstParamType());
124-
} else if (topType.equals("java.util.Map")) {
132+
} else if ("java.util.Map".equals(topType)) {
125133
types.add(genericType.secondParamType());
126134
} else {
127135
types.add(topType);
@@ -152,16 +160,14 @@ void writeDebug(Append writer) {
152160
}
153161
if (!deserialize) {
154162
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");
155169
} 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?");
165171
}
166172
if (!subTypes.isEmpty()) {
167173
writer.append(" subTypes %s", subTypes.keySet());
@@ -181,7 +187,7 @@ void writeConstructor(Append writer) {
181187
if (raw) {
182188
writer.append(" this.%s = jsonb.rawAdapter();", adapterFieldName).eol();
183189
} else {
184-
String asType = genericType.asTypeDeclaration();
190+
final String asType = genericType.asTypeDeclaration();
185191
writer.append(" this.%s = jsonb.adapter(%s);", adapterFieldName, asType).eol();
186192
}
187193
}
@@ -227,11 +233,11 @@ void writeFromJsonVariables(Append writer) {
227233
}
228234

229235
private String pad(String value) {
230-
int pad = 10 - value.length();
236+
final int pad = 10 - value.length();
231237
if (pad < 1) {
232238
return value;
233239
}
234-
StringBuilder sb = new StringBuilder(10).append(value);
240+
final StringBuilder sb = new StringBuilder(10).append(value);
235241
for (int i = 0; i < pad; i++) {
236242
sb.append(" ");
237243
}
@@ -285,7 +291,7 @@ void writeViewBuilder(Append writer, String shortName) {
285291
if (getter == null) {
286292
writer.append(" builder.add(\"%s\", %s, builder.field(%s.class, \"%s\"));", fieldName, adapterFieldName, shortName, fieldName).eol();
287293
} else {
288-
String topType = genericType.topType();
294+
final String topType = genericType.topType();
289295
writer.append(" builder.add(\"%s\", %s, builder.method(%s.class, \"%s\", %s.class));", fieldName, adapterFieldName, shortName, getter.getName(), topType).eol();
290296
}
291297
}

0 commit comments

Comments
 (0)