8000 extract generateDoneableClass · jeesmon/java-operator-sdk@41a10a2 · GitHub
[go: up one dir, main page]

Skip to content

Commit 41a10a2

Browse files
author
Soroosh Sarabadani
committed
extract generateDoneableClass
1 parent 62fba5c commit 41a10a2

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

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

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,36 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
2626
= roundEnv.getElementsAnnotatedWith(annotation);
2727
annotatedElements.stream().filter(element -> element instanceof Symbol.ClassSymbol)
2828
.map(e -> (Symbol.ClassSymbol) e)
29-
.forEach(e -> {
30-
JavaFileObject builderFile = null;
31-
try {
32-
final TypeMirror resourceType = ((DeclaredType) e.getInterfaces().head).getTypeArguments().get(0);
33-
Symbol.ClassSymbol ee = (Symbol.ClassSymbol) processingEnv.getElementUtils().getTypeElement(resourceType.toString());
34-
builderFile = processingEnv.getFiler()
35-
.createSourceFile(ee.className() + "Doneable");
36-
try (PrintWriter out = new PrintWriter(builderFile.openWriter())) {
37-
out.println("package " + ee.packge().fullname + ";");
38-
out.println("import io.quarkus.runtime.annotations.RegisterForReflection;");
39-
out.println("import io.fabric8.kubernetes.api.builder.Function;");
40-
out.println("import io.fabric8.kubernetes.client.CustomResourceDoneable;");
41-
out.println();
42-
out.println("@RegisterForReflection");
43-
out.println("public class " + ee.name + "Doneable " + " extends CustomResourceDoneable<" + ee.name + "> {");
44-
out.println("public " + ee.name + "Doneable(" + ee.name + " resource, Function function){ super(resource,function);}");
45-
out.println("}");
46-
}
47-
} catch (IOException ioException) {
48-
ioException.printStackTrace();
49-
} catch (Exception ex) {
50-
ex.printStackTrace();
51-
}
52-
29+
.forEach(controllerClassSymbol -> {
30+
generateDoneableClass(controllerClassSymbol);
5331
});
5432
}
5533
return false;
5634
}
35+
36+
private void generateDoneableClass(Symbol.ClassSymbol controllerClassSymbol) {
37+
JavaFileObject builderFile = null;
38+
try {
39+
// TODO: the resourceType retrieval logic is currently very fragile, done for testing purposes and need to be improved to cover all possible conditions
40+
final TypeMirror resourceType = ((DeclaredType) controllerClassSymbol.getInterfaces().head).getTypeArguments().get(0);
41+
Symbol.ClassSymbol customerResourceSymbol = (Symbol.ClassSymbol) processingEnv.getElementUtils().getTypeElement(resourceType.toString());
42+
builderFile = processingEnv.getFiler()
43+
.createSourceFile(customerResourceSymbol.className() + "Doneable");
44+
try (PrintWriter out = new PrintWriter(builderFile.openWriter())) {
45+
out.println("package " + customerResourceSymbol.packge().fullname + ";");
46+
out.println("import io.quarkus.runtime.annotations.RegisterForReflection;");
47+
out.println("import io.fabric8.kubernetes.api.builder.Function;");
48+
out.println("import io.fabric8.kubernetes.client.CustomResourceDoneable;");
49+
out.println();
50+
out.println("@RegisterForReflection");
51+
out.println("public class " + customerResourceSymbol.name + "Doneable " + " extends CustomResourceDoneable<" + customerResourceSymbol.name + "> {");
52+
out.println("public " + customerResourceSymbol.name + "Doneable(" + customerResourceSymbol.name + " resource, Function function){ super(resource,function);}");
53+
out.println("}");
54+
}
55+
} catch (IOException ioException) {
56+
ioException.printStackTrace();
57+
} catch (Exception ex) {
58+
ex.printStackTrace();
59+
}
60+
}
5761
}

0 commit comments

Comments
 (0)
0