2222import java .util .stream .Collectors ;
2323
2424import static io .javaoperatorsdk .operator .ControllerUtils .CONTROLLERS_RESOURCE_PATH ;
25+ import static io .javaoperatorsdk .operator .ControllerUtils .DONEABLES_RESOURCE_PATH ;
2526
2627@ SupportedAnnotationTypes (
2728 "io.javaoperatorsdk.operator.api.Controller" )
2829@ SupportedSourceVersion (SourceVersion .RELEASE_8 )
2930@ AutoService (Processor .class )
3031public class ControllerAnnotationProcessor extends AbstractProcessor {
31- private ControllersResourceWriter controllersResourceWriter ;
32+ private AccumulativeMappingWriter controllersResourceWriter ;
33+ private AccumulativeMappingWriter doneablesResourceWriter ;
3234 private Set <String > generatedDoneableClassFiles = new HashSet <>();
3335
3436 @ Override
3537 public synchronized void init (ProcessingEnvironment processingEnv ) {
3638 super .init (processingEnv );
37- controllersResourceWriter = new ControllersResourceWriter (processingEnv );
38- controllersResourceWriter .loadExistingMappings ();
39+ controllersResourceWriter = new AccumulativeMappingWriter (CONTROLLERS_RESOURCE_PATH , processingEnv )
40+ .loadExistingMappings ();
41+ doneablesResourceWriter = new AccumulativeMappingWriter (DONEABLES_RESOURCE_PATH , processingEnv )
42+ .loadExistingMappings ();
3943 }
4044
4145 @ Override
@@ -51,6 +55,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
5155 } finally {
5256 if (roundEnv .processingOver ()) {
5357 controllersResourceWriter .flush ();
58+ doneablesResourceWriter .flush ();
5459 }
5560 }
5661 return true ;
@@ -71,7 +76,7 @@ private void generateDoneableClass(TypeElement controllerClassSymbol) {
7176 if (!generatedDoneableClassFiles .add (destinationClassFileName )) {
7277 processingEnv .getMessager ().printMessage (Diagnostic .Kind .NOTE ,
7378 String .format (
74- "%s already exist ! adding the mapping to the %s" ,
79+ "%s already exists ! adding the mapping to the %s" ,
7580 destinationClassFileName ,
7681 CONTROLLERS_RESOURCE_PATH )
7782 );
@@ -98,9 +103,11 @@ private void generateDoneableClass(TypeElement controllerClassSymbol) {
98103 .build ();
99104
100105 final PackageElement packageElement = processingEnv .getElementUtils ().getPackageOf (customerResourceTypeElement );
101- JavaFile file = JavaFile .builder (packageElement .getQualifiedName ().toString (), typeSpec )
106+ final var packageQualifiedName = packageElement .getQualifiedName ().toString ();
107+ JavaFile file = JavaFile .builder (packageQualifiedName , typeSpec )
102108 .build ();
103109 file .writeTo (out );
110+ doneablesResourceWriter .add (customResourceType .toString (), makeQualifiedClassName (packageQualifiedName , doneableClassName ));
104111 }
105112 } catch (Exception ioException ) {
106113 ioException .printStackTrace ();
@@ -137,4 +144,11 @@ private List<DeclaredType> collectAllInterfaces(TypeElement element) {
137144 return null ;
138145 }
139146 }
147+
148+ private String makeQualifiedClassName (String packageName , String className ) {
149+ if (packageName .equals ("" )) {
150+ return className ;
151+ }
152+ return packageName + "." + className ;
153+ }
140154}
0 commit comments