Skip to content

Commit c2a5fc6

Browse files
committed
Improve generix parameter handling on routes
1 parent bea3aad commit c2a5fc6

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

restx-core-annotation-processor/src/main/java/restx/annotations/processor/TypeHelper.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@ static String getTypeExpressionFor(String type) {
1919
Matcher matcher = PARAMETERIZED_TYPE_PATTERN.matcher(type);
2020
if (matcher.matches()) {
2121
String rawType = matcher.group(1);
22-
List<String> pTypes = new ArrayList<>();
23-
for (String pType : Splitter.on(",").trimResults().split(matcher.group(2))) {
24-
pTypes.add(getTypeExpressionFor(pType));
25-
}
2622

27-
return "Types.newParameterizedType(" + rawType + ".class, " + Joiner.on(", ").join(pTypes) + ")";
23+
return "Types.newParameterizedType(" + rawType + ".class, " + getTypeExpressionFor(matcher.group(2)) + ")";
2824
} else {
29-
return type + ".class";
25+
if (type.contains(",")) {
26+
List<String> pTypes = new ArrayList<>();
27+
for (String pType : Splitter.on(",").trimResults().split(type)) {
28+
pTypes.add(getTypeExpressionFor(pType));
29+
}
30+
return Joiner.on(", ").join(pTypes);
31+
} else {
32+
return type + ".class";
33+
}
34+
3035
}
3136
}
3237
}

restx-core-annotation-processor/src/test/java/restx/annotations/processor/TypeHelperTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package restx.annotations.processor;
22

3-
import org.assertj.core.api.Assertions;
43
import org.junit.Test;
54

65
import static org.assertj.core.api.Assertions.assertThat;
@@ -20,5 +19,9 @@ public void should_produce_type_expression() throws Exception {
2019
.isEqualTo("Types.newParameterizedType(java.util.Map.class, java.lang.String.class, java.lang.Integer.class)");
2120
assertThat(TypeHelper.getTypeExpressionFor("java.util.List<java.util.List<java.lang.String>>"))
2221
.isEqualTo("Types.newParameterizedType(java.util.List.class, Types.newParameterizedType(java.util.List.class, java.lang.String.class))");
22+
assertThat(TypeHelper.getTypeExpressionFor("java.util.List<java.util.Map<java.lang.String, java.lang.Integer>>"))
23+
.isEqualTo("Types.newParameterizedType(java.util.List.class, Types.newParameterizedType(java.util.Map.class, java.lang.String.class, java.lang.Integer.class))");
24+
assertThat(TypeHelper.getTypeExpressionFor("java.util.List<java.util.Map<java.util.Set<java.lang.String>, java.lang.Integer>>"))
25+
.isEqualTo("Types.newParameterizedType(java.util.List.class, Types.newParameterizedType(java.util.Map.class, Types.newParameterizedType(java.util.Set.class, java.lang.String.class), java.lang.Integer.class))");
2326
}
2427
}

0 commit comments

Comments
 (0)