@@ -26,32 +26,36 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
26
26
= roundEnv .getElementsAnnotatedWith (annotation );
27
27
annotatedElements .stream ().filter (element -> element instanceof Symbol .ClassSymbol )
28
28
.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 );
53
31
});
54
32
}
55
33
return false ;
56
34
}
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
+ }
57
61
}
0 commit comments