Skip to content

Commit e7e9d8e

Browse files
committed
[KOGITO-9861] Fixing compilation issues with nested and arrays
1 parent 821650e commit e7e9d8e

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/quarkus/serverless/workflow/ClassAnnotatedWorkflowHandlerGenerator.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
3131

3232
import com.github.javaparser.ast.NodeList;
33+
import com.github.javaparser.ast.type.ClassOrInterfaceType;
3334

3435
import static com.github.javaparser.StaticJavaParser.parseClassOrInterfaceType;
3536
import static com.github.javaparser.StaticJavaParser.parseType;
@@ -45,17 +46,28 @@ public Collection<WorkflowHandlerGeneratedFile> generateHandlerClasses(KogitoBui
4546

4647
protected abstract Stream<WorkflowHandlerGeneratedFile> generateHandler(KogitoBuildContext context, AnnotationInstance a);
4748

48-
protected final com.github.javaparser.ast.type.Type fromClass(Type param) {
49+
protected final com.github.javaparser.ast.type.Type fromClass(Type param, boolean includeGeneric) {
4950
switch (param.kind()) {
5051
case CLASS:
51-
return parseClassOrInterfaceType(param.asClassType().name().toString());
52+
return parseClassOrInterfaceType(fromDotName(param.asClassType().name()));
5253
case PRIMITIVE:
53-
return parseType(param.asPrimitiveType().name().toString());
54+
return parseType(fromDotName(param.asPrimitiveType().name()));
5455
case PARAMETERIZED_TYPE:
55-
return parseClassOrInterfaceType(param.asParameterizedType().name().toString())
56-
.setTypeArguments(NodeList.nodeList(param.asParameterizedType().arguments().stream().map(this::fromClass).collect(Collectors.toList())));
56+
ClassOrInterfaceType result = parseClassOrInterfaceType(fromDotName(param.asParameterizedType().name()));
57+
if (includeGeneric) {
58+
result.setTypeArguments(NodeList.nodeList(param.asParameterizedType().arguments().stream().map(x -> fromClass(x, includeGeneric)).collect(Collectors.toList())));
59+
}
60+
return result;
5761
default:
5862
throw new UnsupportedOperationException("Kind " + param.kind() + " is not supported");
5963
}
6064
}
65+
66+
private final String fromDotName(DotName dotName) {
67+
String result = dotName.toString();
68+
if (dotName.isInner()) {
69+
result = result.replace('$', '.');
70+
}
71+
return result;
72+
}
6173
}

quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-deployment/src/main/java/org/kie/kogito/quarkus/serverless/workflow/openapi/WorkflowOpenApiHandlerGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ private WorkflowHandlerGeneratedFile generateHandler(KogitoBuildContext context,
107107
// Using deprecated args method because it is the only way to make it work across Quarkus main and 2.7
108108
Type param = m.args()[i];
109109
if (annotation != null) {
110-
methodCallExpr.addArgument(new CastExpr(fromClass(param), new MethodCallExpr(parameters, "remove").addArgument(new StringLiteralExpr(annotation.value().asString()))));
110+
methodCallExpr.addArgument(new CastExpr(fromClass(param, true), new MethodCallExpr(parameters, "remove").addArgument(new StringLiteralExpr(annotation.value().asString()))));
111111
} else {
112-
methodCallExpr.addArgument(new MethodCallExpr("buildBody").addArgument(parameters).addArgument(new ClassExpr(fromClass(param))));
112+
methodCallExpr.addArgument(new MethodCallExpr("buildBody").addArgument(parameters).addArgument(new ClassExpr(fromClass(param, false))));
113113
}
114114
}
115115
clazz.addMethod("getRestClass", Keyword.PROTECTED).setType(parseClassOrInterfaceType(Class.class.getCanonicalName()).setTypeArguments(classNameType))

0 commit comments

Comments
 (0)