Skip to content

Commit 1e57dc7

Browse files
committed
Translate _type attribute to String of known types (Numbers types, String, CharSequence only at this stage)
1 parent cce30b5 commit 1e57dc7

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

validator-generator/src/main/java/io/avaje/validation/generator/AnnotationUtil.java

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.avaje.validation.generator;
22

3+
import static io.avaje.validation.generator.ProcessingContext.isAssignable2Interface;
34
import static io.avaje.validation.generator.Util.trimAnnotations;
45
import static java.util.function.Predicate.not;
56
import static java.util.stream.Collectors.joining;
@@ -82,6 +83,41 @@ interface Handler {
8283
}
8384
}
8485

86+
static Map<String,String> KNOWN_TYPES = new HashMap<>();
87+
static {
88+
KNOWN_TYPES.put("byte", "Byte");
89+
KNOWN_TYPES.put("java.lang.Byte", "Byte");
90+
KNOWN_TYPES.put("short", "Short");
91+
KNOWN_TYPES.put("java.lang.Short", "Short");
92+
KNOWN_TYPES.put("int", "Integer");
93+
KNOWN_TYPES.put("java.lang.Integer", "Integer");
94+
KNOWN_TYPES.put("long", "Long");
95+
KNOWN_TYPES.put("java.lang.Long", "Long");
96+
KNOWN_TYPES.put("float", "Float");
97+
KNOWN_TYPES.put("java.lang.Float", "Float");
98+
KNOWN_TYPES.put("double", "Double");
99+
KNOWN_TYPES.put("java.lang.Double", "Double");
100+
KNOWN_TYPES.put("java.math.BigDecimal", "BigDecimal");
101+
KNOWN_TYPES.put("java.math.BigInteger", "BigInteger");
102+
KNOWN_TYPES.put("java.lang.String", "String");
103+
//TODO; Consider java.time types
104+
}
105+
106+
static String lookupType(TypeMirror typeMirror) {
107+
String rawType = trimAnnotations(typeMirror.toString());
108+
final String val = KNOWN_TYPES.get(rawType);
109+
if (val != null) {
110+
return val;
111+
}
112+
if (isAssignable2Interface(rawType, "java.lang.Number")) {
113+
return "Number";
114+
}
115+
if (isAssignable2Interface(rawType, "java.lang.CharSequence")) {
116+
return "CharSequence";
117+
}
118+
return null;
119+
}
120+
85121
private AnnotationUtil() {}
86122

87123
static String annotationAttributeMap(AnnotationMirror annotationMirror, Element target) {
@@ -111,7 +147,6 @@ static String annotationAttributeMap(String annotationStr) {
111147
convertTypeUse(element, attributeMap);
112148

113149
final Handler handler = handlers.get(result);
114-
115150
return Objects.requireNonNullElse(handler, defaultHandler).attributes(attributeMap);
116151
}
117152

@@ -400,8 +435,11 @@ public String attributes(AnnotationMirror annotationMirror, Element element, Ele
400435

401436
@Override
402437
protected void writeTypeAttribute(TypeMirror typeMirror) {
403-
writeAttributeKey("_type");
404-
sb.append(trimAnnotations(typeMirror.toString()) + ".class");
438+
String _type = lookupType(typeMirror);
439+
if (_type != null) {
440+
writeAttributeKey("_type");
441+
sb.append('"').append(_type).append('"');
442+
}
405443
}
406444
}
407445

0 commit comments

Comments
 (0)