8000 Added generator for CustomResource list to simplify api usage for kub… · FroMage/java-operator-sdk@8179b16 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8179b16

Browse files
committed
Added generator for CustomResource list to simplify api usage for kubernetes-client 4.x
1 parent 795c656 commit 8179b16

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/ControllerAnnotationProcessor.java

Lines changed: 25 additions & 0 deletions
8000
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,36 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
2828
.map(e -> (Symbol.ClassSymbol) e)
2929
.forEach(controllerClassSymbol -> {
3030
generateDoneableClass(controllerClassSymbol);
31+
generateListClass(controllerClassSymbol);
3132
});
3233
}
3334
return false;
3435
}
3536

37+
private void generateListClass(Symbol.ClassSymbol controllerClassSymbol) {
38+
JavaFileObject builderFile = null;
39+
try {
40+
// TODO: the resourceType retrieval logic is currently very fragile, done for testing purposes and need to be improved to cover all possible conditions
41+
final TypeMirror resourceType = ((DeclaredType) controllerClassSymbol.getInterfaces().head).getTypeArguments().get(0);
42+
Symbol.ClassSymbol customerResourceSymbol = (Symbol.ClassSymbol) processingEnv.getElementUtils().getTypeElement(resourceType.toString());
43+
builderFile = processingEnv.getFiler()
44+
.createSourceFile(customerResourceSymbol.className() + "List");
45+
try (PrintWriter out = new PrintWriter(builderFile.openWriter())) {
46+
out.println("package " + customerResourceSymbol.packge().fullname + ";");
47+
out.println("import io.quarkus.runtime.annotations.RegisterForReflection;");
48+
out.println("import io.fabric8.kubernetes.client.CustomResourceList;");
49+
out.println();
50+
out.println("@RegisterForReflection");
51+
out.println("public class " + customerResourceSymbol.name + "List " + " extends CustomResourceList<" + customerResourceSymbol.name + "> {");
52+
out.println("}");
53+
}
54+
} catch (IOException ioException) {
55+
ioException.printStackTrace();
56+
} catch (Exception ex) {
57+
ex.printStackTrace();
58+
}
59+
}
60+
3661
private void generateDoneableClass(Symbol.ClassSymbol controllerClassSymbol) {
3762
JavaFileObject builderFile = null;
3863
try {

0 commit comments

Comments
 (0)
0