Skip to content

Commit 69ca66e

Browse files
committed
optimize AutoMapping code
1 parent a72d3e4 commit 69ca66e

File tree

1 file changed

+48
-42
lines changed

1 file changed

+48
-42
lines changed

compiler/src/main/java/net/jbock/convert/map/AutoMappings.java

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,68 +15,74 @@
1515
import java.net.URI;
1616
import java.nio.file.Path;
1717
import java.time.LocalDate;
18-
import java.util.List;
1918
import java.util.Optional;
2019
import java.util.regex.Pattern;
2120

2221
public final class AutoMappings {
2322

2423
private final TypeTool tool;
25-
private final List<AutoMapping> mappings;
2624

2725
@Inject
2826
public AutoMappings(TypeTool tool) {
2927
this.tool = tool;
30-
this.mappings = autoMappings();
3128
}
3229

3330
<M extends Item>
3431
Optional<Mapping<M>> findAutoMapping(
3532
Match<M> match) {
3633
TypeMirror baseType = match.baseType();
37-
for (AutoMapping conversion : mappings) {
38-
if (tool.isSameType(baseType, conversion.qualifiedName)) {
39-
Mapping<M> mapping = Mapping.create(conversion.createConverterExpression, match);
40-
return Optional.of(mapping);
41-
}
34+
if (tool.isSameType(baseType, String.class)) {
35+
return Optional.of(createMapping("asString", match));
36+
}
37+
if (tool.isSameType(baseType, Integer.class)) {
38+
return Optional.of(createMapping("asInteger", match));
39+
}
40+
if (tool.isSameType(baseType, Path.class)) {
41+
return Optional.of(createMapping("asPath", match));
42+
}
43+
if (tool.isSameType(baseType, File.class)) {
44+
return Optional.of(createMapping("asExistingFile", match));
45+
}
46+
if (tool.isSameType(baseType, URI.class)) {
47+
return Optional.of(createMapping("asURI", match));
48+
}
49+
if (tool.isSameType(baseType, Pattern.class)) {
50+
return Optional.of(createMapping("asPattern", match));
51+
}
52+
if (tool.isSameType(baseType, LocalDate.class)) {
53+
return Optional.of(createMapping("asLocalDate", match));
54+
}
55+
if (tool.isSameType(baseType, Long.class)) {
56+
return Optional.of(createMapping("asLong", match));
57+
}
58+
if (tool.isSameType(baseType, Short.class)) {
59+
return Optional.of(createMapping("asShort", match));
60+
}
61+
if (tool.isSameType(baseType, Byte.class)) {
62+
return Optional.of(createMapping("asByte", match));
63+
}
64+
if (tool.isSameType(baseType, Float.class)) {
65+
return Optional.of(createMapping("asFloat", match));
66+
}
67+
if (tool.isSameType(baseType, Double.class)) {
68+
return Optional.of(createMapping("asDouble", match));
69+
}
70+
if (tool.isSameType(baseType, Character.class)) {
71+
return Optional.of(createMapping("asCharacter", match));
72+
}
73+
if (tool.isSameType(baseType, BigInteger.class)) {
74+
return Optional.of(createMapping("asBigInteger", match));
75+
}
76+
if (tool.isSameType(baseType, BigDecimal.class)) {
77+
return Optional.of(createMapping("asBigDecimal", match));
4278
}
4379
return Optional.empty();
4480
}
4581

46-
private static AutoMapping create(
47-
Class<?> autoType,
48-
String methodName) {
49-
String canonicalName = autoType.getCanonicalName();
82+
private static <M extends Item> Mapping<M> createMapping(
83+
String methodName,
84+
Match<M> match) {
5085
CodeBlock createConverterExpression = CodeBlock.of("$T.$L()", StandardConverters.class, methodName);
51-
return new AutoMapping(canonicalName, createConverterExpression);
52-
}
53-
54-
private static List<AutoMapping> autoMappings() {
55-
return List.of(
56-
create(String.class, "asString"),
57-
create(Integer.class, "asInteger"),
58-
create(Path.class, "asPath"),
59-
create(File.class, "asExistingFile"),
60-
create(URI.class, "asURI"),
61-
create(Pattern.class, "asPattern"),
62-
create(LocalDate.class, "asLocalDate"),
63-
create(Long.class, "asLong"),
64-
create(Short.class, "asShort"),
65-
create(Byte.class, "asByte"),
66-
create(Float.class, "asFloat"),
67-
create(Double.class, "asDouble"),
68-
create(Character.class, "asCharacter"),
69-
create(BigInteger.class, "asBigInteger"),
70-
create(BigDecimal.class, "asBigDecimal"));
71-
}
72-
73-
private static final class AutoMapping {
74-
final String qualifiedName;
75-
final CodeBlock createConverterExpression;
76-
77-
AutoMapping(String qualifiedName, CodeBlock createConverterExpression) {
78-
this.qualifiedName = qualifiedName;
79-
this.createConverterExpression = createConverterExpression;
80-
}
86+
return Mapping.create(createConverterExpression, match);
8187
}
8288
}

0 commit comments

Comments
 (0)